Skip to content

How to Read a STAR Result Report (201)

One line: the engine prints a full audit report — matrix, divergence check, plain-English summary, both rounds, winner. A 101 voter only needs the last three lines; this page walks through the whole thing, section by section, so you can read (and trust) any STAR result.

→ The phenomenon this example shows: Runoff Reversal. Curriculum: 201.1 — Reading the results. This text report is the engine's half of a pair — the other is BetterVoting's visual display of the same race: BetterVoting and the LH engine. The engine upstream: larryhastings/starvote on GitHub · starvote on PyPI.


Start with the ballots (the input)

Always read the input first. This is 05_c3_b5_low-scores-bv1265.yaml — a real BetterVoting election, 5 voters, 3 candidates (A, B, C), scored 0–5:

A, B, C
0, 0, 4
2, 0, 0
0, 2, 3
2, 0, 0
2, 2, 0

Everything below is computed from these five rows — nothing else goes in.

The full report

[Divergence from STAR]
  STAR     = A
  Approval = C   (differs from STAR)

[Runoff Reversal]
 - Score Round Winner(s) = (C)
 - Runoff Round Winner   = (A)
  Candidate C earned the highest total score, but
  Candidate A won the automatic runoff — not a malfunction,
  STAR working as designed: the runoff elects the finalist preferred
  by the majority (of voters with a preference).

--- STAR Voting Method (single winner) ---

[STAR Voting]
 Tabulating 5 ballots.
Count × A,B,C
    2 × 2,0,0
    1 × 0,0,4
    1 × 0,2,3
    1 × 2,2,0

[STAR Voting: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   C             -- 7 -- First place
   A             -- 6 -- Second place
   B             -- 4
 C and A advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   A             -- 3 -- First place
   C             -- 2
   Equal Support -- 0
 A wins.
   Runoff math:
     5  ballots cast
   − 0  Equal Support (no preference between the two finalists)
     ─
     5  voters with a preference  (majority = 3)
           A 3 (60%)  ·  C 2 (40%)

[STAR Voting: Winner — STAR Voting Method (single winner)]
 A

Reading it, section by section

1. Runoff (Preference) Matrix. The head-to-head table — the summable, auditable heart of the count (see STAR is summable). Each cell reads For – Equal Support – Against for the row candidate vs the column candidate. So A > … | 3 - 0 - 2 means: in A-vs-C, 3 ballots scored A over C, 0 scored them equal, 2 scored C over A. The * marks the two Finalists (A and C). Read the winner's row: A beats C 3–2, so A wins their head-to-head.

2. [Divergence from STAR]. A quick cross-check: does another method — Choose-One (Plurality), RCV-IRV, Approval, Ranked Robin, or Condorcet — elect someone other than the STAR winner? The block hides the methods that agree and shows only those that diverge. Here only Approval diverges: STAR = A but Approval = C — counting each ballot's ≥3 scores as approvals (C is approved twice; A and B never clear the bar) picks C. That's a hint the score leader and the runoff winner may part ways — but the actual reversal test is the next block. (Note: the Approval count is a threshold count, not the same as "most total stars" — the score sum shown in the Scoring Round. They point the same way here, but they're different tallies.)

3. [Runoff Reversal]. The plain-English summary, and the one sentence to quote: "C earned the highest total score, but A won the automatic runoff — not a malfunction, STAR working as designed: the runoff elects the finalist preferred by the majority (of voters with a preference)." This is the whole lesson in two lines — score leader ≠ winner, because the runoff applies a majority check between the two finalists. (This block was formerly headed "Majority Preference Enforcement Principle"; renamed to match the glossary term — and because the old name overclaimed: STAR does not satisfy the formal majority criterion, the guarantee is majority preference between the finalists.)

4. Scoring Round. Add every candidate's stars: C 7, A 6, B 4. The two highest — C and A — become the Finalists; B is out. (This is one of the only three lines a first-time voter needs.)

5. Automatic Runoff Round. Now compare only the two finalists. Each ballot is one full vote for whichever of C/A it scored higher: A 3, C 2, and Equal Support 0 (no ballot scored A and C the same). A wins. Note the engine uses Equal Support — the house term for a genuine no-preference ballot, not "equal" in the loose sense. The engine also prints (show_runoff_percent, on by default — and the _tabulated copy expands it into the "Runoff math" funnel) the winner's share of the decided voters — the percentage that actually settles the runoff. What that number means, and why its denominator excludes Equal Support, is the runoff percentages page.

6. Winner. A — the finalist more voters preferred, even though C led on score.

When to show which part

Audience Show
101 — first-time voter Scoring Round + Automatic Runoff Round + Winner (3 blocks)
201 — official / auditor + the Preference Matrix and the Majority Preference summary
301 — debater / theorist + [Divergence from STAR], Condorcet checks, score distribution, tiebreakers

That's the point of the minimal on-screen report plus the always-full _tabulated.txt: the report scales to the reader. The full report for any example lives in its _tabulated.txt sibling; step-by-step method comparison is in STAR vs RCV-IRV, step by step.