@ -29,7 +29,7 @@ The preset dropdown allows you to choose from a hardcoded list of preloaded STV
Exceptions:
* [E1] When generating random numbers, OpenTally uses a [deterministic random number generator based on SHA-256](https://yingtongli.me/git/OpenTally/about/docs/rng.md), rather than the Wichmann–Hill(-based) algorithm.
* [E2] When breaking ties backwards, OpenTally selects the candidate who had more/fewer votes at the last stage when *any* tied candidate had more/fewer votes, rather than the method described in the legislation (when each all had unequal votes). The OpenTally developers regard the method described in the legislation as a defect. For an independent discussion, see <ahref="https://dl.acm.org/doi/10.1145/3014812.3014837">Conway et al.</a>
* [E2] When breaking ties backwards, OpenTally applies a recursive method rather than the method described in the legislation. The OpenTally developers regard the method described in the legislation as a defect. For an independent discussion, see <ahref="https://dl.acm.org/doi/10.1145/3014812.3014837">Conway et al.</a>
* [E3] A tie between 2 candidates for the final vacancy will be broken backwards then at random, rather than the method described in the legislation.
* [E4] Bulk exclusion is not performed, as the prescribed rules are more conservative than OpenTally's. See also the section on *Bulk exclusion* for further discussion.
* [E5] The legislation is drafted such that a consistent interpretation is impossible – see <ahref="https://github.com/AndrewConway/ConcreteSTV/blob/main/nsw/NSWLocalCouncilLegislation2021Commentary.md">Conway</a> for a discussion. In practice, the New South Wales Electoral Commission has applied the ‘by parcel’ method of rounding subtransfers, which OpenTally follows.
@ -174,7 +174,7 @@ This dropdown allows you to select how constraints are applied. The options are:
*Guard/doom* (default):
When this option is selected, OpenTally applies constraints using the Grey–Fitzgerald method. Whenever a candidate is declared elected or excluded, any candidate who must be elected to secure a conformant result is deemed *guarded*, and any candidate who must not be elected to secure a conformant result is deemed *doomed*. Any candidate who is doomed is excluded at the next opportunity. Any candidate who is guarded is prevented from being excluded.
When this option is selected, OpenTally applies constraints using the Gray–Fitzgerald method. Whenever a candidate is declared elected or excluded, any candidate who must be elected to secure a conformant result is deemed *guarded*, and any candidate who must not be elected to secure a conformant result is deemed *doomed*. Any candidate who is doomed is excluded at the next opportunity. Any candidate who is guarded is prevented from being excluded.
Multiple constraints are supported using the method described by Hill ([*Voting Matters* 1998;(9):2–4](http://www.votingmatters.org.uk/ISSUE9/P1.HTM)) and Otten ([*Voting Matters* 2001;(13):4–7](http://www.votingmatters.org.uk/ISSUE13/P3.HTM)).
<aclass="text-decoration-none link-dark stretched-link"href="{{ site.url }}/blog/2021/08/21/stv-parcels.html"><h5class="card-title mb-3">Parcels? Subparcels? Not just for STV hand counts!</h5></a>
<pclass="card-text mb-0">Single transferable vote rules designed for hand-counting often contain references to ‘parcels’ (or ‘bundles’ or ‘batches’), ‘further parcels’ and sometimes even ‘subparcels’.</p>
<p>For example, consider the <ahref="#">4th stage of the ERS97 model election</a>. 107 of Glazier's and Wright's ballot papers are aggregated according to…</p>
<aclass="text-decoration-none link-dark stretched-link"href="{{ site.url }}/blog/2021/07/30/blt-parser.html"><h5class="card-title mb-3">Implementing a BLT parser by hand in Rust (vs pest and combine)</h5></a>
<pclass="card-text"><ahref="#">OpenTally</a> is open-source software which can count single transferable vote elections specified using the <ahref="#">BLT file format</a>.</p>
<pclass="card-text mb-0">Earlier this month, I <ahref="#">replaced</a> OpenTally's previous naive <ahref="#">string-manipulation-based BLT parser</a> with one using <ahref="#">pest</a>. A new parser was necessary to support <ahref="#">extensions to the BLT</a>…</p>
<pclass="card-text">WebAssembly is a technology for executing compiled programs in the web browser at near-native speeds. However, it has a number of current limitations, including that it does not support coroutines/<wbr>asynchronicity.</p>
<pclass="card-text mb-0">In <ahref="#">OpenTally</a>, WebAssembly is used to run code for counting an election. This…</p>