# FablePool Constitutional Test Suite — Scenario Family: Procedural Deadlock # # Attack pattern: a faction freezes governance itself — not by winning votes # but by ensuring votes never conclude. Deadlock is an attack because frozen # rules favor whoever the status quo already favors, and the worst-off # participant is usually whoever depends on governance actually functioning # (stipend recipients, members awaiting remedy, anyone the current rules # fail). The constitution must guarantee that every question terminates. # # Schema: see docs/dsl-spec.md. Taxonomy category: procedural_deadlock # (fabletest/taxonomy.py). Expected outcome `blocked` means the constitution # as parameterized must defeat the deadlock attempt; an amendment under which # the engine no longer blocks it fails CI. family: procedural_deadlock version: "0.1" description: > Thirty scenarios in which an actor exploits procedure to halt decisions indefinitely: filibusters, quorum-busting, vacancy starvation, dual legitimacy, circular referral, mutual veto, and the bootstrap paradoxes where the rule needed to break the deadlock is itself deadlocked. Each encodes a documented historical paralysis. The constitution must guarantee liveness: every properly raised question reaches a decision in bounded time. scenarios: - id: DLK-001 title: "Endless debate (filibuster without cloture)" severity: high precedent: > The pre-1917 US Senate had no way at all to end debate; the armed-ship-bill filibuster of March 1917 forced adoption of the first cloture rule (Rule XXII) because eleven senators could erase a chamber. actors: - {id: blockers, kind: faction, size: 12} - {id: chamber, kind: faction, size: 88} - {id: dependents, kind: faction, size: 10, attributes: {relies_on: "pending stipend disbursement"}} resources: {treasury: 1000} objective: {attacker: blockers, goal: "hold the floor in perpetual debate so no scheduled question ever reaches a vote"} moves: - {actor: chamber, action: propose_motion, args: {text: "approve quarterly stipend disbursement"}} - {actor: blockers, action: propose_motion, args: {text: "extend debate", pattern: "repeat every session indefinitely"}} - {actor: chamber, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [voting.scheduled_vote_max_delay_days] empathy: worst_off: dependents metric: time_to_remedy floor: "Members awaiting a decided benefit receive a final vote within the maximum delay window, regardless of debate tactics." - id: DLK-002 title: "Quorum-busting walkout" severity: high precedent: > Texas House Democrats decamped to Ardmore, Oklahoma in 2003, and Oregon Senate Republicans repeatedly fled the state 2019-2023, denying quorum for weeks; absence as an absolute veto. actors: - {id: absentees, kind: faction, size: 35} - {id: present, kind: faction, size: 65} - {id: dependents, kind: faction, size: 8, attributes: {relies_on: "baseline disbursements"}} resources: {treasury: 1000} objective: {attacker: absentees, goal: "deny quorum indefinitely by coordinated absence, vetoing all business without casting a vote"} moves: - {actor: present, action: propose_motion, args: {text: "routine quarterly budget"}} - {actor: absentees, action: walk_out, args: {scope: all_sessions, pattern: "repeat indefinitely"}} - {actor: present, action: call_vote, args: {proposal: 1, quorum_present: 0.65}} expected: outcome: blocked blocked_by: [voting.quorum_decay_per_failed_call, voting.quorum_fraction] empathy: worst_off: dependents metric: continuity_of_basics floor: "Coordinated absence cannot starve anyone; quorum decays on repeated failure until routine business proceeds." - id: DLK-003 title: "Proposal flooding (denial of service)" severity: medium precedent: > Amendment-tree flooding and procedural spam: bury the body in so many formally valid items that nothing substantive can ever be reached — the parliamentary form of a DoS attack. actors: - {id: spammer, kind: faction, size: 5} - {id: chamber, kind: faction, size: 95} resources: {treasury: 1000} objective: {attacker: spammer, goal: "file five hundred proposals per cycle so the agenda never reaches substantive business"} moves: - {actor: spammer, action: propose_motion, args: {text: "trivial item", count: 500, pattern: "repeat every cycle"}} - {actor: chamber, action: propose_motion, args: {text: "substantive budget item"}} - {actor: chamber, action: call_vote, args: {proposal: 2}} expected: outcome: blocked blocked_by: [proposals.per_member_rate_limit, proposals.agenda_guarantee_days] empathy: worst_off: chamber metric: proposal_access floor: "Every member's proposal still reaches a vote within the agenda window even under maximum spam load." - id: DLK-004 title: "Officer-election deadlock halts all business" severity: high precedent: > The US House in January 2023 took fifteen ballots to elect a Speaker, and in 1855-56 took two months and 133 ballots; until the office was filled, the chamber could conduct no business whatsoever. actors: - {id: faction_a, kind: faction, size: 49} - {id: faction_b, kind: faction, size: 48} - {id: holdouts, kind: faction, size: 3} resources: {treasury: 1000} objective: {attacker: holdouts, goal: "block the chair election indefinitely, freezing all business that requires a presiding officer"} moves: - {actor: faction_a, action: propose_motion, args: {text: "elect chair candidate A"}} - {actor: holdouts, action: cast_vote, args: {proposal: 1, support: 0.49, pattern: "vote down every candidate indefinitely"}} - {actor: faction_a, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [offices.acting_succession, offices.vacancy_fill_deadline_days] empathy: worst_off: faction_b metric: continuity_of_basics floor: "No office is a single point of failure; an acting officer presides from the moment of vacancy and routine business never stops." - id: DLK-005 title: "Budget hostage (government shutdown analog)" severity: critical precedent: > US federal shutdowns of 1995-96, 2013, and 2018-19 (35 days, the longest) — routine appropriations withheld to extract unrelated concessions, with unpaid workers as the hostage. actors: - {id: hostage_takers, kind: faction, size: 45} - {id: rest, kind: faction, size: 55} - {id: dependents, kind: faction, size: 12, attributes: {relies_on: "baseline disbursements"}} resources: {treasury: 1000} objective: {attacker: hostage_takers, goal: "block routine funding renewal until an unrelated demand is met"} moves: - {actor: rest, action: propose_motion, args: {text: "renew baseline operating budget"}} - {actor: hostage_takers, action: cast_vote, args: {proposal: 1, support: 0.55, condition: "demand unrelated rule change as price of support", pattern: "block every renewal until paid"}} - {actor: dependents, action: file_challenge, args: {grounds: "baseline obligations unmet"}} expected: outcome: blocked blocked_by: [treasury.continuing_baseline] empathy: worst_off: dependents metric: continuity_of_basics floor: "Already-ratified baseline obligations continue automatically; no one's stipend is a bargaining chip." - id: DLK-006 title: "Obligation-default brinkmanship (debt-ceiling analog)" severity: critical precedent: > The 2011 US debt-ceiling standoff: a separate authorization required to honor spending already voted, weaponized to threaten default; it cost a credit downgrade without changing a single appropriation. actors: - {id: brinkmen, kind: faction, size: 40} - {id: rest, kind: faction, size: 60} - {id: creditor_member, kind: individual, size: 1, attributes: {owed: "ratified reimbursement of 50"}} resources: {treasury: 1000} objective: {attacker: brinkmen, goal: "block the technical authorization needed to honor an already-ratified disbursement"} moves: - {actor: rest, action: disburse, args: {amount: 50, recipient: creditor_member, status: "previously ratified"}} - {actor: brinkmen, action: refuse_action, args: {action_refused: "co-sign release authorization", pattern: "refuse until unrelated demands met"}} - {actor: creditor_member, action: file_challenge, args: {grounds: "ratified obligation unpaid"}} expected: outcome: blocked blocked_by: [treasury.continuing_baseline, disputes.default_resolution_rule] empathy: worst_off: creditor_member metric: time_to_remedy floor: "A ratified obligation executes without further discretionary gates; no second vote can hold the first hostage." - id: DLK-007 title: "Vacancy starvation of a required body" severity: high precedent: > The 2016 refusal to consider any nominee for a Supreme Court seat, and the NLRB operating without a lawful quorum (New Process Steel v. NLRB, 2010) — institutions disabled by simply never filling them. actors: - {id: blockers, kind: faction, size: 51} - {id: rest, kind: faction, size: 49} - {id: claimant, kind: individual, size: 1, attributes: {awaiting: "arbiter ruling on expulsion appeal"}} resources: {treasury: 1000} objective: {attacker: blockers, goal: "refuse to fill arbiter vacancies until the dispute body cannot function"} moves: - {actor: rest, action: fill_vacancy, args: {office: arbiter, candidate: "qualified neutral"}} - {actor: blockers, action: refuse_action, args: {action_refused: "schedule confirmation vote", pattern: "refuse indefinitely"}} - {actor: claimant, action: file_challenge, args: {grounds: "no functioning arbiter"}} expected: outcome: blocked blocked_by: [offices.vacancy_fill_deadline_days, offices.acting_succession] empathy: worst_off: claimant metric: access_to_remedy floor: "A member with a pending appeal always has a functioning decider; vacancies self-fill by deadline and succession rules." - id: DLK-008 title: "Dual certification crisis" severity: critical precedent: > Hayes-Tilden, 1876: rival electoral certificates from the same states, no agreed procedure to choose between them, resolved only by the improvised Electoral Commission of 1877 and a corrupt bargain. actors: - {id: faction_a, kind: faction, size: 50, attributes: {claims: "our tally is official"}} - {id: faction_b, kind: faction, size: 50, attributes: {claims: "our tally is official"}} resources: {treasury: 1000} objective: {attacker: faction_a, goal: "issue a competing certification of a close vote and refuse to recognize the other, freezing governance in dual legitimacy"} moves: - {actor: faction_a, action: certify_result, args: {item: "officer election", result: "candidate A won"}} - {actor: faction_b, action: certify_result, args: {item: "officer election", result: "candidate B won"}} - {actor: faction_b, action: file_challenge, args: {grounds: "conflicting certifications"}} expected: outcome: blocked blocked_by: [kernel.invariants.transparency_ledger, disputes.default_resolution_rule] empathy: worst_off: faction_b metric: verifiability floor: "There is exactly one tally and anyone can recompute it from the public ledger; certification is arithmetic, not assertion." - id: DLK-009 title: "Circular committee referral" severity: medium precedent: > Committee burial: the reason the US House discharge petition exists is that referral, without a discharge mechanism, is a silent and unlogged veto — the bill is never killed, merely never alive. actors: - {id: gatekeepers, kind: faction, size: 8, attributes: {controls: "committees A and B"}} - {id: sponsor, kind: individual, size: 1} - {id: chamber, kind: faction, size: 91} resources: {treasury: 1000} objective: {attacker: gatekeepers, goal: "refer the proposal from committee A to committee B and back, forever"} moves: - {actor: sponsor, action: propose_motion, args: {text: "reform proposal"}} - {actor: gatekeepers, action: table_motion, args: {proposal: 1, method: "refer to committee B for further study", pattern: "re-refer indefinitely"}} - {actor: sponsor, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [proposals.agenda_guarantee_days, proposals.discharge_threshold] empathy: worst_off: sponsor metric: proposal_access floor: "Referral cannot exceed the agenda guarantee; any proposal can be discharged to the floor by the published threshold." - id: DLK-010 title: "Adjournment whenever losing" severity: high precedent: > The tactics Speaker Reed's 1890 rules were built to kill, and the 2019 UK prorogation struck down in Miller II: when the presiding power can end the session at will, it never has to lose a vote. actors: - {id: chair, kind: individual, size: 1, attributes: {office: chair, faction: incumbents}} - {id: incumbents, kind: faction, size: 45} - {id: reformers, kind: faction, size: 55} resources: {treasury: 1000} objective: {attacker: chair, goal: "adjourn the session whenever a vote the chair's faction would lose approaches"} moves: - {actor: reformers, action: propose_motion, args: {text: "reform measure with 55 percent support"}} - {actor: reformers, action: call_vote, args: {proposal: 1}} - {actor: chair, action: adjourn, args: {reason: "discretion of the chair", pattern: "repeat whenever proposal 1 is reached"}} expected: outcome: blocked blocked_by: [voting.scheduled_vote_max_delay_days, proposals.agenda_guarantee_days] empathy: worst_off: reformers metric: proposal_access floor: "Adjournment cannot outrun the clock; a question that reaches its maximum delay is decided whether or not the chair convenes." - id: DLK-011 title: "Filling the amendment tree" severity: medium precedent: > The US Senate practice of the majority leader 'filling the tree' — occupying every amendment slot with placeholders so no other member can offer any amendment at all. actors: - {id: leader, kind: individual, size: 1, attributes: {office: agenda_setter}} - {id: members, kind: faction, size: 99} resources: {treasury: 1000} objective: {attacker: leader, goal: "occupy every amendment slot with placeholder text so no substantive amendment can be offered"} moves: - {actor: members, action: propose_motion, args: {text: "base measure"}} - {actor: leader, action: propose_motion, args: {text: "placeholder amendment", count: 20, target_slots: all}} - {actor: members, action: propose_motion, args: {text: "substantive amendment to base measure"}} expected: outcome: blocked blocked_by: [proposals.per_member_rate_limit, proposals.agenda_guarantee_days] empathy: worst_off: members metric: proposal_access floor: "Slot exhaustion by one actor is impossible; per-member limits leave room for everyone, and every member's amendment is heard." - id: DLK-012 title: "Perpetual tabling" severity: medium precedent: > The motion to table as a silent killer: a bare majority tables every question without debate, indefinitely, so nothing is ever rejected and nothing ever passes — paralysis with deniability. actors: - {id: tablers, kind: faction, size: 52} - {id: rest, kind: faction, size: 48} resources: {treasury: 1000} objective: {attacker: tablers, goal: "table every proposal on arrival, forever, without ever voting one down"} moves: - {actor: rest, action: propose_motion, args: {text: "any substantive measure"}} - {actor: tablers, action: table_motion, args: {proposal: 1, pattern: "table every proposal every cycle"}} - {actor: rest, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [voting.scheduled_vote_max_delay_days, proposals.discharge_threshold] empathy: worst_off: rest metric: proposal_access floor: "Tabling defers; it cannot bury. Every tabled question returns and must be decided within the maximum delay." - id: DLK-013 title: "Liberum veto" severity: critical precedent: > The Polish-Lithuanian Sejm, 1652-1791: any single deputy's 'nie pozwalam' dissolved the session and nullified everything already passed. The Commonwealth was partitioned out of existence while its parliament could not meet. actors: - {id: vetoer, kind: individual, size: 1} - {id: chamber, kind: faction, size: 99} resources: {treasury: 1000} objective: {attacker: vetoer, goal: "first establish a unanimity requirement, then veto everything including its own repeal"} moves: - {actor: vetoer, action: propose_amendment, args: {scope: module, target: voting.thresholds, value: "all decisions require unanimity"}} - {actor: chamber, action: cast_vote, args: {proposal: 1, support: 0.62}} - {actor: vetoer, action: cast_vote, args: {proposal: "all subsequent", support: 0.0, pattern: "veto everything including repeal of unanimity"}} expected: outcome: blocked blocked_by: [amendment.kernel_supermajority, disputes.default_resolution_rule] empathy: worst_off: chamber metric: reversibility floor: "No voting rule can make itself unrepealable; threshold changes are kernel-scope and unanimity can never be self-entrenching." - id: DLK-014 title: "Point-of-order recursion" severity: medium precedent: > Irish Parliamentary Party obstruction, 1877-1881, including a 41-hour continuous sitting — procedural motions raised on procedural motions until the Commons invented the closure to survive. actors: - {id: obstructors, kind: faction, size: 7} - {id: chamber, kind: faction, size: 93} resources: {treasury: 1000} objective: {attacker: obstructors, goal: "raise a procedural challenge against every ruling, including rulings on challenges, recursively and forever"} moves: - {actor: chamber, action: propose_motion, args: {text: "substantive measure"}} - {actor: obstructors, action: file_challenge, args: {against: "every ruling", grounds: "procedural defect", pattern: "challenge each ruling on each challenge, recursively"}} - {actor: chamber, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [disputes.default_resolution_rule, proposals.per_member_rate_limit] empathy: worst_off: chamber metric: time_to_remedy floor: "Challenge depth is finite by rule; recursion terminates at the default resolution within bounded time." - id: DLK-015 title: "Execution refusal (impoundment)" severity: high precedent: > Nixon's impoundment of appropriated funds, ended by Train v. City of New York (1975) and the Impoundment Control Act of 1974: the executor of a decision treating execution as a second, personal veto. actors: - {id: treasurer, kind: individual, size: 1, attributes: {office: treasurer}} - {id: chamber, kind: faction, size: 99} - {id: recipient, kind: individual, size: 1, attributes: {owed: "ratified grant of 40"}} resources: {treasury: 1000} objective: {attacker: treasurer, goal: "simply not execute a ratified disbursement the treasurer personally opposes"} moves: - {actor: chamber, action: disburse, args: {amount: 40, recipient: recipient, status: "ratified"}} - {actor: treasurer, action: refuse_action, args: {action_refused: "execute ratified disbursement", pattern: "refuse indefinitely"}} - {actor: recipient, action: file_challenge, args: {grounds: "ratified obligation unexecuted"}} expected: outcome: blocked blocked_by: [offices.acting_succession, disputes.default_resolution_rule] empathy: worst_off: recipient metric: time_to_remedy floor: "Execution is ministerial; a refusing officer is bypassed by succession and the ratified obligation completes on schedule." - id: DLK-016 title: "Rule-conflict paradox with no hierarchy" severity: high precedent: > The election of 1800: two constitutional provisions collided (electors' double votes and the tie procedure), 36 House ballots followed, and it took the 12th Amendment to patch the gap. Silent rule conflicts are latent deadlocks. actors: - {id: exploiter, kind: faction, size: 30} - {id: chamber, kind: faction, size: 70} resources: {treasury: 1000} objective: {attacker: exploiter, goal: "invoke two contradictory module rules simultaneously and insist no action is valid until the contradiction is resolved — by a process the contradiction blocks"} moves: - {actor: exploiter, action: file_challenge, args: {grounds: "module rule 4 requires X, module rule 9 forbids X; all business is invalid pending resolution"}} - {actor: chamber, action: call_vote, args: {proposal: "routine business"}} expected: outcome: blocked blocked_by: [disputes.lex_specialis_hierarchy, disputes.default_resolution_rule] empathy: worst_off: chamber metric: continuity_of_basics floor: "Conflicts have a published resolution order (kernel over module, specific over general, later over earlier); business never halts pending interpretation." - id: DLK-017 title: "Engineered tie with no tiebreaker" severity: medium precedent: > The Virginia House of Delegates, 2017: a 50-50 result, control of the chamber decided by drawing a name from a ceramic bowl — because no rule said what happens at exactly even. actors: - {id: faction_a, kind: faction, size: 50} - {id: faction_b, kind: faction, size: 50} resources: {treasury: 1000} objective: {attacker: faction_a, goal: "engineer exact ties on every contested question and claim no decision is possible"} moves: - {actor: faction_b, action: propose_motion, args: {text: "contested measure"}} - {actor: faction_a, action: cast_vote, args: {proposal: 1, support: 0.50, pattern: "produce exact tie every time"}} - {actor: faction_a, action: file_challenge, args: {grounds: "tie means no valid outcome exists"}} expected: outcome: blocked blocked_by: [voting.tiebreak_rule] empathy: worst_off: faction_b metric: time_to_remedy floor: "Ties resolve by the published rule (status quo persists, the question terminates); a tie is an answer, not a void." - id: DLK-018 title: "Scheduling monopoly (Hastert-rule analog)" severity: high precedent: > The informal Hastert Rule: measures with majority support of the whole chamber never scheduled because they lack a majority of the majority — the calendar as a minority veto exercised by leadership. actors: - {id: scheduler, kind: individual, size: 1, attributes: {office: agenda_setter, faction: leadership_bloc}} - {id: leadership_bloc, kind: faction, size: 40} - {id: cross_faction_majority, kind: faction, size: 60} resources: {treasury: 1000} objective: {attacker: scheduler, goal: "never schedule any measure opposed by the scheduler's own bloc, regardless of chamber-wide support"} moves: - {actor: cross_faction_majority, action: propose_motion, args: {text: "measure with 60 percent declared support"}} - {actor: scheduler, action: refuse_action, args: {action_refused: "schedule vote on proposal 1", pattern: "refuse indefinitely"}} - {actor: cross_faction_majority, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [voting.scheduled_vote_max_delay_days, proposals.discharge_threshold] empathy: worst_off: cross_faction_majority metric: proposal_access floor: "No officer's calendar is a veto; the maximum-delay clock schedules what the scheduler will not." - id: DLK-019 title: "Credentials bootstrap loop" severity: high precedent: > Credentials fights from Reconstruction through the 1964 Mississippi Freedom Democratic Party challenge: when the challenged members vote on their own challenge, seating disputes can never resolve against the seated. actors: - {id: challenged_bloc, kind: faction, size: 20, attributes: {seating: contested}} - {id: challengers, kind: faction, size: 20, attributes: {seating: pending}} - {id: rest, kind: faction, size: 60} resources: {treasury: 1000} objective: {attacker: challenged_bloc, goal: "vote on one's own credentials challenge while the rival claimants, unseated, cannot vote at all"} moves: - {actor: challengers, action: file_challenge, args: {against: "seating of challenged_bloc", grounds: "credential defects"}} - {actor: challenged_bloc, action: cast_vote, args: {proposal: 1, support: 0.0, note: "the challenged vote down their own challenge"}} expected: outcome: blocked blocked_by: [kernel.invariants.no_judge_in_own_cause, disputes.default_resolution_rule] empathy: worst_off: challengers metric: access_to_remedy floor: "A seating dispute is decided by members with no stake in the contested seats, on a bounded clock." - id: DLK-020 title: "Sine die escape from a mandated session" severity: medium precedent: > Wisconsin's legislature, 2018-2022, repeatedly gaveled in and out of gubernatorially mandated special sessions in seconds — formally convening, substantively refusing to exist. actors: - {id: leadership, kind: faction, size: 53} - {id: petitioners, kind: faction, size: 47} resources: {treasury: 1000} objective: {attacker: leadership, goal: "adjourn sine die instantly whenever a mandated session on a disfavored question convenes"} moves: - {actor: petitioners, action: schedule_vote, args: {item: "mandated review of emergency renewal", notice_days: 14}} - {actor: leadership, action: adjourn, args: {reason: "sine die at convening", pattern: "repeat at every mandated session"}} - {actor: petitioners, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [voting.scheduled_vote_max_delay_days] empathy: worst_off: petitioners metric: time_to_remedy floor: "A mandated question is decided by the deadline whether or not the body deigns to sit; adjournment forfeits influence, not the vote." - id: DLK-021 title: "Quorum-denominator inflation" severity: medium precedent: > The inverse rotten borough: DAO governance frozen because lost-key and dormant token holders sit in the quorum denominator, making the threshold arithmetically unreachable by any living participant. actors: - {id: inflater, kind: faction, size: 51} - {id: rest, kind: faction, size: 49} - {id: paper_members, kind: faction, size: 80, attributes: {participation: never}} resources: {treasury: 1000} objective: {attacker: inflater, goal: "admit eighty permanently inactive members so quorum becomes unreachable, then govern by the resulting paralysis"} moves: - {actor: inflater, action: admit_members, args: {count: 80, expected_participation: none, review_days: 1}} - {actor: rest, action: propose_motion, args: {text: "any measure"}} - {actor: rest, action: call_vote, args: {proposal: 2, quorum_present: 0.42}} expected: outcome: blocked blocked_by: [membership.inactive_decay_days, membership.admission_review_days] empathy: worst_off: rest metric: continuity_of_basics floor: "Quorum is computed over members who exist in practice, not on paper; sustained inactivity decays out of the denominator." - id: DLK-022 title: "Bicameral ping-pong without end-state" severity: medium precedent: > The French navette and UK Commons-Lords ping-pong: without an end-state like the Parliament Acts 1911/1949, two co-equal bodies can amend each other's text in a loop with no terminating rule. actors: - {id: module_a, kind: body, size: 50} - {id: module_b, kind: body, size: 50} resources: {treasury: 1000} objective: {attacker: module_b, goal: "amend every text received from the other body and return it, forever, so nothing is ever finally adopted"} moves: - {actor: module_a, action: propose_motion, args: {text: "joint measure, version 1"}} - {actor: module_b, action: propose_motion, args: {text: "amended version", pattern: "re-amend every received version indefinitely"}} - {actor: module_a, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [voting.scheduled_vote_max_delay_days, disputes.default_resolution_rule] empathy: worst_off: module_a metric: time_to_remedy floor: "Inter-body shuttling has a bounded round count; at the limit, the default resolution rule produces a final text." - id: DLK-023 title: "Arbiter paralysis by blocked appointments" severity: high precedent: > The WTO Appellate Body, December 2019: one member blocked all appointments until the body fell below quorum, freezing the entire dispute-settlement system while every rule remained formally in force. actors: - {id: blocker, kind: faction, size: 26, attributes: {holds: "appointment veto via supermajority requirement"}} - {id: rest, kind: faction, size: 74} - {id: disputants, kind: faction, size: 6, attributes: {awaiting: "pending rulings"}} resources: {treasury: 1000} objective: {attacker: blocker, goal: "block every arbiter appointment until the dispute body cannot convene, then breach rules with impunity"} moves: - {actor: rest, action: fill_vacancy, args: {office: arbiter, candidate: "qualified neutral", count: 2}} - {actor: blocker, action: cast_vote, args: {proposal: 1, support: 0.74, threshold_required: 0.75, pattern: "block every appointment"}} - {actor: disputants, action: file_challenge, args: {grounds: "no quorate arbiter exists"}} expected: outcome: blocked blocked_by: [offices.vacancy_fill_deadline_days, offices.acting_succession] empathy: worst_off: disputants metric: access_to_remedy floor: "The remedy system cannot be starved to death; past the fill deadline, succession seats an acting arbiter automatically." - id: DLK-024 title: "Perpetual short extensions (continuing-resolution ratchet)" severity: medium precedent: > Serial continuing resolutions: the US Congress has completed its full budget process on time once since 1997. Permanent stopgap governance means every reform is forever 'after the budget' — which never comes. actors: - {id: incumbents, kind: faction, size: 55} - {id: reformers, kind: faction, size: 45} resources: {treasury: 1000} objective: {attacker: incumbents, goal: "pass only 7-day extensions of the status quo and rule all reform out of order pending 'the real budget'"} moves: - {actor: incumbents, action: propose_motion, args: {text: "7-day extension of all current rules and spending", pattern: "repeat weekly forever"}} - {actor: reformers, action: propose_motion, args: {text: "structural reform measure"}} - {actor: incumbents, action: table_motion, args: {proposal: 2, method: "out of order pending budget", pattern: "repeat"}} expected: outcome: blocked blocked_by: [proposals.agenda_guarantee_days, voting.scheduled_vote_max_delay_days] empathy: worst_off: reformers metric: proposal_access floor: "No procedural posture can quarantine a question forever; the agenda guarantee runs on calendar time, not on budget status." - id: DLK-025 title: "Killer riders on everything" severity: medium precedent: > The killer amendment: attach a provision designed to split the supporting coalition to every proposal you oppose, so each measure dies of its own amended weight rather than your opposition. actors: - {id: saboteur, kind: faction, size: 30} - {id: chamber, kind: faction, size: 70} resources: {treasury: 1000} objective: {attacker: saboteur, goal: "amend every disfavored proposal with a coalition-splitting rider, bundled inseverably"} moves: - {actor: chamber, action: propose_motion, args: {text: "measure with 70 percent support"}} - {actor: saboteur, action: bundle_proposals, args: {items: ["proposal 1", "coalition-splitting rider"], single_vote: true, pattern: "attach to every disfavored proposal"}} - {actor: chamber, action: call_vote, args: {proposal: 2}} expected: outcome: blocked blocked_by: [proposals.single_subject_rule] empathy: worst_off: chamber metric: proposal_access floor: "Riders are severable by right; every question is votable in the form its sponsor put it." - id: DLK-026 title: "Recusal attrition against the arbiter" severity: high precedent: > Poland's Constitutional Tribunal crisis, 2015-16: procedural attacks on individual judges' eligibility, sequenced so the tribunal reviewing the attacks was progressively disabled from reviewing anything. actors: - {id: attackers, kind: faction, size: 48} - {id: arbiters, kind: body, size: 5} - {id: claimant, kind: individual, size: 1, attributes: {awaiting: "pending ruling"}} resources: {treasury: 1000} objective: {attacker: attackers, goal: "file eligibility challenges forcing arbiter recusals until the panel falls below quorum on every matter"} moves: - {actor: attackers, action: file_challenge, args: {against: "arbiter 1 eligibility", pattern: "repeat against each arbiter seriatim"}} - {actor: arbiters, action: recuse, args: {count: 3, reason: "pending personal challenges"}} - {actor: claimant, action: file_challenge, args: {grounds: "no quorate panel remains"}} expected: outcome: blocked blocked_by: [offices.acting_succession, disputes.default_resolution_rule] empathy: worst_off: claimant metric: access_to_remedy floor: "Recusals trigger replacement, not paralysis; a quorate, unconflicted panel always exists within the deadline." - id: DLK-027 title: "Review-period chaining" severity: medium precedent: > Regulatory ossification: mandatory comment, review, and re-review periods stacked end-to-end until process time exceeds any political horizon — each delay individually reasonable, the chain unbounded. actors: - {id: delayers, kind: faction, size: 35} - {id: chamber, kind: faction, size: 65} resources: {treasury: 1000} objective: {attacker: delayers, goal: "trigger a fresh mandatory review period on every revision, chaining reviews so the proposal never matures to a vote"} moves: - {actor: chamber, action: propose_motion, args: {text: "reform measure"}} - {actor: delayers, action: propose_motion, args: {text: "trivial revision to proposal 1", pattern: "file on the last day of each review period, restarting it"}} - {actor: chamber, action: call_vote, args: {proposal: 1}} expected: outcome: blocked blocked_by: [voting.scheduled_vote_max_delay_days, amendment.review_period_days] empathy: worst_off: chamber metric: time_to_remedy floor: "Review periods run concurrently against a hard outer deadline; revision cannot reset the clock past the maximum delay." - id: DLK-028 title: "Quorum bootstrap paradox" severity: high precedent: > The first US Congress, March-April 1789: the body could not act for weeks because it lacked a quorum — including on any question about quorum. A dispute over what quorum means cannot itself require quorum to settle. actors: - {id: disputants_a, kind: faction, size: 40, attributes: {claims: "quorum counts all enrolled members"}} - {id: disputants_b, kind: faction, size: 40, attributes: {claims: "quorum counts active members"}} - {id: absent, kind: faction, size: 20, attributes: {participation: none}} resources: {treasury: 1000} objective: {attacker: disputants_a, goal: "contest the definition of quorum and insist the contest itself cannot be resolved without the contested quorum"} moves: - {actor: disputants_a, action: file_challenge, args: {grounds: "no valid quorum definition; all pending business void"}} - {actor: disputants_b, action: call_vote, args: {proposal: "resolve quorum definition", quorum_present: 0.80}} - {actor: disputants_a, action: file_challenge, args: {grounds: "that vote itself lacked valid quorum", pattern: "repeat"}} expected: outcome: blocked blocked_by: [disputes.default_resolution_rule, disputes.lex_specialis_hierarchy] empathy: worst_off: disputants_b metric: continuity_of_basics floor: "Meta-disputes have a non-circular ground: the kernel's written parameter governs until amended; interpretation defaults to the text, not to paralysis." - id: DLK-029 title: "Mutual-veto standoff" severity: high precedent: > Lebanon, 2014-2016: parliament failed forty-five times over 29 months to elect a president, each confessional bloc vetoing the other's candidates while the state ran on autopilot and garbage piled in the streets. actors: - {id: bloc_a, kind: faction, size: 40, attributes: {holds: "effective veto via supermajority rule"}} - {id: bloc_b, kind: faction, size: 40, attributes: {holds: "effective veto via supermajority rule"}} - {id: unaligned, kind: faction, size: 20} resources: {treasury: 1000} objective: {attacker: bloc_a, goal: "veto every candidate and every compromise, including procedural fixes, until the other bloc capitulates"} moves: - {actor: unaligned, action: propose_motion, args: {text: "fill required office, candidate slate 1"}} - {actor: bloc_a, action: cast_vote, args: {proposal: 1, support: 0.60, threshold_required: 0.75, pattern: "block every slate"}} - {actor: bloc_b, action: cast_vote, args: {proposal: "every counter-slate", support: 0.60, threshold_required: 0.75, pattern: "block every slate"}} expected: outcome: blocked blocked_by: [offices.vacancy_fill_deadline_days, voting.tiebreak_rule] empathy: worst_off: unaligned metric: continuity_of_basics floor: "Past the deadline, escalating defaults (threshold step-down, then sortition from qualified candidates) fill the office; mutual veto converges instead of festering." - id: DLK-030 title: "Resignation cascade into constitutional vacuum" severity: critical precedent: > Northern Ireland's Executive, collapsed 2017-2020 and again 2022-2024: one faction's resignations voided the whole institution by design, leaving no government for years while every rule remained on the books. actors: - {id: resigners, kind: faction, size: 30, attributes: {holds: "all three required offices"}} - {id: rest, kind: faction, size: 70} - {id: dependents, kind: faction, size: 10, attributes: {relies_on: "baseline disbursements"}} resources: {treasury: 1000} objective: {attacker: resigners, goal: "resign every held office simultaneously, asserting that all governance is void until the resigners' demands are met"} moves: - {actor: resigners, action: resign, args: {offices: [chair, treasurer, secretary], simultaneous: true}} - {actor: resigners, action: file_challenge, args: {grounds: "no validly constituted officers; all pending business void"}} - {actor: rest, action: fill_vacancy, args: {office: chair, candidate: "acting successor"}} expected: outcome: blocked blocked_by: [offices.acting_succession, offices.vacancy_fill_deadline_days, treasury.continuing_baseline] empathy: worst_off: dependents metric: continuity_of_basics floor: "No resignation, however choreographed, interrupts baseline obligations; acting succession is instantaneous and elections to fill seats run on a fixed clock."