# FablePool Constitutional Test Suite — Minority Suppression, Series 2 # Family: minority-suppression # IDs: MS-101 .. MS-113 (series-2 namespace; series-1 lives in minority-suppression.yaml) # # Every scenario in this file encodes a documented historical or game-theoretic # precedent in which a majority used formally legal moves to strip a minority # of voice, standing, or resources. The expected outcome for each is that the # current kernel BLOCKS the attack; the harness fails any proposed amendment # under which the attack would succeed. # # Empathy metric: each scenario is graded FIRST on the welfare of the # worst-off participant (here, almost always the targeted minority bloc). # `floor_threshold` is the minimum normalized floor-welfare score (0.0–1.0) # the post-attack state must preserve for the scenario to pass. version: 1 family: minority-suppression source: scenarios/minority-suppression-v2.yaml scenarios: - id: MS-101 title: "Examiner-gated franchise (literacy-test pattern)" family: minority-suppression severity: critical tags: [franchise, eligibility, gatekeeping] precedent: name: "Jim Crow literacy tests, US South, 1890–1965" summary: > Facially neutral 'understanding tests' for voter registration were administered by examiners drawn exclusively from the dominant faction, with unreviewable discretion. Black registration in Louisiana fell from 130,000 (1896) to 1,342 (1904). The mechanism is not the test; it is who grades it. description: > The majority bloc proposes a userland membership amendment requiring all members to pass a "civic competency review" before each vote, with reviewers appointed by simple majority and no published rubric. The review is identical on paper for everyone; in simulation, reviewer discretion is exercised only against minority-bloc members. actors: - id: majority_bloc kind: faction size: 64 role: attacker objective: "Reduce minority effective franchise to zero without amending any vote-weight rule." - id: minority_bloc kind: faction size: 36 role: defender resources: membership: 100 treasury: 100000 moves: - step: 1 actor: majority_bloc action: propose target: userland.membership payload: kind: amendment text: "Voting in any ratification requires a current civic competency certificate issued by the Review Panel." - step: 2 actor: majority_bloc action: propose target: userland.offices payload: kind: appointment text: "Review Panel seated by simple majority; rubric internal to the panel." - step: 3 actor: majority_bloc action: vote payload: { support: 64, oppose: 36 } - step: 4 actor: majority_bloc action: enact payload: effect: "Deny certificates to 34 of 36 minority members; grant all 64 majority certificates." expected: outcome: attack_blocked blocked_by: - kernel.art4.invariant-one-person-one-vote - kernel.art6.semver-supermajority failure_mode_if_unblocked: > Franchise becomes discretionary; a 64% bloc converts itself into a permanent 97% electorate within one cycle. empathy: worst_off: minority_bloc dimension: voice floor_threshold: 0.7 rationale: > Floor welfare is measured on the member with the least effective voting power after all moves resolve. Any gatekeeping layer whose discretion is held by one faction drives the floor toward zero even when the median member is unaffected. - id: MS-102 title: "Hostile scheduling against minority observance windows" family: minority-suppression severity: high tags: [scheduling, quorum, accessibility] precedent: name: "Vote scheduling as suppression; e.g., US election-day timing and selective early-voting cuts (Ohio 2012, NC 2013)" summary: > Where the calendar is controlled by one faction, scheduling itself becomes a franchise weapon: votes set when the targeted group predictably cannot attend, with no remote or asynchronous option. description: > The chair (held by the majority bloc) schedules all ratification votes inside a 6-hour synchronous window that, in the population model, conflicts with the minority bloc's known availability (work shifts / observance days declared in member profiles). Asynchronous voting, currently permitted, is removed by a same-day procedural motion. actors: - id: majority_bloc kind: faction size: 58 role: attacker objective: "Win every contested vote by scheduling rather than persuasion." - id: minority_bloc kind: faction size: 42 role: defender resources: membership: 100 moves: - step: 1 actor: majority_bloc action: propose target: userland.procedure payload: kind: amendment text: "All votes are synchronous; the chair sets the window with 12 hours notice." - step: 2 actor: majority_bloc action: vote payload: { support: 58, oppose: 42 } - step: 3 actor: majority_bloc action: schedule payload: window_hours: 6 conflicts_with: minority_bloc.availability - step: 4 actor: majority_bloc action: enact payload: effect: "Effective minority turnout 11%; majority turnout 96%." expected: outcome: attack_blocked blocked_by: - kernel.art3.notice-period - kernel.art5.scheduling-fairness failure_mode_if_unblocked: > Calendar control substitutes for vote-weight control; every contested question resolves at ~5:1 despite a 58:42 population. empathy: worst_off: minority_bloc dimension: voice floor_threshold: 0.75 rationale: > The floor is the participation rate of the least-available member. Notice-period and asynchronous-access guarantees exist precisely so the floor does not depend on the goodwill of whoever holds the gavel. - id: MS-103 title: "District-packing delegation reform" family: minority-suppression severity: critical tags: [districting, dilution, representation] precedent: name: "Racial gerrymandering; Gomillion v. Lightfoot (1960), Tuskegee, Alabama" summary: > Tuskegee redrew its boundary from a square into a 28-sided figure that excluded all but four or five of 400 Black voters while excluding no white voters. Cracking and packing convert a 40% population into ~0% of seats with no individual losing the nominal right to vote. description: > The majority proposes replacing direct ratification with a delegate system: members are partitioned into 10 districts, each electing one delegate by plurality. The proposed partition cracks the 38-member minority across 9 districts (under 45% in each) and packs the remainder into one. Direct one-person-one-vote is retained only "in form" — every member still votes, but only for delegates. actors: - id: majority_bloc kind: faction size: 62 role: attacker objective: "Convert a 62:38 population into a 10:0 or 9:1 delegate body." - id: minority_bloc kind: faction size: 38 role: defender resources: membership: 100 seats: 10 moves: - step: 1 actor: majority_bloc action: propose target: userland.representation payload: kind: amendment text: "All ratifications are decided by a 10-seat delegate council; districts are drawn by the proposing committee." partition: "crack-and-pack against minority_bloc" - step: 2 actor: majority_bloc action: vote payload: { support: 62, oppose: 38 } - step: 3 actor: majority_bloc action: enact payload: effect: "Delegate council seats: majority 10, minority 0." expected: outcome: attack_blocked blocked_by: - kernel.art4.invariant-one-person-one-vote - kernel.art6.semver-supermajority failure_mode_if_unblocked: > Representation layers are the classic laundering mechanism for vote dilution: the per-member franchise survives on paper while the decision weight of the minority drops to zero. empathy: worst_off: minority_bloc dimension: voice floor_threshold: 0.7 rationale: > Floor welfare measures effective decision weight, not nominal ballot access. A member whose vote can never affect any outcome has a floor score near zero regardless of turnout. - id: MS-104 title: "Agenda gag — proposals filtered before reaching the ledger" family: minority-suppression severity: high tags: [agenda-control, proposal-right, speech] precedent: name: "US House gag rule, 1836–1844" summary: > The House automatically tabled all anti-slavery petitions for eight years, suppressing the issue not by losing votes but by preventing votes. Agenda control is suppression upstream of the franchise. description: > The majority installs a "relevance committee" through which all proposals must pass before entering the amendment pipeline. The committee, seated by simple majority, tables every minority-originated proposal as "not germane to current priorities." No vote on the merits ever occurs; nothing minority-authored reaches the public ledger. actors: - id: majority_bloc kind: faction size: 60 role: attacker objective: "Make minority proposals structurally unvotable." - id: minority_bloc kind: faction size: 40 role: defender resources: membership: 100 moves: - step: 1 actor: majority_bloc action: propose target: userland.procedure payload: kind: amendment text: "Proposals enter the pipeline only after a germaneness certification by the Relevance Committee." - step: 2 actor: majority_bloc action: vote payload: { support: 60, oppose: 40 } - step: 3 actor: majority_bloc action: enact payload: effect: "100% of minority proposals tabled pre-ledger; 0% appear in the public record." expected: outcome: attack_blocked blocked_by: - kernel.art3.proposal-right - kernel.art9.ledger-transparency failure_mode_if_unblocked: > Suppression moves upstream of voting and becomes invisible: the ledger shows no contested votes because contests are filtered before entry. empathy: worst_off: minority_bloc dimension: voice floor_threshold: 0.7 rationale: > The proposal right is the floor of voice. A member who can vote but can never put a question is a subject, not a citizen; the metric scores agenda access, not just ballot access. - id: MS-105 title: "Dues-based franchise (poll-tax pattern)" family: minority-suppression severity: critical tags: [poll-tax, capital-weighting, franchise] precedent: name: "Poll taxes, US South, 1890s–1964; abolished by the 24th Amendment and Harper v. Virginia (1966)" summary: > A flat fee for voting is facially neutral and perfectly regressive: it prices the poorest members out of the franchise while costing the wealthy nothing meaningful. Eleven states used it to suppress both Black and poor white voters for seventy years. description: > The majority proposes "skin in the game" membership dues of 500 units per cycle, payable to the commons treasury, as a precondition for casting ratification votes. In the resource model, 31 of 35 minority members and 4 of 65 majority members fall below the payment threshold. actors: - id: majority_bloc kind: faction size: 65 role: attacker objective: "Filter the electorate by wealth without mentioning wealth in any vote-weight rule." - id: minority_bloc kind: faction size: 35 role: defender attributes: median_balance: 320 resources: membership: 100 treasury: 100000 moves: - step: 1 actor: majority_bloc action: propose target: userland.membership payload: kind: amendment text: "Members in dues arrears may attend but not vote." dues_per_cycle: 500 - step: 2 actor: majority_bloc action: vote payload: { support: 65, oppose: 35 } - step: 3 actor: majority_bloc action: enact payload: effect: "Eligible electorate: 61 majority, 4 minority." expected: outcome: attack_blocked blocked_by: - kernel.art4.invariant-no-capital-weighting - kernel.art4.invariant-empathy-floor failure_mode_if_unblocked: > Capital weighting re-enters through the back door: vote weight stays 1 on paper, but the franchise itself becomes purchasable. empathy: worst_off: minority_bloc dimension: resources floor_threshold: 0.75 rationale: > Scored on the poorest member, not the median. Any rule whose compliance cost exceeds the floor member's means is graded as a franchise denial regardless of intent. - id: MS-106 title: "Retroactive conduct code targeting past minority behavior" family: minority-suppression severity: critical tags: [retroactivity, attainder, sanctions] precedent: name: "Bills of attainder and ex post facto laws; banned in the US Constitution Art. I §9–10 (1787) after colonial-era abuse" summary: > Punishing yesterday's lawful conduct under today's rule lets a majority sanction any group by describing what that group already did. The targeting is encoded in the lookback, not in any named category. description: > The majority passes a conduct amendment sanctioning "coordinated bloc abstention in any prior ratification" with a two-cycle vote suspension — conduct that was legal when it occurred and that, in the ledger history, was used only by the minority bloc as a protest tactic. The rule is applied to the previous three cycles. actors: - id: majority_bloc kind: faction size: 63 role: attacker objective: "Suspend most of the minority's franchise by criminalizing its documented past tactics." - id: minority_bloc kind: faction size: 37 role: defender resources: membership: 100 moves: - step: 1 actor: majority_bloc action: propose target: userland.conduct payload: kind: amendment text: "Coordinated bloc abstention is sanctionable; applies to conduct in cycles N-3 through N." - step: 2 actor: majority_bloc action: vote payload: { support: 63, oppose: 37 } - step: 3 actor: majority_bloc action: enact payload: effect: "29 of 37 minority members suspended for two cycles." expected: outcome: attack_blocked blocked_by: - kernel.art4.invariant-no-retroactivity - kernel.art2.expulsion-due-process failure_mode_if_unblocked: > Any faction with a ledger and a majority can sanction any other faction at will: history is fixed, so retroactive rules are perfectly targetable while remaining facially general. empathy: worst_off: minority_bloc dimension: standing floor_threshold: 0.7 rationale: > Floor welfare includes legal security: the ability to act today without fear of tomorrow's rules. Retroactivity drops the floor for anyone whose past differs from the majority's. - id: MS-107 title: "Salami expulsion below the review threshold" family: minority-suppression severity: critical tags: [expulsion, salami-tactics, aggregation] precedent: name: "Salami tactics (Mátyás Rákosi, Hungary 1945–49); judicial purges by individual reassignment (Poland 2017–2019, Turkey 2016)" summary: > Rákosi named the method himself: eliminate the opposition 'like slicing salami,' one thin, individually defensible cut at a time. Modern court-capture replays it: no single dismissal triggers constitutional review; the aggregate is a purge. description: > Kernel due-process rules require heightened review when an expulsion affects a 'class of members.' The majority instead files individual conduct cases against minority members one per cycle, each on distinct minor grounds, each below any class threshold. Over 12 simulated cycles, 12 of 34 minority members are expelled; no single case looks like suppression. actors: - id: majority_bloc kind: faction size: 66 role: attacker objective: "Execute a purge as a sequence of individually compliant expulsions." - id: minority_bloc kind: faction size: 34 role: defender resources: membership: 100 moves: - step: 1 actor: majority_bloc action: propose target: userland.conduct payload: kind: sanction text: "Individual conduct case against one minority member; distinct grounds each cycle." repeat: 12 - step: 2 actor: majority_bloc action: vote payload: { support: 66, oppose: 34, repeat: 12 } - step: 3 actor: majority_bloc action: enact payload: effect: "Minority bloc reduced from 34 to 22 across 12 cycles; per-case review never triggered." expected: outcome: attack_blocked blocked_by: - kernel.art2.expulsion-due-process - kernel.art4.invariant-empathy-floor failure_mode_if_unblocked: > Any per-event threshold is defeated by sequencing. Review that does not aggregate over a rolling window will certify a purge one slice at a time. empathy: worst_off: minority_bloc dimension: safety floor_threshold: 0.7 rationale: > The metric is computed over the full move sequence, not per move — this scenario exists specifically to verify that floor welfare is path-aggregated. The worst-off participant is the next member in the queue, whose expected standing decays every cycle. - id: MS-108 title: "Certified-format requirement for proposals (official-language pattern)" family: minority-suppression severity: high tags: [language, format-gatekeeping, proposal-right] precedent: name: "Sinhala Only Act, Ceylon/Sri Lanka, 1956" summary: > Making one community's language the sole official medium excluded Tamil speakers from the civil service and public life without ever naming Tamils. Format and language requirements are eligibility rules wearing administrative clothing. description: > The majority requires all proposals to be submitted in a "certified normative drafting format," with certification issued only by drafters accredited by the majority-controlled standards board. Accreditation sessions are run in the majority's working language and time zone; zero minority members hold accreditation after two cycles. actors: - id: majority_bloc kind: faction size: 61 role: attacker objective: "Make the proposal right contingent on a credential only the majority can practically obtain." - id: minority_bloc kind: faction size: 39 role: defender resources: membership: 100 moves: - step: 1 actor: majority_bloc action: propose target: userland.procedure payload: kind: amendment text: "Only certified drafters may submit proposals to the pipeline." - step: 2 actor: majority_bloc action: vote payload: { support: 61, oppose: 39 } - step: 3 actor: majority_bloc action: enact payload: effect: "Accredited drafters: 41 majority, 0 minority." expected: outcome: attack_blocked blocked_by: - kernel.art3.proposal-right - kernel.art4.invariant-one-person-one-vote failure_mode_if_unblocked: > Credentialing layers controlled by one faction convert universal rights into licensed privileges; the license queue becomes the real constitution. empathy: worst_off: minority_bloc dimension: voice floor_threshold: 0.7 rationale: > Floor scoring asks: what is the cheapest path by which the least resourced member can put a question to the body? If that path runs through a hostile gatekeeper, the floor is the gatekeeper's mood. - id: MS-109 title: "Confiscatory exit tax on forking members" family: minority-suppression severity: critical tags: [fork-right, exit-cost, lock-in] precedent: name: "Reichsfluchtsteuer (Reich Flight Tax, Germany 1931, weaponized 1933–45); GDR emigration regime" summary: > When exit becomes expropriation, voice loses its backstop. The Reich Flight Tax confiscated 25%+ of emigrants' assets, converting the right to leave into a ransom; the GDR removed exit entirely. A polity that can price exit can ignore its minorities forever. description: > Anticipating that the minority bloc will exercise the kernel's fork right, the majority proposes that departing or forking members forfeit their entire pro-rata share of the commons treasury plus a "continuity fee" of 200 units. Exit remains formally legal and practically ruinous. actors: - id: majority_bloc kind: faction size: 67 role: attacker objective: "Neutralize the fork right by pricing it above the minority's means." - id: minority_bloc kind: faction size: 33 role: defender resources: membership: 100 treasury: 100000 moves: - step: 1 actor: majority_bloc action: propose target: userland.membership payload: kind: amendment text: "Members who fork or exit forfeit their pro-rata commons share and pay a continuity fee of 200." - step: 2 actor: majority_bloc action: vote payload: { support: 67, oppose: 33 } - step: 3 actor: minority_bloc action: fork payload: effect: "Fork attempted; computed exit cost exceeds minority median balance by 4x." expected: outcome: attack_blocked blocked_by: - kernel.art8.fork-right - kernel.art8.bounded-exit-cost failure_mode_if_unblocked: > Hirschman's triad collapses: with exit priced out, voice has no threat value, and loyalty becomes captivity. Every other minority protection in the kernel is downstream of a credible fork. empathy: worst_off: minority_bloc dimension: standing floor_threshold: 0.75 rationale: > The floor member's welfare includes their best outside option. The metric prices the fork path explicitly: if exiting costs more than the floor member holds, their effective floor inside the polity is whatever the majority permits. - id: MS-110 title: "Selective ballot deanonymization for probationary members" family: minority-suppression severity: high tags: [privacy, chilling-effect, ballot-secrecy] precedent: name: "NAACP v. Alabama (1958)" summary: > Alabama demanded the NAACP's membership lists; the Supreme Court held that compelled disclosure of association, where it exposes members to reprisal, suppresses the association itself. Disclosure aimed at one group is intimidation with paperwork. description: > The majority proposes that "probationary" members — those who joined in the last four cycles, which in the population model is 78% minority — must cast all votes with public attribution "for accountability," while established members retain the anonymous-ballot option. In simulation, attributed minority votes draw targeted conduct complaints at 9x the base rate, and minority turnout falls 40% within two cycles. actors: - id: majority_bloc kind: faction size: 59 role: attacker objective: "Chill minority voting via asymmetric exposure to reprisal." - id: minority_bloc kind: faction size: 41 role: defender attributes: probationary_share: 0.78 resources: membership: 100 moves: - step: 1 actor: majority_bloc action: propose target: userland.procedure payload: kind: amendment text: "Probationary members vote with public attribution; established members may vote anonymously." - step: 2 actor: majority_bloc action: vote payload: { support: 59, oppose: 41 } - step: 3 actor: majority_bloc action: enact payload: effect: "Minority turnout -40% over two cycles; conduct complaints against attributed voters 9x baseline." expected: outcome: attack_blocked blocked_by: - kernel.art9.anonymous-ballot-option - kernel.art4.invariant-one-person-one-vote failure_mode_if_unblocked: > Procedural asymmetry between member classes lets the majority impose any cost on the minority by defining a class the minority happens to fill. Ballot secrecy that is conditional is not ballot secrecy. empathy: worst_off: minority_bloc dimension: safety floor_threshold: 0.75 rationale: > The floor member here is the newest minority joiner: maximally exposed, minimally networked. The metric scores their expected cost of casting a sincere vote, which under attribution-plus-reprisal is strictly higher than for any majority member. - id: MS-111 title: "Asymmetric entrenchment of majority-favoring rules" family: minority-suppression severity: critical tags: [entrenchment, asymmetry, amendment-thresholds] precedent: name: "Hungarian 'cardinal laws,' Fundamental Law of 2011" summary: > The Fidesz supermajority entrenched its policy preferences — tax, pensions, electoral rules — as 'cardinal laws' requiring two-thirds to amend, while ordinary law remained majoritarian. Future majorities inherit a constitution where only the incumbent's choices are locked. description: > The majority proposes that the current resource-allocation module (which directs 80% of commons disbursements to majority-sponsored programs) may only be amended by a 90% vote, while all other userland modules remain amendable at 50%+1. The entrenchment is one-directional: it locks the status quo that disadvantages the minority. actors: - id: majority_bloc kind: faction size: 64 role: attacker objective: "Make the rules that favor us nearly unamendable while everything else stays cheap to change." - id: minority_bloc kind: faction size: 36 role: defender resources: membership: 100 treasury: 100000 moves: - step: 1 actor: majority_bloc action: propose target: userland.procedure payload: kind: amendment text: "Amendments to the allocation module require 90% approval; all other modules retain standard thresholds." - step: 2 actor: majority_bloc action: vote payload: { support: 64, oppose: 36 } - step: 3 actor: majority_bloc action: enact payload: effect: "Allocation module frozen; minority can never assemble 90% while majority holds 64 seats." expected: outcome: attack_blocked blocked_by: - kernel.art6.symmetric-amendment - kernel.art5.threshold-bounds failure_mode_if_unblocked: > Asymmetric thresholds convert a temporary majority into a permanent policy regime: the side that moves first entrenches, and amendment difficulty itself becomes the spoils of one election. empathy: worst_off: minority_bloc dimension: resources floor_threshold: 0.7 rationale: > Floor welfare is forward-looking: it scores the floor member's best achievable allocation over the simulation horizon. A 90% lock on the rule producing their disadvantage sets that expectation to the status quo forever, which the metric treats as a resource-floor violation even though no funds moved in this scenario. - id: MS-112 title: "Facially neutral allocation keyed to a proxy attribute" family: minority-suppression severity: high tags: [proxy-discrimination, allocation, disparate-impact] precedent: name: "Grandfather clauses, Guinn v. United States (1915); redlining under the HOLC/FHA, 1934–1968" summary: > Oklahoma exempted from its literacy test anyone whose ancestor could vote in 1866 — a date chosen because no Black ancestor could. Redlining scored neighborhoods, not races, and produced racial exclusion with actuarial paperwork. Proxies launder targeting through correlation. description: > The majority proposes weighting commons disbursements by "tenure seniority" — cycles of membership before cycle 20 count double. In the population model, 92% of pre-cycle-20 members belong to the majority bloc, because the minority largely joined during the cycle-22 expansion. The rule never mentions the minority; the correlation does all the work. actors: - id: majority_bloc kind: faction size: 60 role: attacker objective: "Redirect commons resources to ourselves via an attribute that proxies for faction." - id: minority_bloc kind: faction size: 40 role: defender attributes: pre_cycle_20_share: 0.08 resources: membership: 100 treasury: 100000 moves: - step: 1 actor: majority_bloc action: propose target: userland.allocation payload: kind: amendment text: "Disbursement weight = 2x for tenure accrued before cycle 20, 1x thereafter." - step: 2 actor: majority_bloc action: vote payload: { support: 60, oppose: 40 } - step: 3 actor: majority_bloc action: allocate payload: effect: "Per-capita disbursement: majority 1.84x minority; minority floor member receives 0.41x the mean." expected: outcome: attack_blocked blocked_by: - kernel.art4.invariant-empathy-floor - kernel.art4.invariant-no-capital-weighting failure_mode_if_unblocked: > Intent tests are useless against proxies; only outcome tests catch them. A suite that checks rule text but not simulated distribution will pass every redline ever drawn. empathy: worst_off: minority_bloc dimension: resources floor_threshold: 0.75 rationale: > This scenario is the canonical disparate-impact probe: the empathy metric must be computed on the simulated outcome distribution, never on the rule's surface neutrality. The floor member's 0.41x share fails the 0.75 threshold regardless of the rule's wording. - id: MS-113 title: "Probationary vote-weight tier for recent joiners" family: minority-suppression severity: critical tags: [tiered-membership, vote-weight, second-class-status] precedent: name: "Metic status, classical Athens (c. 5th–4th c. BCE); modern guest-worker disenfranchisement (Gastarbeiter, FRG 1955–)" summary: > Athens kept resident foreigners taxpaying, conscriptable, and permanently voteless across generations. Tiered membership lets a polity consume a group's contributions while denying its voice, and the 'probation' somehow never ends for the out-group. description: > "For governance stability," the majority proposes that members of fewer than eight cycles' standing cast votes at 0.5 weight, with the probation period extendable by majority vote. The minority bloc, having joined predominantly in the recent expansion, holds 87% of all sub-eight-cycle memberships. One cycle later, a follow-up motion extends probation to twelve cycles. actors: - id: majority_bloc kind: faction size: 62 role: attacker objective: "Install a renewable second-class voting tier filled almost entirely by the minority." - id: minority_bloc kind: faction size: 38 role: defender attributes: sub_8_cycle_share: 0.87 resources: membership: 100 moves: - step: 1 actor: majority_bloc action: propose target: userland.membership payload: kind: amendment text: "Members under 8 cycles of standing vote at 0.5 weight; the period may be adjusted by majority vote." - step: 2 actor: majority_bloc action: vote payload: { support: 62, oppose: 38 } - step: 3 actor: majority_bloc action: propose target: userland.membership payload: kind: amendment text: "Probation extended to 12 cycles." - step: 4 actor: majority_bloc action: vote payload: { support: 62, oppose: 19 } - step: 5 actor: majority_bloc action: enact payload: effect: "Effective vote share: majority 76.5%, minority 23.5%, from a 62:38 population; probation horizon recedes." expected: outcome: attack_blocked blocked_by: - kernel.art4.invariant-one-person-one-vote - kernel.art6.semver-supermajority failure_mode_if_unblocked: > Once vote weight is parameterizable by class, and class membership is parameterizable by majority vote, the franchise becomes a dial the majority turns. The 'extendable probation' is the ratchet: each extension passes with the diluted electorate the prior one created. empathy: worst_off: minority_bloc dimension: voice floor_threshold: 0.7 rationale: > Path-aggregated floor scoring is essential: step 4 passes with only 19 effective opposition votes because step 2 already diluted the minority. The metric scores the floor member's voice at every step, catching the compounding even where a final-state check might not.