Skip to main content
The TAP encoding φₖ = θₖ − 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 .
aₖ = 1  if voter agrees with entity on dimension k
aₖ = 0  if voter disagrees
Geometry: scallop-shell — agreements cluster at θₖ, 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.
aₖ = 1  if voter approved option k
     (dimension excluded if voter did not vote on k)
Geometry: positive-only TAP — all plotted points sit at θₖ. 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.
aₖ = 1  if approved
aₖ = 0  if explicitly rejected
     (dimension excluded if abstained)
Geometry: identical to yes_no TAP encoding. Distinction is in the ballot UX, not the diagram.

rcv + no_enabled = false ✓

Ranked-choice voting: voter ranks options 1..R. No explicit rejection.
aₖ = 1 − (rank_k − 1) / (max_rank − 1)
     Rank 1 → aₖ = 1 (full agreement)
     Rank max → aₖ = 0 (lowest preference)
Geometry: weighted scallop — data points lie at fractional positions between θₖ (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.
aₖ  (same as rcv/false for ranked options)
aₖ = 0  for explicit 'No' (clamps to bottom regardless of rank count)
Geometry: same weighted scallop as rcv/false, but explicit rejections always plot at θₖ − π/2.

condorcet + no_enabled = true ✓

Condorcet method: pairwise binary comparisons. Each pairwise comparison is a yes_no dimension.
aₖ = 1  if voter preferred entity A over entity B on this pairwise comparison
aₖ = 0  otherwise
Geometry: identical to yes_no TAP. Condorcet is a counting method, not a ballot method; the TAP encoding is the same binary angular displacement.

Inapplicable combinations

CombinationReason
yes_no + no_enabled = falseStructurally impossible: yes_no implies both outcomes exist by definition
condorcet + no_enabled = falseStructurally 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.domain change.
  • 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.