φₖ = θₖ − aₖ·π/2 requires aₖ ∈ [0, 1]. The table below shows
how each (vote_method, no_enabled) combination produces aₖ.
Valid combinations
yes_no + no_enabled = true ✓ (canonical case)
The standard binary ballot. The canonical case from .θₖ, disagreements displace π/2 outward.
Domains: legislation, referendum, advisory, ballot_measure.
approval + no_enabled = false ✓
Approval voting: voter marks any subset as approved; no explicit rejection.θₖ. Angular spread reflects
topic coverage, not agreement direction.
Domains: election, ballot_measure.
approval + no_enabled = true ✓
Approval-with-rejection: voter can explicitly approve, reject, or abstain.rcv + no_enabled = false ✓
Ranked-choice voting: voter ranks options 1..R. No explicit rejection.θₖ
(full agreement) and θₖ − π/2 (full displacement). Higher-ranked entities cluster
closer to θₖ.
Normalize
max_rank per voter’s actual number of rankings, not the global maximum,
to preserve comparability across voters.rcv + no_enabled = true ✓
RCV with explicit ‘No’ floor: voter can rank candidates AND cast an explicit rejection below the last rank.θₖ − π/2.
condorcet + no_enabled = true ✓
Condorcet method: pairwise binary comparisons. Each pairwise comparison is a yes_no dimension.Inapplicable combinations
| Combination | Reason |
|---|---|
yes_no + no_enabled = false | Structurally impossible: yes_no implies both outcomes exist by definition |
condorcet + no_enabled = false | Structurally impossible: each Condorcet pairwise comparison is inherently yes/no |
Notes
- The encoding is entity-agnostic: identical for legislators, candidates, referenda,
ballot measures, or custom dimensions. Only labels and
context.domainchange. - A full RCV ranking implicitly encodes all Condorcet pairwise preferences. The TAP can render either the ordinal (rcv) or pairwise (condorcet) projection of the same ballot.