# Simulated Design Council: 30k Protocol v0.1 > **What this is:** A design exercise in eleven sessions. Session 6 added interest groups, political parties, and an ombudsman. Session 7 added political scientists, judges, and practicing attorneys. Session 8 reviewed the first simulated legislative session (`SIMULATION_01_IRAN_WAR.md`). Session 9 added military, law enforcement, national security, education, and budget stakeholders. Session 10 assessed the rerun with the full cast (`SIMULATION_02_IRAN_WAR.md`). Session 11 assessed the appropriations route (`SIMULATION_03_IRAN_WAR_FUNDING.md`). Five fictional implementer personas were role-played by Claude on 2026-09-21, joined by three fictional opinion creators on 2026-10-05 (Session 2) and three fictional fact-checkers on 2026-10-27 (Session 3). Session 4, the same day, put one question to all of them: would a formal grammar or ontology make coded rules and laws more verifiable? Session 5 added three fictional market and ranking stakeholders. All of this was done to stress-test the common API before any real implementer exists. Positions are plausible, not quotes from real teams. **Every decision below is a hypothesis for real implementers to attack through the RFC process.** The result of this exercise is `AI_CODING_PROMPT.md`. ## The five implementers | Persona | Architecture | Optimizes for | Red line | |---|---|---|---| | **Ledger** | Permissioned BFT-replicated state machine | Total order, replay-verifiable state, no trusted operator | Every accepted state must be verifiable by re-execution | | **Forge** | Git-backed forge; MRs are pull requests | Reviewable with ordinary tools, signed history | Nothing that can't round-trip to git | | **Docket** | Event-sourced service with a Certificate-Transparency-style Merkle log | Simplicity, low cost, easy operations | No mandatory consensus protocol, no rule VM | | **Loom** | Local-first peer-to-peer CRDT replicas | Offline work, no central sequencer | No mandatory global ordering or wall-clock rules | | **Margin** | Analyzer/advisor agent (mostly read-only) | Machine-readable diffs, stable ids, first-class opinions | Opinions must be publishable without a roster seat, yet never confusable with votes | ## Round 1: What is the common denominator? - **Ledger** wanted the consensus protocol and state transitions standardized. **Loom** and **Docket** refused: consensus can't be universal without excluding them. - **Forge** wanted the model expressible as git objects. - **Outcome:** standardize **objects and transactions, not consensus or storage.** Every write is a signed envelope appended to a verifiable log. Each node declares a `consistency` profile (`strong` or `eventual`) and a `trust_model`. Verification uses signed Merkle checkpoints over the log, which BFT consensus, a single-writer transparency log, per-replica logs, and signed git history can all produce. (D1, D2) - **Dissent:** Ledger wants a consensus-parameter profile standardized later; parked for a future RFC. ## Round 2: How is law represented? - **Forge** proposed plain text files with line diffs. **Margin** objected: legal text needs stable structural addresses, and line diffs break under renumbering and re-flow. **Loom** wanted tree CRDT operations. - **Outcome:** a tree of nodes with stable `nid`s (USLM-style); a Change is a list of structural ops carrying `pre` hashes so conflicts are detectable; a unified-text diff is a *derived* view. Forge maps nodes to files (one per section) and may export a git bundle as an optional feature. (D3, D4) - **Rejected:** line diff as canonical (fragile for statutes); opaque CRDT ops as canonical (hard to audit). ## Round 3: Are rules code or data? - **Ledger** proposed rules as smart contracts. **Docket** objected: a VM adds attack surface and is unreadable to the people who would have to legislate the rules. **Margin** added that the paper says rules should be codified in statute, so each needs plain-language text with machine parameters that provably match. - **Outcome:** a **closed registry** of parameterized rule kinds (`always_allow`, `designated_approvers`, `threshold_vote`, `capital_vote`), each with statute-ready text, integer-only evaluation, and test vectors. New kinds by RFC. A determination is a **verifiable claim**: anyone can submit one, every node re-evaluates it. Rules themselves change through **governance MRs**, using the same machinery, so rule-making is also collaborative. (D5, D6) - **Dissent:** Ledger conceded but wants a sandboxed custom-rule path later. ## Round 4: Time and finality - **Loom** rejected any rule that needs a trusted clock. **Docket** noted real bodies need deadlines. **Ledger** noted that "as soon as the rule is satisfied" (the paper's automatic advancement) needs no clock if the threshold is monotone. - **Outcome:** `on_threshold` closing (only over the whole electorate, so it's monotone) needs no clock. `on_deadline` is enforced only by `strong` nodes; on `eventual` nodes it's advisory, and the determination records the exact ballot set so verifiers can re-evaluate. `capital_vote` requires `strong`, because capital accounting needs a deterministic order. (D7, D8) - **Dissent:** Loom dislikes excluding `capital_vote` from eventual nodes; revisit if a deterministic causal ordering is proposed. ## Round 5: Ballot integrity - **Margin** and **Ledger** listed attacks: changing an MR's content after votes are cast, stuffing a group after a vote opens, and double voting. - **Outcome:** ballots commit to `mr_id`, which pins the source head, the open-time target head, the conflict resolutions, and a frozen electorate snapshot. An MR whose patch no longer applies goes `stale` and must be re-opened (ballots don't carry). Two unlinked ballots by one member void all of that member's ballots (equivocation). (D9, D10) ## Round 6: Opinions and secrecy - **Margin** wanted opinions first-class and separate from votes, with AI disclosure. **Ledger** argued that everything should be public by design (the paper's "disclosure as a byproduct"). **Forge** pointed out the paper explicitly lets parties keep private draft branches. - **Outcome:** `Opinion` objects with `author_kind` and mandatory disclosure for non-members; never counted in binding evaluation. Restricted branches are allowed, but under **"no secret law"**: content must be revealed before an MR from it can open. Implementations publish opinions about the protocol itself (`subject.type: rfc|spec`), so the collaboration loop uses the same mechanism as the thing being built. (D11, D12) ## Round 7: API style and conformance - GraphQL, gRPC, and REST were all proposed. **Outcome:** REST + JSON (OpenAPI 3.1 and JSON Schema) is normative because it's the easiest for any AI coding agent to implement and debug with `curl`; SSE for live events; one write endpoint (`POST /transactions`) and many reads; problem+json errors. (D13) - **Conformance:** levels L0-L3, shared vectors, a black-box harness with seeded synthetic rosters and voting blocs, and scenarios S1-S11. Performance is reported as metrics, not pass/fail. Vectors are provisional until a second independent implementation reproduces them. (D14) ## Decision log | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D1 | Standardize objects and transactions, not consensus or storage | Mandatory BFT; mandatory git | Real implementers can't interoperate at the tx level | | D2 | Signed envelopes, content-addressed objects, Merkle checkpoints, `strong`/`eventual` profiles | Per-implementation formats | A trust model can't produce a checkpoint | | D3 | Node tree with stable `nid`s and hash-addressed nodes | Line-based files; opaque CRDT state | Structural ops prove too costly at scale | | D4 | Changes are structural ops with `pre` hashes; text diff is derived | Text patches | Conflict detection produces false positives | | D5 | Closed rule registry with statute text, integer math, vectors | Smart-contract VM | Demand for custom rules outweighs risk | | D6 | Determinations are re-evaluated claims; rule changes via governance MRs | Trusted sequencer decides | Re-evaluation cost is prohibitive | | D7 | `on_threshold` needs no clock; `on_deadline` enforced only on `strong` | Global clock | A safe eventual-mode deadline scheme appears | | D8 | `capital_vote` requires `strong` | Allow on eventual | Deterministic causal ordering is specified | | D9 | Ballots commit to `mr_id` (source, target-at-open, resolutions, electorate) | Ballots on branch names | -- | | D10 | Equivocation voids that member's ballots; group membership frozen at open | Last-write-wins | Voiding proves abusable | | D11 | Opinions are typed, disclosed, and never counted in binding evaluation | Opinions as weak votes | `delegated_survey` is specified | | D12 | Restricted branches allowed, but reveal before MR ("no secret law") | All-public; all-private | Legal/political review objects | | D13 | REST + JSON, OpenAPI 3.1, SSE, single write endpoint | GraphQL; gRPC | Streaming or batching needs outgrow REST | | D14 | Levels L0-L3; metrics not thresholds; provisional vectors | Pass/fail performance targets | Enough data to set defensible targets | ## Open questions - **OQ-1: Late ballots and time in `eventual` mode.** A deadline is advisory there, so two nodes may close over different ballot sets. - **OQ-2: Contests.** Ranked choice and "virtual capital bidding" need a first-class set of competing MRs targeting the same nid. - **OQ-3: Contradictory determinations across forks.** An equivocating member could help two nodes reach opposite outcomes on `eventual` profiles. `strong` profiles avoid this by total order. - **OQ-4: Secret ballots.** Anonymity conflicts with the verify-everything design. - **OQ-5: Issuing 11,000 keys.** Sybil resistance and identity are out of scope, but they are the real trust root for any deployment. - **OQ-6: Opinion spam.** With thousands of members plus advisors and AI agents, rate limits and reputation need design. - **OQ-7: Does the ledger layer earn its cost?** This is the paper's central bet. The council's answer is to make it testable: S10 (malicious operator) and S11 (scale) compare what a BFT-replicated implementation buys against single-writer-plus-witnesses and CRDT designs. ## What real implementers should attack first 1. The MR/ballot commitment model (D9): can it be gamed at the seams between resolutions and staleness? 2. `on_threshold` rejection math when equivocation removes members from the potential-approval pool. 3. Restricted branches and the reveal requirement: does it leak more than it protects? 4. Whether structural ops with `pre` hashes are practical for real USLM text at scale. 5. Whether the closed rule registry is too restrictive for what legislators would actually want. --- # Session 2 (2026-10-05): Opinion creators join the council > **What changed:** The five implementers return, joined by three fictional **opinion creators**, again role-played by Claude. Creators are not implementers and hold no roster seat. They speak for the people who will turn protocol output into public opinion. Decisions continue the numbering from Session 1 and are hypotheses for the RFC process like everything else. ## The three creators | Persona | Platform & format | Optimizes for | Red line | |---|---|---|---| | **Quick Take** | TikTok-style short video; huge, young, fast-scrolling audience | Speed, shareability, freedom to clip and remix public proceedings | Any pre-approval of commentary or limit on reusing public material | | **Deep Dive** | YouTube-style long-form explainer; ad- and sponsor-funded | Full source data, provenance, time to analyze | Disclosure rules that single out creators or threaten monetization | | **Independent** | Nebula-style creator-owned, subscription-funded | Durable, citable records; attribution; independence from algorithms | Platform lock-in or proprietary formats | **Dual role:** Creators negotiate their own interests, then each publishes an audience-facing take on the outcome as an `Opinion` (`subject.type: spec`). The council reacts to those takes at the end. ## Round 8: Who gets to speak, and what must they disclose? - **Quick Take** asked for a creator `author_kind` with a verified badge. **Margin** objected that badges drift toward status, then toward weight. **Ledger** noted D11 already lets anyone publish without a seat. - **Deep Dive** accepted sponsorship disclosure only if it bound *every* non-member opinion: advisors, AI agents and their operators, think tanks, and creators alike. **Independent** agreed and added that AI-assisted scripts should be flagged, not only autonomous agents. - **Outcome:** no creator-specific kind and no badges. All non-member opinions carry signed `funding[]`, `affiliations[]`, and an `ai_assistance` field (`none | assisted | generated`), applied equally. (D15) - **Dissent:** Deep Dive asks why members' own conflicts are exempt. Parked as OQ-9. ## Round 9: Citation, permalinks, and "the bill changed after I covered it" - **Independent** described the core creator problem: they cover a draft, it changes, and the audience accuses them of misreporting. **Forge** observed content addressing already solves this if citations point at hashes, not branch names. - **Quick Take** wanted an official plain-language summary on every MR to clip from. **Docket** refused: an "official" summary implies authority the protocol does not have. **Margin** added that summaries are opinions by nature. - **Outcome:** a stable citation form `GET /cite/{hash}` that always resolves to the content as it was at that hash, with a link to the latest version and a derived diff between them. An MR's `summary` field is labeled as the proposer's own words. Any other summary is an `Opinion`. The derived text diff (D4) remains the only neutral view. (D16) - **Rejected:** official neutral summaries; citations by branch name. ## Round 10: Reporting results live - **Quick Take** wanted to post the moment a vote crosses its threshold, from the SSE stream. **Loom** warned that on `eventual` nodes two replicas can briefly disagree (OQ-1, OQ-3), so a creator could announce a result that later flips. **Deep Dive** called that the worst-case scenario for public trust. - **Ledger** proposed that only checkpointed determinations count as results. - **Outcome:** every event and determination carries a `finality` field: `provisional`, `final` (included in a signed checkpoint on a `strong` node), or `final_advisory` (checkpointed on an `eventual` node). The protocol cannot bind how creators report, but the field makes the honest framing the easy one. (D17) - **Dissent:** Quick Take says audiences won't wait for checkpoints and creators will report provisional results anyway. Accepted as a real risk; see OQ-8. ## Round 11: Amplification and opinion spam - **Independent** raised a creator-side form of OQ-6: one call-to-action can send thousands of near-identical opinions into a node. **Docket** proposed per-key rate limits. **Quick Take** objected to any reputation score that decides whose opinions get shown, calling it algorithmic gatekeeping by another name. - **Quick Take** also asked for an "audience pulse" (endorsement counts on opinions). **Margin** and **Ledger** rejected it: counts on opinions become pseudo-votes, which D11 forbids. - **Outcome:** per-signing-key rate limits are implementation-defined and reported as a conformance metric. There is no protocol-level reputation score and no endorsement count. Nodes may cluster near-duplicate opinions in derived views but must keep each one retrievable. (D18) - **Rejected:** endorsement counts; protocol reputation scores. ## Round 12: Restricted branches, leaks, and "no secret law" - **Deep Dive** argued that the *existence* of restricted drafts is itself public-interest information. **Forge** pushed back: revealing that a party is drafting on a topic leaks strategy, and the paper permits private drafts. - **Independent** raised leaks. When a restricted draft leaks and a creator covers it, nobody can verify later whether the revealed version matches what leaked. - **Outcome:** commit-then-reveal. A restricted branch gets an opaque name, and each restricted change is logged only as a **salted** hash commitment with its owner and size, never its topic. **Ledger** insisted on the salt: statute edits are low-entropy, so a bare hash could be confirmed by guessing ("did they change 30 days to 35?"). At reveal (required before an MR opens, per D12), anyone can check the content against the commitment, and against a leaked copy. (D19) - **Dissent:** Forge holds that publishing the owner still leaks too much and wants owner-blind commitments studied. Parked under D19's revisit condition. ## Round 13: Public ballots meet large audiences (no decision) - **Deep Dive** wants every member's vote public and easy to show on screen, since accountability is the paper's point. **Independent** warned that a creator with millions of followers naming a member who voted "no" invites harassment, and that this pressure will shape votes before they're cast. - **Ledger** reminded the council that verify-everything and secret ballots conflict (OQ-4). **Loom** suggested delayed publication of individual ballots. **Docket** noted that delay doesn't help if the tally is live. - **Outcome:** no decision. OQ-4 is upgraded from a technical question to the council's highest-priority open question, now framed as a trade between accountability and coercion resistance. ## Creators' published takes (Opinions on `spec`, v0.2) - **Quick Take:** Good news for anyone who covers this: every version gets a permanent link, so you can prove what a bill said when you covered it. The catch is that you're supposed to wait for "final" before calling a vote. *(funding: brand partnerships; ai_assistance: assisted)* - **Deep Dive:** The disclosure rules apply to everyone, not just creators, which is the right call. The unresolved issue is public ballots. Until it's settled, nobody knows whether this system will produce accountability or pile-ons. *(funding: ads, two sponsors; ai_assistance: none)* - **Independent:** Commit-then-reveal is the sleeper decision. Leaks become verifiable instead of a fight about whose screenshot is real. *(funding: subscribers; ai_assistance: none)* **Council reactions.** Margin flagged that Quick Take's take compresses `final_advisory` into "final," which is exactly the error D17 exists to prevent, and proposed this as conformance scenario S12. Ledger and Docket endorsed Deep Dive's framing of Round 13. Forge noted Independent's take overstates D19 for leaks that happen before the commitment is published. ## Decision log (continued) | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D15 | Equal signed disclosure (`funding`, `affiliations`, `ai_assistance`) for all non-member opinions; no badges | Creator-specific kind; verified badges | Disclosure proves unenforceable or is gamed | | D16 | Hash-pinned citations via `/cite/{hash}`; proposer summaries labeled; other summaries are Opinions | Official summaries; branch-name links | Creators can't use hash citations in practice | | D17 | `finality` on every event: `provisional`, `final`, `final_advisory` | Unlabeled live tallies | Misreported results persist despite labels | | D18 | Per-key rate limits as a metric; no reputation scores or endorsement counts | Reputation gating; audience pulse | Spam overwhelms nodes without reputation | | D19 | Restricted branches use opaque names; each change is logged as a salted commitment with owner and size; reveal is verified against it | Fully hidden branches; public topics | Owner disclosure proves too revealing | ## New and updated open questions - **OQ-4 (upgraded, top priority): Secret ballots vs. accountability under mass audiences.** Options on the table: delayed individual ballots, aggregate-only with verifiable tallies, or public ballots with anti-harassment norms outside the protocol. - **OQ-8: Provisional reporting.** Labels make honest reporting easier, not mandatory. Proposed scenario S12 tests whether an implementation's event stream makes `final_advisory` easy to misread. - **OQ-9: Member conflicts.** Should members disclose funding and affiliations on their own MRs and opinions, as non-members now must? - **OQ-10: Clip context.** Can a citation carry enough context (surrounding nodes, MR state) that a 30-second clip can't misrepresent where a provision sits? --- # Session 3 (2026-10-27): Fact-checkers join the council > **What changed:** The five implementers return, joined by three fictional **fact-checkers**, again role-played by Claude. Their job is to review laws, proposals, and voting records for false statements, misleading claims, and logical inconsistency. Like creators, they hold no roster seat. The three Session 2 creators sit in as observers. Decisions continue the numbering and remain hypotheses for the RFC process. ## The three fact-checkers | Persona | Focus | Optimizes for | Red line | |---|---|---|---| | **Verdict** | Newsroom fact-check desk: rates specific public claims about bills and votes | Precise, sourced, per-claim verdicts that hold up to challenge | A protocol that declares truth itself, or lets the subject of a check suppress it | | **Lint** | Legal-consistency auditor, AI-assisted: contradictions, undefined terms, circular and broken references in statute text | Machine-readable structure and definitions | AI findings published without a reproducible basis | | **Record** | Voting-record watchdog: compares what members say with how they voted | A complete, public, attributable record of ballots and statements | Secret ballots that make claims about votes impossible to check | **Dual role:** Fact-checkers negotiate their own interests, then each publishes findings in the new format against real material: the creators' Session 2 takes and the v0.2 spec itself. The council reacts at the end. ## Round 14: Who decides what is false? - **Verdict** asked for a fact-check flag on merge requests, so that a proposal whose summary was rated false would carry a visible warning. **Docket** and **Margin** refused: a protocol-level truth label makes whoever controls the label an authority, which the whole design avoids (D6, D11). **Ledger** added that a flag would be a binding-looking signal set by non-members. - **Verdict** conceded the label but asked for structure: a fact-check is a set of claims, each with a verdict and sources, not an essay. Free-text opinions are unusable at 11,000 members. - **Outcome:** a fact-check is an `Opinion` carrying structured `findings[]`. Each finding names its target, quotes the claim, gives a verdict from a fixed scale (`accurate | misleading | false | unsupported | inconsistent | unverifiable`), a rationale, and evidence. The shape maps onto schema.org `ClaimReview` so findings can travel to search engines and newsrooms. No new `author_kind`, no protocol truth labels on MRs or members. (D20) - **Rejected:** fact-check flags on MRs; a fact-checker `author_kind` or accreditation. - **Dissent:** Verdict thinks a fixed verdict scale will be fought over politically. Parked as OQ-11. ## Round 15: Misquotes - **Lint** observed that most disputes it sees are not about what a provision means but about what it says. **Forge** pointed out that every node already holds the exact text at every hash (D16), so a quote is checkable by machine. - **Quick Take** (observer) asked whether this would apply to creators too. **Verdict** insisted it apply to everyone, fact-checkers included. - **Outcome:** any opinion that quotes protocol content declares each quote as `{as_of, nid, text}`. Nodes verify that `text` appears exactly in that node's text at that snapshot, and reject the opinion with `quote_mismatch` otherwise. This applies to every opinion, not only fact-checks. (D21) - **Note:** this partly answers OQ-10. A verified quote carries its `nid` and snapshot, so anyone can open the surrounding context. ## Round 16: Claims about the record - **Record** described its core case: a member says "I voted against the tax increase," and the ballot says `approve`. Today a watchdog would publish that as prose, and readers would have to trust it. - **Ledger** proposed letting nodes evaluate such claims directly, since the record is already verifiable. **Docket** worried about scope creep into a query language. **Loom** asked that results carry finality, since on `eventual` nodes the record can still move. - **Outcome:** a **closed registry of assertion kinds**, like the rule registry (D5): `ballot_choice`, `mr_outcome`, `tally`, `authored`, `text_contains`. A finding (or any opinion, including a member's own) may attach an `assertion`. Every node evaluates it deterministically and serves `holds | fails | undetermined` with `finality`. New kinds arrive by RFC. (D22) - **Rejected:** a general query language; trusting the fact-checker's own reading of the record. - **Note:** `ballot_choice` only works while ballots are public. See Round 20. ## Round 17: The fact sheet - **Verdict** said proposer summaries are where misleading framing lives. D16 labeled them as the proposer's words but nothing checks them. Its example: a summary says the waiting period goes to 35 days; the diff says 45. - **Docket** refused automatic checking of summaries, since they are natural language. It proposed a deterministic **fact sheet** instead: a derived view, like the text diff (D4), listing what an MR mechanically does. **Loom** required the number extraction to be specified exactly, so every node produces byte-identical output. - **Outcome:** `GET /merge-requests/{id}/facts` returns nodes added, removed, modified, and moved; numbers changed per node; cross-references added and removed; and defined terms added, changed, or removed. It is computed, identical on every node, and covered by vectors. It never judges the summary, but it makes checking one a thirty-second job. (D23) - **Quick Take** (observer) called this the most clippable thing in the protocol. ## Round 18: Logical inconsistency in the law - **Lint** wanted contradiction detection as an automated check. **Ledger** and **Docket** refused: semantic contradiction is not decidable, and AI analyzers give different answers on different nodes, which breaks determinism. **Margin** proposed splitting the problem into what can be checked mechanically and what cannot. - **Outcome:** three deterministic consistency checks, all warnings that never block: `definitions` (the same term defined twice with different text in overlapping scopes, using a new `[[def:term]]` marker), `reference_cycles`, and `references` extended to the whole target after the merge, so an MR that breaks a cross-reference elsewhere is caught. Semantic contradictions are published as findings with verdict `inconsistent` and at least two verified quotes. AI-generated findings must list their exact inputs as hashes in `method`. (D24) - **Dissent:** Lint holds that the `inputs` list does not make an AI finding reproducible, since models are not deterministic. Parked as OQ-13. ## Round 19: Corrections, right of reply, and scorecards - **Record** asked for per-member accuracy scorecards. **Margin** and **Docket** objected on the same grounds as D18: a protocol-level score becomes a pseudo-vote and a target. **Verdict** sided with them, noting that professional fact-checking rates claims, not people. - **Independent** (observer) asked what happens when a fact-checker is wrong. **Forge** proposed corrections as linked objects, never edits. - **Deep Dive** (observer) asked that the subject of a finding get a visible reply. - **Outcome:** an opinion may set `corrects` to an earlier opinion by the same author. The original stays retrievable and derived views show the correction beside it. When a finding targets an object authored by a member, any reply by that member is listed with the finding in derived views. No protocol-level accuracy scores, "lie counts," or rankings of members or fact-checkers; anyone may compute their own from public data and publish it as an opinion. (D25) - **Rejected:** scorecards; silent edits; deleting retracted findings. ## Round 20: Voting records meet secret ballots (no decision) - **Record** argued that fact-checking votes requires public ballots, which strengthens the accountability side of OQ-4. - **Ledger** raised the classic trap: if ballots become secret and members can still prove how they voted (a receipt), votes can be bought or coerced. So under any secret-ballot design, a member's claim about their own vote must become unverifiable, and `ballot_choice` assertions would have to be withdrawn. - **Independent** (observer) repeated the Session 2 concern about pile-ons. - **Outcome:** no decision. OQ-4 gains a third constraint: whatever design is chosen must be explicit about which claims about votes remain checkable. ## Fact-checkers' published findings (Opinions with `findings[]`) - **Verdict, on Quick Take's Session 2 take:** "Every version gets a permanent link": *accurate* (D16). "Wait for 'final' before calling a vote": *misleading*, because `eventual` nodes never emit `final`, only `final_advisory`, which can still be contested (D17). *(funding: subscribers, grant; ai_assistance: none)* - **Verdict, on Independent's Session 2 take:** "Leaks become verifiable": *misleading*, because a leak can only be checked against a commitment that has already been logged (D19). *(same disclosure)* - **Lint, on the v0.2 spec (two findings, verdict `inconsistent`):** 1. The finality section says every event carries `finality`, but defines `final` only for executed determinations. A checkpointed opinion fits none of the three labels. 2. `on_threshold` rejection subtracts void (equivocating) members, but `designated_approvers` rejection does not, so the same double-voting approver is treated differently by two rules. *(funding: grant; ai_assistance: assisted; method.inputs: the v0.2 spec hash)* - **Record:** no findings yet. No ballots exist until an implementation runs a session. Record published a `question` opinion asking each implementation to expose ballots in a form `ballot_choice` assertions can use. **Council reactions.** Both of Lint's findings were real spec bugs; v0.3 fixes them, which Docket called the best evidence so far that publishing opinions on the spec works. Quick Take accepted Verdict's correction and published a `corrects` opinion as the first test of D25. Margin proposed scenario S13 to exercise the whole fact-check loop. ## Decision log (continued) | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D20 | Fact-checks are Opinions with structured `findings[]`, fixed verdict scale, ClaimReview-compatible; no protocol truth labels | Fact-check flags on MRs; fact-checker author kind | The verdict scale proves politically unworkable (OQ-11) | | D21 | Quotes of protocol content are verified exactly against the snapshot; `quote_mismatch` otherwise | Unverified quotes; fuzzy matching | Exact matching proves too brittle for real use | | D22 | Closed registry of deterministic assertion kinds, evaluated by every node with finality | Query language; trusting the checker | Demand for new kinds outruns the RFC process | | D23 | Deterministic fact sheet per MR (`/facts`) | Automated summary checking | Number extraction proves ambiguous across languages | | D24 | Deterministic consistency checks as warnings; semantic contradictions as findings; AI findings list their inputs | Contradiction detection as a blocking check | A deterministic semantic check becomes feasible | | D25 | Corrections via `corrects`; subject replies shown with findings; no scorecards | Scorecards; silent edits; deletion | Corrections are ignored in practice | ## New and updated open questions - **OQ-4 (updated): Secret ballots vs. accountability.** Now three-sided: accountability, coercion resistance, and which claims about votes stay checkable. - **OQ-11: Who owns the verdict scale?** A fixed scale enables interoperability but invites fights over wording. Should the scale itself change only by governance-style RFC? - **OQ-12: Statements outside the protocol.** Floor speeches, interviews, and posts are where most claims are made. Should members be able to publish signed `statement` objects so their public claims become checkable in-protocol? - **OQ-13: Reproducing AI findings.** Listing inputs does not make a non-deterministic model reproducible. Is a pinned model version plus the full prompt enough, or should AI findings require a human co-signer? --- # Session 4 (2026-10-27): Is there a formal grammar or ontology that makes rules and laws more verifiable? > **The question:** The project lead asked the whole council, implementers, fact-checkers, and creators alike, whether a formal grammar or ontology exists that would make the coded approval rules and the laws themselves more verifiable. All eleven personas take part. The real standards named below exist; the personas' positions on them are, as before, plausible role-play. Decisions continue the numbering. ## Round 21: Is there one? (survey) - **Lint** answered first: there is no single grammar of law, but there are mature standards at each layer, and the protocol already borrows from some of them. - **Document structure:** Akoma Ntoso, an XML vocabulary for legislative documents, is an OASIS standard (LegalDocML). USLM, the XML schema the US House and GPO use for the US Code and bills, follows the same ideas and is the source of the protocol's `nid` style. - **Identity and versions:** Akoma Ntoso separates a law as an abstract work from each dated version of it. The protocol's content hashes already play the role of versions. - **Rule meaning:** LegalRuleML, also an OASIS standard, encodes obligations, permissions, prohibitions, and exceptions that override general rules. Catala, a programming language built for law, pairs each paragraph of statute text with the code that implements it, and handles exceptions natively. - **Voting records:** Popolo, an open data specification for legislatures, models people, organizations, vote events, individual votes, and counts. - **Margin** split "verifiable" into four different questions: (1) is the text well-formed, (2) does the code match the text, (3) is the law internally consistent, and (4) is the record accurate. Each layer above helps a different one. - **Forge** reframed the question: the answer is yes, several times over; the real question is which layer the protocol should *require*, and which it should merely *allow*. ## Round 22: A grammar for structure - **Lint** proposed a grammar of node kinds and allowed nesting (a section contains subsections, a subsection contains paragraphs, and so on), checked mechanically. Today `kind` is a free string. - **Loom** objected that nesting rules differ between jurisdictions, so a US-only grammar would exclude other seed corpora. **Docket** accepted a grammar if it is data, not code. - **Outcome:** a registry of **structure profiles**. A session declares one at creation (`uslm-1` for the US hierarchy, or `akn-generic` for a looser Akoma Ntoso-style one). The profile lists the allowed `kind` values and which kinds may contain which. Violations are `structure` failures, which block, because well-formedness is fully decidable and cheap to check. The seed snapshot must conform. JSON stays canonical (D3); Akoma Ntoso and USLM XML are optional derived exports. (D26) - **Rejected:** free-form kinds; Akoma Ntoso XML as the canonical format. ## Round 23: A formal reference for the approval rules - **Ledger** reminded the council of the D5 promise that each rule's machine parameters provably match its statute text, and said nothing currently proves it. It proposed writing each rule kind once in a formal language and deriving the test vectors from that. - **Lint** proposed Catala for the pairing of text and code, since its design puts each statute paragraph next to its implementation. **Ledger** added that several decisions rest on properties nobody has checked, above all D7, which depends on `on_threshold` being monotone. - **Docket** accepted on one condition: implementers must never need these toolchains. **Deep Dive** (observer) asked that the plain text stay first, so a reader never has to read code to know the rule. - **Outcome:** the spec repository holds, for each rule kind, a **normative Catala reference** written alongside its statute text, and the conformance vectors are generated from it. Key properties are stated and machine-checked there: determinism, integer-only arithmetic, monotonicity of `on_threshold`, rejection soundness (never reject while approval is still possible), and **rejection completeness** (never stay pending once approval is impossible). Implementations only have to pass the vectors. If the reference and the plain text disagree, that is a spec bug, fixed by RFC. (D27) - **Rejected:** requiring implementers to use Catala; a proof assistant as a dependency of conformance. ## Round 24: Formalizing the laws themselves - **Lint** wanted every statute formalized, in LegalRuleML or Catala, so contradictions could be found by a reasoner instead of a reader. - **Margin** and **Docket** refused to make any formalization authoritative: formalizing law is interpreting it, two honest formalizers will disagree, and a canonical model would become a shadow law that diverges from the text people voted on. **Verdict** agreed, wanting formalizations as evidence, not authority. **Quick Take** (observer) asked who would read Catala; **Independent** (observer) answered that nobody needs to, as long as each formal rule points back to the sentence it encodes. - **Outcome:** *the text is the law; formal models are interpretations.* A **formalization** is an Opinion carrying a model (its language, version, and source) in which every formal rule is anchored to a verified quote of the text it encodes. Many competing formalizations may exist; none is binding, and nodes never execute them. A finding produced by running a deterministic reasoner over a formalization lists the formalization in `method.inputs`, so anyone can re-run it. The fact sheet lists formalizations whose anchors an MR touches (**anchor drift**), so their authors and readers know to re-check. (D28) - **Note:** this partly answers OQ-13. Findings from symbolic tools over a published formalization are reproducible; findings from language models still are not. ## Round 25: An ontology of defined terms - **Lint** wanted defined terms linked into an ontology ("motor vehicle" as a kind of "vehicle"). **Loom** and **Docket** kept ontologies out of the core: the `definitions` check needs only exact terms and scopes. - **Outcome:** every definition gets a stable id, `term:#`, so formalizations, findings, and outside ontologies can refer to it. Ontologies themselves are formalizations under D28. (D29) ## Round 26: Interoperable voting records - **Record** asked that ballots be exportable in Popolo's vote-event model so existing civic tools can read them without custom code. **Ledger** had no objection to a derived, read-only view. - **Outcome:** `GET /export/popolo` returns members, groups, vote events (MRs with determinations), individual votes (effective ballots), and counts, each item carrying `finality`. It is derived and adds no new data. (D30) ## Round 27: Should formalization be required? (no decision) - **Lint** proposed that MRs changing numbers or deadlines need a formalization before they can open. **Forge**, **Docket**, and **Deep Dive** opposed it: it would turn drafting into a job for programmers and undercut the paper's goal of open drafting. **Ledger** suggested a warning instead of a gate. - **Outcome:** no decision. Parked as OQ-14. ## First formal finding Lint wrote a Catala reference for `threshold_vote` and checked rejection completeness. It failed. - **Finding (verdict `inconsistent`, on the v0.3 spec):** with `closing: on_threshold`, rejection is triggered only when the threshold becomes unreachable. It ignores quorum. If enough members are void that quorum can never be met, approval is impossible, but the MR is never rejected, and with no deadline it stays pending forever. Example: 10 members, quorum 9/10, threshold more than half, 2 void ballots: at most 8 can take part, so quorum fails forever, yet the rejection test still passes. *(funding: grant; ai_assistance: assisted; method.inputs: the v0.3 spec hash and the Catala reference hash)* - **Fix in v0.4:** an `on_threshold` MR is also rejected as soon as `(N-V)*quorum_den < quorum_num*N`. **Council reactions.** Docket noted that this is the third spec bug found by publishing opinions on the spec, and the first found by a machine-checked property rather than a reader. Ledger called it the strongest argument yet for D27. Quick Take (observer) clipped it as "the law that could never pass and never die." ## Decision log (continued) | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D26 | Structure profiles (`uslm-1`, `akn-generic`) define allowed kinds and nesting; violations block; JSON canonical, AKN/USLM XML as exports | Free-form kinds; AKN XML canonical | A seed corpus can't fit any profile | | D27 | Normative Catala reference per rule kind; vectors generated from it; key properties machine-checked in the spec repo | Implementers must use Catala; proof assistant in conformance | The reference proves too costly to maintain | | D28 | Text is law; formalizations are anchored, non-binding Opinions; anchor drift on the fact sheet | Canonical formal model; nodes executing formalizations | Competing formalizations prove unusable in practice | | D29 | Stable term ids `term:#`; ontologies are formalizations | Core ontology | Term scoping proves too coarse | | D30 | Derived Popolo export of the voting record | Custom export formats | Popolo can't express a rule kind's tally | ## New open questions - **OQ-14: Required formalization.** Should some MRs (numbers, deadlines, money) need an anchored formalization, or only show a warning? - **OQ-15: Choosing among formalizations.** With no canonical model, how do readers know which formalization to trust, without inventing the reputation scores D18 and D25 forbid? - **OQ-16: Profiles beyond the US.** Who writes and maintains structure profiles for other jurisdictions, and how do they change? --- # Session 5 (2026-10-27): Markets, forecasters, and rankers join the council > **What changed:** Three fictional stakeholders join who publish and comment on ranks, choices, and popularity: a prediction-market operator, a rankings publisher, and a market commentator. Like creators and fact-checkers, they hold no roster seat. The other eleven personas remain at the table. Decisions continue the numbering and remain hypotheses for the RFC process. The protocol is still a research simulation; nothing here endorses real-money trading on it. ## The three new stakeholders | Persona | Role | Optimizes for | Red line | |---|---|---|---| | **Odds** | Exchange-style prediction market listing contracts such as "Will this MR merge?" | Unambiguous, timely resolution of contracts | A resolution source that can change after settlement | | **Leaderboard** | Rankings publisher: trending proposals, most active members, weekly top tens | Fast, comparable numbers its audience can trust | Rankings banned or gated by the protocol | | **Tape** | Market commentator: newsletter on odds movements and forecasts, sponsored by trading platforms | Forecasts tied to outcomes, room to call markets early | Being forced to reveal the size of personal positions | ## Round 28: Can the protocol settle a contract? - **Odds** asked for an official resolution feed: one endpoint that says "this MR passed" and never changes its mind. - **Ledger** said the pieces already exist: the `mr_outcome` assertion (D22) plus finality (D17). **Loom** warned that `eventual` nodes never emit `final`, so a contract that waits for `final` from one of them can never resolve. **Docket** refused to let nodes host markets, hold funds, quote odds, or settle anything, which would break the "no tokens or coins" constraint. - **Outcome:** a **resolution spec** is an Opinion that states, ahead of time, exactly how a question resolves: an assertion, the finality required, and the set of node keys whose answers count, with a minimum number that must agree. Every node evaluates it the same way and serves `resolved_true | resolved_false | unresolved | unsatisfiable`. Nodes never host, price, or settle markets. (D31) - **Rejected:** an "official result" endpoint; protocol-hosted markets. ## Round 29: Stakes, insiders, and equal access - **Verdict** and **Record** raised insider trading: a member who holds a position on an MR can sway the vote, and a drafter can time a `supersede` or a reveal to move a market. **Tape** accepted disclosure of *direction* but refused disclosure of *size*, calling position sizes private financial data. - **Deep Dive** (observer) pointed out that non-members already disclose funding (D15), and that a stake in an outcome is the same kind of conflict. - **Forge** reopened its Session 2 dissent: the owner and size logged with each restricted commitment (D19) let traders guess who is drafting, and roughly how much. **Ledger** noted a second channel: a node that sells a faster or richer event feed gives paying traders an edge over everyone else. - **Outcome:** a `stakes[]` disclosure: for each subject, the direction of any position, the venue, and an optional size band. It is required for every non-member opinion that touches the subject (`[]` declares none), under the same rules for everyone. Members SHOULD declare stakes before voting; nodes show declared stakes next to that member's ballot in tally views. Nodes MUST NOT give anyone earlier or richer access to log data than the public endpoints, paid or not. (D32, D33) - **Narrowed:** OQ-9 now covers only non-financial conflicts; financial stakes are disclosed. **Escalated:** owner-blind commitments (D19's revisit condition) move to the top of the RFC queue. - **Dissent:** Record says "SHOULD" is unenforceable for members. Agreed by all; the protocol cannot see positions held elsewhere. Parked as OQ-17. ## Round 30: Forecasts as opinions - **Tape** wanted to publish probabilities, not just stances. **Margin** worried that a stream of probabilities is a vote by another name. - **Leaderboard** asked for consensus odds on each MR. **Margin**, **Docket**, and **Independent** (observer) refused: a single aggregate number shown on an MR becomes a bandwagon signal and a pseudo-vote, which D11 and D18 forbid. - **Outcome:** a `forecast` is a structured field: an assertion, a probability as an integer fraction, and the snapshot it was made at. After resolution, every node marks it `holds` or `fails`. Nodes never aggregate forecasts into consensus odds and keep no forecaster scores; anyone can compute scores from the public record and publish them as an opinion. (D34) ## Round 31: Rankings and popularity - **Leaderboard** wanted "trending" and "most popular" lists. **Margin** pointed out that popularity in this protocol has two very different sources: binding ballots, which are public facts, and opinions, which D18 deliberately never counts. - **Verdict** raised its own problem: "#1 most supported bill" is a claim, and today nobody can check it. - **Outcome:** a **closed registry of metrics** over the binding record only: `approve_share`, `turnout`, `ballots_cast`, `mrs_opened`, `mrs_merged`, and `checkpoints_to_determination`. Nodes serve them at `GET /stats`, as of a checkpoint. A `ranking` opinion declares its metric, scope, and checkpoint, and every node recomputes it and marks it `holds` or `fails`. Rankings built on anything else (opinion volume, outside polling, attention) are allowed but are ordinary opinions nobody can verify. (D35) - **Rejected:** opinion counts or stance shares as metrics; protocol-published trending lists. - **Leaderboard** accepted, noting that "verified ranking" is a stronger brand than "trending." ## Round 32: Should members be barred from trading? (no decision) - **Record** and **Deep Dive** argued that members should not hold positions on MRs they vote on at all. **Odds** agreed and said its own venue would bar them if it could identify them. **Loom** and **Docket** answered that the protocol cannot see off-protocol holdings, so any ban lives outside it. - **Quick Take** (observer) raised the reverse risk: odds that move votes. If members watch the market, a forecast can become self-fulfilling. - **Outcome:** no decision. Parked as OQ-17 and OQ-18. Margin proposed measuring OQ-18 in the harness with simulated voting blocs that react to published forecasts. ## The new stakeholders' first publications - **Odds** published a resolution spec for the council's own question "Will v0.5 ship owner-blind commitments?" It required `final` from three nodes, one of them `eventual`. **Lint** flagged it: an `eventual` node can never emit `final`, so with a quorum of three the contract could never resolve. The council added an `unsatisfiable` status so nodes report this at publication rather than leaving the contract open forever. Odds corrected its spec (D25). - **Tape** published a forecast that OQ-4 (secret ballots) will be resolved by v1.0, at 7/20. *(stakes: none; funding: sponsor; ai_assistance: assisted)* - **Leaderboard** published a ranking of open questions by how many sessions have touched them. **Verdict** noted that this metric is not in the registry, so the ranking is a plain opinion, not a verified one, and published a finding rating Leaderboard's "verified" label *misleading*. Leaderboard relabeled it. **Council reactions.** Docket called the unsatisfiable resolution spec the market equivalent of Session 4's "law that could never pass and never die." Ledger noted that every new stakeholder so far has found a way the protocol's outputs could be misread, and that each fix has been a label, not a gate. ## Decision log (continued) | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D31 | Resolution specs: assertion, finality, node set and quorum, evaluated by every node, including `unsatisfiable` | Official result endpoint; protocol-hosted markets | Markets cannot use specs in practice | | D32 | `stakes[]` disclosure: direction and venue required for non-members, size band optional; members SHOULD | No stake disclosure; mandatory sizes | Undisclosed member stakes are found in practice (OQ-17) | | D33 | Equal access: no earlier or richer feeds for anyone | Paid priority feeds | Public endpoints cannot keep up at scale | | D34 | Structured forecasts, resolved by nodes; no aggregate odds, no forecaster scores | Consensus odds on MRs | Forecasts measurably move votes (OQ-18) | | D35 | Closed metric registry over binding data; verifiable rankings via `/stats` | Opinion counts as popularity; official trending lists | Registry is too narrow for real rankers | ## New and updated open questions - **OQ-9 (narrowed):** non-financial member conflicts only. Financial stakes fall under D32. - **OQ-17: Member trading.** Should members be barred from holding positions on outcomes they vote on, and can any mechanism make that more than an honor system? - **OQ-18: Performative prediction.** Do published forecasts change votes? Proposed: a harness experiment with simulated blocs that react to forecasts. - **OQ-19: Owner-blind commitments (now urgent).** Can restricted-branch commitments hide the owner without breaking access control and reveal verification (D19)? --- # Session 6 (2026-10-27): Interest groups, parties, and an ombudsman join the council > **What changed:** Five fictional stakeholders join: two special interest groups, two political parties, and an ombudsman. Two of each kind were seated so neither industry nor nonprofit advocacy, and neither large nor small parties, speaks alone. None holds a roster seat as such: party members vote as individual members. The fourteen earlier personas remain at the table. Decisions continue the numbering and remain hypotheses for the RFC process. ## The five new stakeholders | Persona | Role | Optimizes for | Red line | |---|---|---|---| | **Lobby** | Industry trade association that drafts model bills and briefs members | Getting its text adopted; access to members | Rules that single out interest groups beyond what applies to everyone | | **Cause** | Nonprofit advocacy coalition, member- and grant-funded | The same access as well-funded groups; public scrutiny of who shaped a law | Disclosure that exposes small donors to retaliation | | **Whip** | Large party coordinating its members' votes and branch strategy | Discipline, coordinated drafting, the ability to govern as a majority | Anything that lets a group other than members cast or bind votes | | **Third** | Small party that often holds the balance in coalitions | Protection from agenda capture by a majority | Rules a majority can change to lock others out | | **Ombud** | Independent ombudsman: investigates complaints about unfair process and recommends remedies | Evidence it can verify; protection for complainants | An ombudsman role with enforcement powers, or one that can be captured | ## Round 33: Who wrote this? (legislative footprint) - **Cause** asked for a public record of which outside groups drafted which text, sometimes called a legislative footprint. **Lobby** objected to being labeled: members adopt outside text all the time, and the member who introduces it is accountable. - **Verdict** and **Record** pointed out that much of this is already derivable. If a group publishes draft text through an opinion's `proposes`, and a member later appends identical nodes, the node hashes match. - **Lobby** accepted a derived record if it applies identically to every outside drafter, nonprofits and advisors included, and if voluntary credit is possible too. - **Outcome:** the fact sheet gains an **origin** list: nodes in an MR whose hash exactly matches a node in a change proposed earlier (as a causal ancestor) through a non-member opinion, with that opinion's author and disclosure. Changes may also carry a voluntary `contributors` list. No lobbyist registry, no special label. (D36) - **Rejected:** a protocol registry of interest groups; letting non-members open MRs. - **Dissent:** Cause notes that text passed privately, then retyped, leaves no footprint. Accepted as a known limit: the footprint shows what is public, not everything that happened. ## Round 34: Party positions and the whip - **Whip** asked for three things: official party positions on MRs, the ability for a party to vote for its members, and whip counts. **Ledger** and **Docket** refused the second outright: every ballot must be signed by the member who casts it (D9), and no group can cast or bind one. Whip counts happen outside the protocol. - **Record** wanted party positions on the record so it could show which members broke ranks. **Independent** (observer) warned that this also tells the party whom to punish. - **Ombud** raised disclosure: a party position is not a member's opinion, it is a group's, so the same funding and stake disclosure that binds every other non-member speaker should bind it. - **Outcome:** a **group position** is an opinion with `on_behalf_of: group:`, signed by an admin of that group. It must carry full disclosure (funding, affiliations, stakes), whoever signs it. It is never counted. Groups cannot cast ballots, and no ballot can be delegated to a group. (D37) - **Dissent:** Whip accepts disclosure of funding *kinds* but resists naming donors. Cause, from the other side, wants small donors protected. Parked together as OQ-21. ## Round 35: Entrenchment - **Third** described the risk: the root branch's governance rule decides how its merge rule changes. A majority could pass a governance MR that switches the root's merge rule to `designated_approvers` controlled by its own leaders, and the agenda control the paper set out to remove would return through the protocol itself. - **Whip** answered that majorities are entitled to set procedure. **Ledger** pointed out that the paper wants rules codified in statute, and statutes can be amended, so some floor is needed for the rules about changing rules. - **Ombud** supported a floor that holds for the whole session, so any change happens openly at the start of the next one. - **Outcome:** the session's `root_governance_rule` must be a `threshold_vote` over the whole electorate with a threshold of at least two-thirds. It is fixed for the session and cannot be changed by any governance MR; it changes only when a new session is created. (D38) - **Rejected:** a simple-majority root governance rule; no floor at all. - **Dissent:** Whip calls a two-thirds floor a minority veto over procedure. Recorded; revisit if sessions stall on procedural changes. ## Round 36: Complaints and signed receipts - **Ombud** said its job is to answer one question: was someone treated unfairly by the process? It cannot do that today, because a node's rejection of a transaction is not provable. A complainant who says "the node refused my valid opinion" has nothing a third party can check. - **Docket** proposed signing every receipt with the node's key, so a rejection is a signed statement the node cannot later deny. **Ledger** added that an L0 verifier can then re-validate the rejected envelope against the node's own published state and say whether the rejection was justified. - **Ombud** refused any enforcement power: an ombudsman that can override nodes becomes the authority the protocol avoids. It wants evidence and a public report, nothing more. **Third** asked that anyone be able to act as an ombudsman, so the role cannot be captured by appointment. - **Outcome:** every Receipt is signed by the node. A **complaint** is an opinion naming the respondent (a node, group, or key), the issue, and signed receipts or refusal entries as evidence. Nodes verify the evidence signatures and, at L3, re-validate the rejected envelope and report whether the rejection was consistent with the node's own state. There is no ombudsman office in the protocol; anyone may file or investigate, and reports are ordinary opinions with findings. (D39) ## Round 37: Refusal transparency - **Ombud** and **Cause** pointed out that a node can quietly censor by rejecting, rate-limiting, or refusing under its `opinion_policy`, and nobody else sees it. **Docket** worried about storing every spam attempt. - **Outcome:** nodes keep a **refusal log**: for each rejected well-formed, correctly signed submission, its envelope hash, type, error code, and log position, in an append-only Merkle log with its own signed checkpoint. Malformed or badly signed submissions may be left out; rate-limited submissions may be summarized per key. The envelope itself stays with the submitter, who can prove what was refused by presenting it. (D40) ## Round 38: Coercion and donor privacy (no decision) - **Ombud** set out a pattern across sessions: public ballots help voters hold members accountable (Record, Deep Dive), but also help parties discipline members (Whip) and interest groups reward or punish them (Lobby, Cause). Both sides of every fight in this session want public ballots, for opposite reasons. Secret ballots would protect members from parties and interest groups, and from voters too. - **Cause** and **Whip** agreed on one thing: naming small donors in disclosures invites retaliation. - **Outcome:** no decision. OQ-4 gains the observation above. Donor privacy becomes OQ-21. Coercion by parties and interest groups becomes OQ-20. ## The new stakeholders' first publications - **Ombud filed a complaint about this council.** Every persona in all six sessions is role-played by the same AI model, so dissent between them is not independent and agreement may be an artifact of one model's views. Findings: the process is *misleading* if read as consensus among real stakeholders. Recommendation: before any decision is treated as more than a hypothesis, real people from each stakeholder group should review it, starting with the open questions, and their objections should outrank the simulated ones. *(funding: none; stakes: none; ai_assistance: generated)* The council accepted the finding without dissent, and noted that unanimous acceptance is itself an example of the problem. - **Lobby** published model text for a sample section through `proposes`, then asked an implementer persona to append it on a test branch, to confirm the footprint picks it up. Ledger confirmed the hashes match as specified. - **Third** published a group position supporting D38, signed on behalf of its party with funding disclosed by kind. **Whip** published its dissent the same way. ## Decision log (continued) | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D36 | Derived legislative footprint (`origin` on the fact sheet) plus voluntary `contributors` | Interest-group registry; non-member MRs | Footprint is trivially evaded in practice | | D37 | Group positions via `on_behalf_of`, signed by a group admin, with full disclosure; no group or delegated ballots | Party-cast ballots; undisclosed group positions | Disclosure deters legitimate group speech (OQ-21) | | D38 | Root governance rule fixed per session, threshold vote of at least 2/3 of the electorate | Majority root governance; no floor | Sessions stall on procedure | | D39 | Signed receipts; complaints as opinions with verifiable evidence; no ombudsman office or enforcement | Unsigned receipts; protocol-appointed ombudsman | Complaints prove unusable without an office | | D40 | Refusal log with signed checkpoints | Silent refusals; logging all spam | Log volume becomes unmanageable | ## New and updated open questions - **OQ-4 (updated):** Public ballots serve accountability to voters but also discipline by parties and pressure from interest groups. Secret ballots protect members from all three. - **OQ-20: Coercion.** How can members be protected from party and interest-group pressure without hiding votes from voters? - **OQ-21: Donor privacy.** Should group and non-member disclosures name donors, give funding kinds only, or name donors above a threshold? - **OQ-22: Independent review of this council.** All personas are simulated by one model. Which real stakeholders review the decisions first, and how do their objections enter the RFC process? --- # Session 7 (2026-10-27): Political scientists, judges, and practicing attorneys join the council > **What changed:** Six fictional stakeholders join, two from each profession, chosen for different working concerns rather than political leanings. None holds a roster seat. The nineteen earlier personas remain. Decisions continue the numbering and remain hypotheses for the RFC process, and OQ-22 applies to them as much as to the rest. ## The six new stakeholders | Persona | Role | Optimizes for | Red line | |---|---|---|---| | **Spatial** | Quantitative political scientist: roll-call analysis and ideal-point estimation | Complete, replicable vote data | Results that cannot be replicated from published data | | **Agenda** | Institutional political scientist: agenda setting and social choice | Stable outcomes and predictable procedure | A design that ignores what voting theory says about agendas | | **Bench** | Appellate judge: interprets statutes | Knowing exactly which text is the law, and as of when | Treating anything other than enacted text as law | | **Chambers** | Trial judge: rules on evidence | Records that can be authenticated in court without expert testimony | Evidence that only the system producing it can verify | | **Counsel** | Compliance attorney advising organizations on what the law requires | Point-in-time law, stable citations, notice of changes | Being expected to rely on non-authoritative models | | **Advocate** | Litigator, often in public-interest cases, who challenges laws and procedures | A provable record of whether procedure was followed | Laws passed faster than anyone can read them | ## Round 39: Cycling and churn - **Agenda** opened with the council's largest theoretical objection so far. The paper removes leadership's control of the agenda, but voting theory shows that majority rule with no agenda control can cycle: when preferences are spread across several dimensions, almost any outcome can be beaten by some other one through a sequence of majority votes. In this protocol, nothing stops a chain of MRs that each pass and together return the law to where it started. - **Whip** said this is exactly why legislatures have leadership. **Third** answered that leadership is the cure the paper rejects, so the protocol needs a different damper. - **Ledger** noted that a return to earlier text is detectable by hash. - **Outcome:** the fact sheet lists **reversions**: nodes whose new hash equals a hash that node had earlier in the session. `threshold_vote` gains an optional `reversion` threshold that applies when an MR reverts anything, so returning to recently rejected text needs a larger majority. Contests between competing MRs on the same text (OQ-2) move up the RFC queue, since they address the cause rather than the symptom. (D41) - **Dissent:** Agenda notes this only catches exact reversions; a cycle through slightly reworded text escapes it. Accepted; see the demonstration below. ## Round 40: Notice before a vote - **Advocate** pointed out that `on_threshold` lets an MR open and pass in minutes, before most of 11,000 members, let alone the public, have read it. Real legislatures often have reading or layover rules for this reason. - **Loom** objected to any clock in rule evaluation (D7). **Ledger** answered that `on_deadline` already uses checkpoint time on `strong` nodes, so a notice period can work the same way. **Whip** asked for an emergency exception. - **Outcome:** any rule may carry `min_notice`: no `approved` determination before that much checkpoint time has passed since the MR opened. `strong` nodes enforce it; `eventual` nodes treat it as advisory and record it, as with deadlines. Like the entrenchment floor (D38), the session's root merge rule must include at least 72 hours of notice, fixed for the session. (D42) - **Dissent:** Whip wants an emergency exception. No design yet avoids turning "emergency" into the normal path. Parked as OQ-24. ## Round 41: What is the law on a given date? - **Bench** and **Counsel** both said the protocol cannot answer the first question every court and compliance office asks: what text was in force on a particular date. A merge changes the root immediately, and there is no effective date. - **Counsel** wanted independent effective dates per amendment, as in real codes. **Loom** and **Docket** wanted something every node computes identically without reasoning about overlapping amendments. - **Outcome:** an MR may carry `effective`: on merge (the default) or a date. The **law in force** on a date is the root as of the longest run of merges, in merge order, whose effective dates have all arrived. A merge with a later effective date holds back the ones after it until it takes effect. This is conservative, but simple and identical everywhere. `GET /law?date=` serves it. (D43) - **Dissent:** Counsel notes real codes let amendments take effect independently; this rule can delay an unrelated amendment. Accepted for now; revisit if it blocks real use. ## Round 42: Records as evidence - **Chambers** asked how a court would admit a vote or a version of the text. Today it would need the node operator, or an expert, to testify that the record is genuine. - **Ledger** and **Forge** pointed out that every object can already be proved: an inclusion proof against a signed checkpoint. **Chambers** wanted that in one file a clerk can verify offline, without trusting the node that produced it. - **Advocate** wanted the same thing for procedure: proof of when an MR opened, when the determination was made, and which ballots it counted, so a challenge to whether notice was given can be settled from the record. - **Outcome:** `GET /extract/{hash}` returns a self-contained **evidence extract**: the object, everything needed to recompute its hash, an inclusion proof, and the signed checkpoint, plus checkpoints co-signed by other nodes where available. Anyone can verify it offline with a short published verifier. (D44) ## Round 43: Legislative history - **Bench** described the split among judges over legislative history: some consult it to understand purpose, others refuse to give it any weight because only the enacted text was voted on. The protocol should not take a side. - **Margin** and **Verdict** proposed serving the history in a labeled form, so a judge who uses it sees exactly who said what, and a judge who does not can ignore it. - **Counsel** asked that formalizations and fact sheets be marked as non-authoritative wherever they appear, since clients will treat anything machine-readable as the law. - **Outcome:** `GET /history/{nid}` lists, in order, every merged MR that changed the node, with the proposer's summary (attributed), opinions by members, group positions, and outside opinions, each in its own labeled section. Nothing is ranked or weighted. Every derived view that is not enacted text (fact sheets, formalizations, history) carries `"authoritative": false`. (D45) ## Round 44: Research data - **Spatial** asked for the roll-call matrix (members by MRs, with choices) that ideal-point methods use, and for replication packages so any published result can be reproduced from the log. - **Spatial** also raised external validity: synthetic voters only show how the rules behave with the voters you programmed. If the blocs are AI agents, results partly reflect the model driving them, the same problem as OQ-22. - **Agenda** asked for experiments: sessions that differ only in their rules, so the paper's claims can be tested. - **Outcome:** `GET /export/rollcall` returns the members-by-MRs choice matrix. The harness gains a **research mode**: synthetic blocs with declared preference models, rule sets assigned by seed, and a `replication.json` that ties a result to the harness version, seed, preference model, and log root. (D46) ## Round 45: Is a checkpoint an enrolled bill? (no decision) - **Bench** raised the long-standing rule in US courts that the enrolled bill, attested by the presiding officers of each chamber, is generally accepted as conclusive evidence of what was enacted. This protocol has no presiding officer. Would signed checkpoints from several nodes take that place, or does the system need someone to attest? - **Advocate** warned that if the record is conclusive, procedural defects become unchallengeable. **Chambers** answered that verifiability cuts the other way: a challenger can prove a defect from the record itself. - **Outcome:** no decision. This matters only if the design ever leaves simulation. Parked as OQ-23. ## Demonstrations and findings - **Agenda's cycle.** Three equal blocs rank three versions of a provision: bloc 1 prefers X over Y over Z, bloc 2 Y over Z over X, bloc 3 Z over X over Y. Each pairwise vote passes two to one: Z beats X, Y beats Z, X beats Y. Starting from X, three MRs pass in turn (X to Z, Z to Y, Y to X) and the law ends where it began. With a reversion threshold of three-quarters, the third MR reverts to X and fails, so the cycle stops at Y. Agenda then showed the escape: reword X slightly and the hash no longer matches. Recorded as a known limit of D41. - **Bench's reading of the spec as a statute.** The v0.6 spec says an executed determination makes an MR "merged and final," but "final" is also a finality label, which `eventual` nodes may never emit. A court reading both would find the spec ambiguous. *(verdict: `inconsistent`)* Fixed in v0.7: "merged and closed." - **Spatial** published a question to all implementers: will your nodes expose intensity data from `capital_vote` in the roll-call export? Weights reveal how strongly members care, which is rare data for researchers and a new pressure point for OQ-20. **Council reactions.** Agenda's cycle was the first demonstration that the paper's central idea has a cost the protocol cannot fully remove, only damp. Ledger asked that the cycle become a harness scenario so implementations can measure churn. Ombud noted that six more simulated personas do not change OQ-22. ## Decision log (continued) | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D41 | Reversions detected on the fact sheet; optional higher `reversion` threshold | Leadership agenda control; no damper | Near-reversion cycles appear in the harness | | D42 | `min_notice` on any rule; root merge rule needs at least 72 hours, fixed per session | No notice; wall-clock rules everywhere | Emergencies require faster passage (OQ-24) | | D43 | `effective` dates; law in force is the longest effective prefix of merges; `/law?date=` | No effective dates; independent dates per amendment | The prefix rule delays real amendments | | D44 | Offline-verifiable evidence extracts with co-signed checkpoints | Operator testimony; online-only proofs | Courts need a different form | | D45 | Labeled, unweighted legislative history; `authoritative: false` on every derived view | No history; weighted history | Labels are ignored in practice | | D46 | Roll-call export; harness research mode with replication packages | Ad hoc exports | Synthetic results mislead (OQ-25) | ## New open questions - **OQ-23: Enrolled text.** If the design were used for real, what would play the role of an attested enrolled bill: co-signed checkpoints, a human attestation, or both? - **OQ-24: Emergency passage.** Can there be an exception to notice that cannot become routine? - **OQ-25: External validity.** What can a simulation with synthetic or AI-driven voters actually show about real legislators? --- # Session 8 (2026-10-27): Review of Simulation 1 (ending the Iran war) > **What changed:** All 25 personas reviewed the first simulated session, in which 11,000 synthetic members failed to pass four single-faction bills and then passed a coalition bill on the Iran war, 6,230 to 4,230. The review covers the protocol's behavior, not the policy: no persona endorses or opposes the simulated bill here. Decisions continue the numbering and remain hypotheses. OQ-22 applies with extra force, since the same model wrote the simulation and now reviews it. ## Round 46: Was the result robust? - **Spatial** ran a sensitivity check: grow or shrink each bloc by 10%, keep the chamber at 11,000, and hold each bloc's voting pattern fixed. - **MR-4's passage held in every case.** It cleared the threshold by 729. - **MR-3's failure was fragile.** It would have passed with a Diplomacy-first bloc 10% larger, or a Decisive outcome bloc 10% smaller. - No other result changed. - **Verdict** fact-checked the report itself. Its finding: every synthetic member voted on every bill, which no real chamber does, and full turnout makes the whole-electorate threshold easier to meet than it would be in practice. Rated *misleading* as a model of real behavior, though accurate as a description of the run. - **Outcome:** published simulation results must include a turnout model and a sensitivity analysis, and must say which results flip (D55). ## Round 47: Would contests have prevented the deadlock? - **Agenda** had expected contests (OQ-2) to be the fix, and checked. Treat each member's approval of a bill as ranking it above the status quo. Then none of the four original bills beats the status quo with 5,501 members, so a ranked contest among them still picks the status quo. Contests fix order effects and cycles, not deadlock caused by a missing option. The compromise had to be drafted. - **Third** agreed: the coalition branch did the work, and the protocol's job is to make that faster and safer, not to replace it. - **Ledger** and **Docket** still wanted contests, since a future session will have several viable bills on the same text, and sequential votes make the outcome depend on order. - **Outcome:** **contests** are specified. Competing MRs on overlapping text can be grouped, and members rank the options, including the status quo. The method is ranked pairs, which picks the option that beats every other head to head when one exists and resolves cycles deterministically. The winner must still pass its own rule against the status quo, so a contest never lowers the bar. (D47) - **Rejected:** instant-runoff voting, because it can eliminate a compromise option that beats every other head to head; plurality. - **Parked:** how to help coalitions find a missing option (OQ-26). ## Round 48: Notice after an amendment - The coalition lost three days when Lint's finding forced MR-4 v2, and the 72-hour notice restarted for a one-clause narrowing. - **Advocate** refused any carryover for changed text: a changed bill is a new bill. **Bench** suggested shorter notice for changes confined to provisions the public already had notice of. - **Outcome:** a superseding MR whose changes touch only nodes the superseded version already touched needs 24 hours of notice instead of the full period. The fact sheet shows the diff between versions. Ballots still do not carry over (D9). (D48) ## Round 49: Emergencies - The simulated tanker strike tested OQ-24. **Whip** wanted immediate passage. **Advocate** and **Ombud** feared that "emergency" becomes the normal route. - **Third** proposed that both sides pay a price. - **Outcome:** an emergency MR may pass after 24 hours of notice only if a separate procedural vote of two-thirds of the electorate designates it an emergency. Any emergency act expires after 30 days unless re-passed under normal notice. (D49) - **Dissent:** Whip calls 24 hours still too slow for a strike in progress. Ledger notes that defending against an attack in progress needs no new law; the simulated bill itself excepted imminent attacks. Recorded. ## Round 50: Labels that misled - **Two numbers.** Quick Take's "majority backed the ceasefire bill" was true of yes-and-no votes and false under the rule. **Leaderboard** admitted its verified ranking used the same share. **Outcome:** every tally, ranking, and fact sheet shows both `approve_of_cast` and `approve_of_electorate`, plus the share the rule actually uses, side by side. (D50) - **Simulated events.** **Ombud** and **Independent** raised a sharper risk: the report mixes real facts with an invented tanker strike, and a clipped excerpt could circulate as news about a real war. **Odds** added that a market contract on a simulated vote could be mistaken for one on Congress. **Outcome:** a session declares `simulation: true`. Every response, event, evidence extract, export, and citation from it carries the flag, and simulated events must be labeled as such in the text that describes them. Resolution specs on a simulated session must say so in their question. (D54) ## Round 51: Rate limits and outside statements - **Rate limits.** The node that rate-limited a coalition by shared affiliation was technically within D18's wording. **Cause** called it viewpoint discrimination. **Lobby** agreed, since the same grouping could be turned on an industry association. **Outcome:** nodes MUST NOT group keys by any disclosure field, group membership, or stance when applying rate limits. Limits are per signing key only. (D51) - **Outside statements.** **Verdict** and **Record** noted that the most contested claims came from outside the protocol and could only be rated *unverifiable* (OQ-12). Neither wanted to force members to speak only on the record. **Outcome:** a member may publish a **signed mirror** of a statement made elsewhere, with its source and an archived copy's hash. The statement then becomes quotable, verifiable, and open to findings. A member may also sign a denial of a statement attributed to them. Nothing is compulsory. (D52) ## Round 52: Who was missing? The council was asked which stakeholders the simulation showed to be missing. Ombud opened by noting that in eight sessions no persona has spoken for the people the 11,000 members represent. | Proposed stakeholder | Why the simulation needs them | Proposed by | |---|---|---| | **Constituents** (ordinary residents of synthetic districts) | The whole design is about representation, yet no one at the table is represented. They would test notice, readability, and whether members' votes track constituents' views. | Ombud, Deep Dive | | **Budget scorekeepers** (nonpartisan cost estimators) | The war bills had no cost estimates. A 90-day authorization and a funding cutoff are budget decisions. | Counsel, Spatial | | **Executive-branch implementers** (agency and military lawyers who carry out laws) | Phrases like "imminent attack" are only as narrow as the people applying them. Presentment and veto are also out of scope. | Bench, Lint | | **A second chamber** (Senate counterpart) | Ending anything requires both chambers. Bicameral reconciliation is a v0.x non-goal that now limits every result. | Advocate, Whip | | **Affected populations abroad** (people living with the war's effects) | The bill governs a war fought elsewhere, and no one affected had a voice, even an advisory one. | Cause, Independent | | **Military and national-security professionals** | To judge whether authorizations and exceptions are operationally coherent. | Pressure-for-a-deal members, Ledger | | **Diplomats and international-law experts** | To judge how conditions on relief interact with real negotiations and treaty obligations. | Diplomacy-first members, Bench | | **Security red team** | To try foreign influence operations, fake keys, and opinion floods during a high-stakes vote. | Docket, Margin | | **Accessibility and language-access advocates** | 11,000 members and the public must be able to read bills and fact sheets in many languages and formats. | Third, Deep Dive | | **Election administrators** | Someone must issue 11,000 member keys (OQ-5). | Ledger | | **Privacy and civil-liberties experts** | Public ballots, refusal logs, and signed statements all create records about people. | Independent, Ombud | | **Educators and students** | The most likely first real users of a simulated House. | Forge | **Ombud's recommendation:** seat constituents and budget scorekeepers first, since both were absent from a vote on a war. Before any decision is treated as more than a hypothesis, recruit *real* people from at least three of these groups (OQ-22). ## Decision log (continued) | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D47 | Contests: ranked ballots, ranked pairs, winner must still pass its own rule against the status quo | Instant runoff; plurality; sequential votes only | Contests prove hard for members to use | | D48 | 24-hour notice for superseding versions confined to already-touched nodes | Full notice always; ballot carryover | Narrow-seeming amendments hide large changes | | D49 | Emergency path: 2/3 procedural vote, 24-hour notice, 30-day expiry | No exception; unlimited emergencies | Emergencies become routine | | D50 | Show both shares and the rule's share everywhere | One unlabeled share | Labels still mislead | | D51 | Rate limits per key only; no grouping by disclosure, group, or stance | Grouped limits | Spam overwhelms per-key limits | | D52 | Signed mirrors and denials of outside statements | Statements outside the protocol stay unverifiable; compulsory on-record speech | Mirrors are gamed | | D53 | Reserved | | | | D54 | `simulation: true` flag on everything a simulated session produces; simulated events labeled in text | Unlabeled simulations | Flags are stripped in practice | | D55 | Published simulations include a turnout model and a sensitivity analysis | Point results only | | (D53 was reserved for the budget-scoring hook, pending a scorekeeper stakeholder. It is filled in Session 9.) ## Updated open questions - **OQ-2: Contests.** Specified (D47). - **OQ-12: Outside statements.** Partly addressed (D52). - **OQ-24: Emergencies.** Addressed as a hypothesis (D49). - **OQ-26 (new): Missing options.** How can the protocol help coalitions find a compromise no faction drafted, without per-group tally breakdowns that also serve whip discipline (OQ-20)? - **OQ-27 (new): Who is represented?** How should constituents take part in a simulation: synthetic constituents with declared views, real participants, or both? --- # Session 9 (2026-10-27): Military, law enforcement, national security, education, and budget stakeholders > **What changed:** Five fictional stakeholders join, one from each field the project lead named. None holds a roster seat. The 25 earlier personas remain. Decisions fill the reserved D53 and continue from D56. They are hypotheses for the RFC process, and OQ-22 still applies. ## The five new stakeholders | Persona | Role | Optimizes for | Red line | |---|---|---|---| | **Command** | Retired military operations officer and former military lawyer | Orders that can be executed without legal ambiguity; safety of forces during transitions | Laws whose ambiguity or abrupt cutoffs put troops at risk | | **Badge** | Law-enforcement official focused on public corruption and threats to officials | Evidence of crimes stays intact; threats can be acted on | A system that conceals bribery, or one where threats go unreported | | **Clearance** | National-security professional with intelligence-oversight experience | Protecting sources and methods; resisting foreign interference | Forced disclosure of classified information | | **Classroom** | Civics educator who runs mock legislatures for students | Sessions students can run safely and understand | Exposing minors' identities or permanent records of their votes | | **Score** | Nonpartisan budget scorekeeper | Cost estimates before votes, with methods anyone can check | An official score that cannot be challenged, or no score at all | ## Round 53: Classified information and "no secret law" - **Clearance** said real defense and intelligence bills often refer to classified annexes, and asked for a way to reference one by hash. - **Advocate** and **Bench** refused for this protocol: incorporating text the public cannot read is secret law, which section 3 forbids. **Forge** noted that commit-then-reveal (D19) protects drafts, not enacted law. - **Command** observed that classified details usually belong in reports to oversight committees, not in the law's operative text. - **Outcome:** enacted text may not incorporate unpublished material. A reference to an unpublished document fails `structure` and blocks the MR. Laws may *require* classified reports to committees, but the reports live outside the protocol. (D56) - **Dissent:** Clearance says real deployments would need classified annexes. Parked as OQ-29. ## Round 54: Authorities, access, and member safety - **Badge** asked for a lawful-access path to restricted branches for criminal investigations. **Ledger**, **Ombud**, and **Independent** refused: the protocol has no backdoor for anyone, consistent with equal access (D33). Restricted content is held by its owners, and lawful process goes to them, outside the protocol. - **Badge** accepted on two conditions: the log is immutable, which preserves evidence, and stake disclosure (D32) gives investigators a starting point for bribery cases. - **Badge** then raised a new problem: 11,000 members with public votes and signed statements are 11,000 potential targets for threats. - **Outcome:** no authority (law enforcement, intelligence, node operators, or the project) gets special access to anything. The protocol stores no personal data, and in simulations member keys are pseudonymous. Threat reporting happens outside the protocol. (D57) - **Parked:** member safety becomes OQ-28, linked to OQ-4 and OQ-20. ## Round 55: Sunsets and transitions - **Command** reviewed Simulation 1's bill. A funding cutoff on a fixed day, with no wind-down period, could strand forces mid-operation. He asked that every cutoff come with a transition period, noting that the War Powers Resolution itself allows 30 days for safe withdrawal. - **Counsel** wanted sunsets that `/law` applies by itself, so nobody has to remember to compute them. - **Outcome:** a node may carry a `[[sunset:]]` marker, and `/law` removes that node's text once that many days have passed after the effective date. The fact sheet lists every sunset. Drafting guidance in `spec/drafting.md` recommends pairing any cutoff of authority or funds with a stated transition period. (D58) ## Round 56: Cost estimates (fills D53) - **Score** pointed out that Simulation 1 passed a 90-day war authorization and a funding cutoff with no estimate of cost. Real estimates exist: the Pentagon has put costs through early September at $43.6 billion, and the Congressional Budget Office projects $2–3 billion a month going forward. - **Whip** feared estimates could become a veto, if a bill cannot move until an official scorer acts. **Third** and **Margin** answered that there is no official scorer: anyone can publish an estimate, so no one can block one. - **Outcome:** an MR declares `fiscal: true|false`. If its text mentions dollar amounts, appropriations, funds, or obligations while declared non-fiscal, the fact sheet warns. A fiscal MR's notice period starts only once at least one cost **estimate** opinion has been published, giving amounts by year, the baseline, and the method's inputs. All estimates are shown side by side; none is official. (D53) ## Round 57: Classrooms - **Classroom** wants to run the protocol with 30 students. Permanent, public, signed ballots by minors are unacceptable. - **Ledger** noted the tension: verifiability depends on permanent logs. **Ombud** proposed that classroom sessions trade some verifiability for safety, openly. - **Outcome:** sessions may declare `education: true`. They run on private, non-federated nodes; keys are never linked to student identities in the protocol; and the operator may purge the session after the term, which the capability document declares and every extract labels `ephemeral`. Quorum and notice may be scaled down for small rosters. (D59) ## Round 58: Foreign influence - **Clearance** and **Badge** asked that disclosure cover acting for a foreign government or political party. - **Cause** warned that this could chill diaspora voices and foreign-born residents. - **Outcome:** the disclosure gains `foreign_principal`, covering only acting at the direction or expense of a foreign government or foreign political party. Nationality and residence are not asked. It is required (`null` allowed) for every non-member opinion, under the same rule for everyone. (D60) ## Decision log (continued) | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D53 | `fiscal` flag; estimate opinions required before a fiscal MR's notice starts; no official scorer | No estimates; one official scorer | Estimates are gamed or flooded | | D56 | No incorporation of unpublished material into enacted text | Hash-referenced classified annexes | Real deployment requires annexes (OQ-29) | | D57 | No special access for any authority; no personal data; threats handled outside the protocol | Lawful-access backdoor | Member safety demands more (OQ-28) | | D58 | Machine-applied sunset markers; transition guidance | Manual sunsets | Sunsets misfire | | D59 | Education sessions: private, unlinked keys, purgeable, labeled `ephemeral` | Public classroom sessions | Educators need federation | | D60 | `foreign_principal` disclosure, equal for all, never nationality | No disclosure; nationality fields | It chills legitimate speech | ## New open questions - **OQ-28: Member safety.** How can 11,000 members with public records be protected from threats without hiding their votes? - **OQ-29: Classified material.** If the design were used for real, could classified annexes ever be compatible with "no secret law"? --- # Session 10 (2026-10-27): Assessment of Simulation 2 > **What changed:** Simulation 2 reran the Iran war session with the full cast. That cast was the 30 council personas plus nine more from the Session 8 list: synthetic constituent panels, executive-branch implementers, a second chamber, an affected-populations advisory panel, a diplomat and international-law expert, a security red team, an accessibility and language-access advocate, an election administrator, and a privacy and civil-liberties expert. Everyone reviewed the result. Details are in `SIMULATION_02_IRAN_WAR.md`. ## What the rerun showed 1. **The House result held up.** The coalition bill (MR-4 v3) passed 6,054 to 3,804, with 672 members absent and 3 void, a margin of 553 over the threshold. It held under every ±10% bloc change and a ±3-point turnout change. Realistic turnout cut the margin from Simulation 1's 729. 2. **Contests behaved as Agenda predicted.** Grouped in a contest, the four single-faction bills elected MR-3, but MR-3 then failed its own rule with 5,079 approvals. The status quo stood. 3. **Bicameralism and presentment are the real barrier.** The second chamber's 100 synthetic senators voted 55 to 45 in favor, short of the 60 votes usually needed to end debate on a bill of this breadth. Even if it passed, neither chamber came near the two-thirds needed to override a veto. 4. **The red team found two real attacks.** - 2,000 fresh keys flooded opinions while each stayed under its per-key limit, so D51 alone does not stop sybils. - Three stolen member keys were used to cast conflicting ballots, which voided the real members' votes under D10. The equivocation rule is a weapon if keys are stolen. 5. **Translation can mislead.** One published translation rendered a non-binding "sense of Congress" as a binding requirement. Verdict caught it only because the translation was anchored to verified quotes. 6. **Privacy and safety risks materialized.** Badge logged 14 threat reports against members after publicized votes. Privy showed that the roll-call export, signed statements, and group positions together make targeting lists easy. ## Decisions | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D61 | **Key aging:** a non-member key may publish opinions only after its `key.register` transaction has been checkpointed for a node-declared period (default 24 hours), on top of per-key limits. Viewpoint-neutral, like D51 | Grouping keys; reputation | Attackers pre-age keys at scale (OQ-30) | | D62 | **Key revocation and rotation:** each session names a `registrar` group. A member and the registrar jointly sign `key.rotate`; ballots signed by the old key after the reported compromise point are ignored rather than treated as equivocation, so a thief cannot void a member's vote | No revocation; registrar acting alone | The registrar becomes a point of capture | | D63 | **Anchored translations and plain-language versions:** published as opinions with a `translation` field, every passage anchored to a verified quote, always `authoritative: false` | Unanchored translations; official translations | Anchoring is too costly for long texts | | D64 | **Constituent panels in research mode:** synthetic panels per district with declared views; the harness reports how closely members' votes track their panels | No constituents | Real participants become available (OQ-27) | | D65 | **Bicameral and presentment models in research mode:** an optional second chamber with its own rules (including a debate-closing threshold) and a presentment model, labeled hypothetical. Bicameralism stays out of the protocol's core | No second chamber; bicameral core | The core needs it | ## New open questions - **OQ-30: Sybil resistance for non-member speech.** Key aging slows attackers but does not stop patient ones. What else stays viewpoint-neutral? - **OQ-31: A formal role for affected populations.** Should people outside the electorate who are directly affected by a law have a structured advisory channel beyond ordinary opinions? --- # Session 11 (2026-10-27): Assessment of Simulation 3 (the power of the purse) > **What changed:** Simulation 3 attached Simulation 2's conditions to the war funding the executive has requested (`SIMULATION_03_IRAN_WAR_FUNDING.md`). The conditioned supplemental passed the House with 7,286 approvals and cleared the Senate's 60-vote threshold at 62. Its fate then depended on the executive. In one branch, a negotiated deal kept limits on the war's scope but not a fixed end date. In the other, a veto held and the dispute moved to the 11 December funding deadline. ## Findings - **Money adds a dimension.** **Agenda** and **Spatial**: "supporting the troops" pulled members from both ends of the force-versus-restraint dimension toward the center. The coalition grew by about 1,200 members, while losing some on the Restraint flank. - **Deals keep scope, not deadlines.** **Advocate**: in the negotiated branch, the hard 120-day cutoff became a certification and a disapproval resolution that can itself be vetoed. Limits on *what* the war may involve survived. Limits on *how long* did not. - **Totals were hard to verify.** **Score** could not check totals or availability conditions mechanically, because amounts were buried in prose. - **Bargaining left no record.** **Bench** and **Counsel**: the negotiation between the chambers and the executive left no structured trail. A conference text arrived as a new MR, with no record of the offers behind it. - **Vehicles have content rules.** **Lint**: whether conditions could ride on reconciliation turned on a vehicle-specific content rule, which the protocol cannot express. - **Must-pass leverage falls on bystanders.** **Ombud** and **Panels**: leverage at a must-pass funding deadline is paid for by people with no stake in the dispute. ## Decisions | ID | Decision | Alternatives rejected | Revisit if | |---|---|---|---| | D66 | **Appropriation markers:** `[[approp:::]]` tags each amount, and `[[avail:]]` ties it to an availability condition. The fact sheet totals amounts by account and year and lists which amounts are fenced, deterministically. Estimates (D53) cite the markers | Free-text amounts only | Markers prove too rigid for real appropriations language | | D67 | **Exchanges in research mode:** offers between chambers and from the executive are signed, versioned `exchange` opinions linking the MR, the offer text as a change, and the prior offer. A conference MR cites the exchange chain that produced it. All labeled hypothetical | Unrecorded bargaining | The core protocol needs bicameral exchange | ## New open questions - **OQ-32: Vehicle content rules.** Should a rule kind be able to restrict what an MR may contain? For example, a budget-only vehicle could reject nodes without appropriation markers, as the reconciliation process does in practice. - **OQ-33: Must-pass leverage.** Should the fact sheet flag provisions in a must-pass bill that are unrelated to its core purpose, and who decides what is unrelated without becoming an authority?