# A closed ballot, read as a closed ballot

A tally says how much weight landed on each side. It does not say how many addresses carried that
weight. On a vote that decides something, "334,165 against" and "334,165 against, 334,164 of it from
three addresses" are different facts, and only one of them tells a reader whether the losing side was
a bloc or a crowd.

This note describes the read that publishes both, with a worked example and the limits.

## What a closed-ballot record contains

Five things beside each other:

1. **The ballot.** Venue, space, proposal id, type, open and close timestamps, and whether the venue
   executes anything. A signal vote recorded by a hub and an on-chain proposal that moves funds are
   not the same object, and the record says which one it is.
2. **The outcome.** What the rule produced, and — separately — whether anything executed.
3. **The tally.** Weight per choice, recomputed from the per-voter records and checked against the
   proposal's own total.
4. **The composition.** Addresses per choice, the largest address's share of its own side, and the
   top three's share of the whole cast.
5. **The threshold arithmetic**, where the proposal supplies a threshold — with a caution stating
   whether that threshold actually applied to this vote or is only the nearest published scale.

## Worked example — ENS, `[7.3] [Social] Governor Nexus Update`

Snapshot space `ens.eth`, closed **2026-11-03 18:15:08Z**, read at source 2026-11-04T02:00:40Z.

- **49 ballots, 516,477.6443088204 ENS cast.** For 115,918.50 (42 addresses), Against 334,165.60
  (4 addresses), Abstain 66,393.54 (3 addresses).
- **Against carried 64.70% of the cast.** For carried 22.44%.
- **Three addresses carried 334,164.60 of the 334,165.60 cast against** — 100.00% of that side,
  64.70% of the whole cast. The fourth against ballot was 1.0000 ENS.
- The largest single voter held **26.76%** of the cast. The top three held **64.70%**.
- Two days before the close the ballot was one-sided: 39 ballots, 16,828.02 ENS for, **nothing
  against**. The weight arrived on the last full day.

The proposal would have introduced three proposal types, including an Optimistic type that "passes
unless 500k ENS oppose". **That 500,000 bar did not apply to this vote** — it is the opposition bar the
same proposal proposed for a different, future type. Against here is 66.83% of that bar, For is 23.18%,
and the cast is 103.30% of it. Published because it is the only scale the proposal itself supplies; not
a test this ballot failed.

Nothing executed. The vote authorised a later executable migration proposal; the incumbent governor
and its timelock were untouched by the result.

## Limits, stated

- No address is attributed to a delegate, entity or person. Concentration is a fact about the records;
  coordination is not, and this record does not infer it.
- The record says nothing about how any holder should have voted, and nothing about the vote that
  follows.
- A closed ballot moves no GSA cell. It authorises; it does not execute.
- A per-voter list is only as complete as the venue's pagination. The sum is checked against the
  proposal's own total to the wei precisely so a partial page-through cannot pass as composition.

## Reproducing it

`hub.snapshot.org/graphql`, with a browser User-Agent (a python or curl default UA is refused):

```graphql
query ($id: String!) {
  proposal(id: $id) { id title state type start end choices scores scores_total votes quorum }
}
query ($id: String!, $first: Int!, $skip: Int!) {
  votes(first: $first, skip: $skip, where: {proposal: $id}, orderBy: "vp", orderDirection: desc) {
    voter vp choice created
  }
}
```

Sum `vp` per choice, compare to `scores`. If they disagree, the page-through is incomplete and no
record should be published.

---

<!-- seo:begin -->
<link rel="canonical" href="https://probity-institute.pages.dev/docs/closed-ballots.md">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Probity Institute">
<meta property="og:title" content="A closed ballot, read as a closed ballot — Probity Institute">
<meta property="og:description" content="A tally says how much weight landed on each side. It does not say how many addresses carried that weight.">
<meta property="og:url" content="https://probity-institute.pages.dev/docs/closed-ballots.md">
<meta property="og:locale" content="en_GB">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="A closed ballot, read as a closed ballot — Probity Institute">
<meta name="twitter:description" content="A tally says how much weight landed on each side. It does not say how many addresses carried that weight.">
<!-- seo:end -->
