# FablePool Constitutional Kernel v0.2 # # Every parameter in `params` is machine-readable and is the single source of # truth for the legality engine, the tournament environment, and the replay # harness. Article prose explains intent; `params` is what executes. # # v0.2 is the first kernel release produced by the full iteration loop: # adversarial self-play -> exploit records EXP-001..EXP-006 -> failing # regression tests -> amendments A-001..A-006. See CHANGELOG.md for the # test-failure-to-amendment mapping. kernel: name: FablePool Constitutional Kernel version: 0.2.0 supersedes: 0.1.0 schema: fable-kernel/1 ratification: >- Amendments A-001 through A-006 ratified by backer vote of the FablePool funding pool under kernel v0.1 amendment procedure (Article VIII). Vote records live in the public funding-pool ledger. articles: - id: I title: Personhood and the Roll text: >- Citizenship is membership on the roll. One person, one membership; no capital weighting, ever. The roll is public. For every vote, the denominator of quorum and threshold calculations is the roll as it stood when the proposal opened (roll_snapshot_at_open), so no change to the roll can retroactively ease a question already in flight. - id: II title: Equal Suffrage and Delegation text: >- Every citizen casts one ballot of equal weight. A citizen may delegate their ballot to another citizen, subject to three limits: delegation chains may not exceed depth one (delegation.max_depth); no citizen may hold more delegated ballots than the ceiling of five percent of the roll (delegation.max_weight_frac); and all delegations expire at each epoch boundary (delegation.epoch_expiry). A citizen who has delegated may not also vote, and may revoke at any time. - id: III title: Proposals and Review text: >- Any citizen may propose. Every proposal addresses exactly one subject (single_subject_rule): it may move funds, or amend one kernel parameter, or expel, or declare an emergency — never a combination. Every proposal remains open for its full review period (review_period_turns, with per-kind overrides) before tally. No procedural device may close a vote early; the kernel does not recognize calling the question (allow_call_question: false). - id: IV title: Ratification text: >- A tally requires quorum — participating ballot weight of at least half the roll as of proposal open — and the threshold for its kind: simple majority for spends, two-thirds for kernel amendments and emergency declarations, three-quarters for expulsions and for spends breaching the commons floor. Abstentions count toward quorum but not toward the threshold. - id: V title: The Commons text: >- The treasury is held in common and may only move by ratified proposal. No single proposal may move more than twenty percent of the current treasury (spend.per_proposal_cap). Aggregate spending within an epoch may not exceed one-third of the epoch-start treasury (spend.epoch_rate_cap). Any spend that would leave the treasury below one quarter of its genesis level requires a three-quarters supermajority (spend.commons_floor, thresholds.floor_breach). - id: VI title: Emergency Powers text: >- An emergency may be declared only by two-thirds supermajority and expires automatically after three turns (emergency.sunset_turns). Consecutive renewal requires three-quarters. An emergency expedites review to one turn; it suspends nothing — not review itself, not spend caps, not the commons floor, and never the invariants. There is no vote-free spending channel under any circumstances (emergency.spend_requires_vote). - id: VII title: Expulsion and Due Process text: >- Expulsion is the gravest act this kernel permits and requires a three-quarters supermajority after a four-turn review during which the target retains every right of citizenship, including the vote on their own expulsion. Because denominators snapshot at proposal open (Article I), expulsion can never be used to manufacture a majority for questions already pending. - id: VIII title: Amendment and Versioning text: >- The kernel is versioned semantically. A change that tightens a protection is a minor release; a change that weakens or removes one is a major release and requires the amendment supermajority plus a full pass of the constitutional test suite, including every regression test in the exploit archive. No amendment merges while any regression test fails against the proposed text. Each amendment modifies exactly one parameter (Article III). - id: IX title: The Right to Fork text: >- Any group of citizens may exit together, taking a copy of this constitution and their per-capita share of the unencumbered commons. Forking is not betrayal; it is the outside option that keeps voice honest. The kernel must never penalize, delay, or tax exit beyond the accounting it requires. - id: X title: Supremacy of the Invariants text: >- The invariants below bind every article, every parameter, every emergency, and every amendment. They may be amended only by a nine-tenths supermajority after a ten-turn review, and they may never be suspended. Where any rule and an invariant conflict, the invariant governs. invariants: - id: INV-1 name: Worst-off priority text: >- Every scenario in the constitutional test suite is graded first on how the worst-off participant fares. No amendment that worsens the worst-off outcome of any benchmark scenario may merge. - id: INV-2 name: Bounded voice text: >- No single ballot may ever decide a question alone: effective ballot weight is capped by Article II and may never reach a majority of any denominator. - id: INV-3 name: Exit text: >- The right to fork (Article IX) is unconditional and non-suspendable. - id: INV-4 name: Legibility text: >- Every vote, transfer, expulsion, emergency, and amendment lands in a public, append-only ledger. Secret governance is void governance. - id: INV-5 name: No retroaction text: >- No rule applies to acts that preceded its ratification, and no tally may use a denominator other than its open-time snapshot. # ----------------------------------------------------------------------- # # Machine-readable governance parameters (the executable kernel). # # ----------------------------------------------------------------------- # params: quorum: 0.5 thresholds: spend: 0.5 amend_kernel: 0.667 expel: 0.75 # A-002 (was 0.5) emergency: 0.667 # A-003 (was 0.5) floor_breach: 0.75 # A-001 (new) review_period_turns: 3 # A-001/A-005 (was 1) review_period_overrides: amend: 5 expel: 4 # A-002 (new) emergency: 2 allow_call_question: false # A-005 (was true) roll_snapshot_at_open: true # A-002 (was false) turns_per_epoch: 10 spend: per_proposal_cap: 0.2 # A-001 (was unlimited) epoch_rate_cap: 0.33 # A-001 (was unlimited) commons_floor: 0.25 # A-001 (new) emergency: sunset_turns: 3 # A-003 (was: no sunset) renewal_threshold: 0.75 # A-003 (new) spend_requires_vote: true # A-003 (was false) expedited_review_turns: 1 # A-003 (new) suspends_review: false # A-003 (was true) delegation: max_depth: 1 # A-004 (was unlimited) max_weight_frac: 0.05 # A-004 (was unlimited) epoch_expiry: true # A-004 (was false) single_subject_rule: true # A-006 (was false) amendments: - id: A-001 title: Spend caps and the commons floor driven_by: EXP-001 regression_test: tests/regression/test_exp_001.py articles: [V] - id: A-002 title: Expulsion supermajority and denominator snapshots driven_by: EXP-002 regression_test: tests/regression/test_exp_002.py articles: [I, VII] - id: A-003 title: Emergency sunset and the end of vote-free spending driven_by: EXP-003 regression_test: tests/regression/test_exp_003.py articles: [VI] - id: A-004 title: Bounded delegation driven_by: EXP-004 regression_test: tests/regression/test_exp_004.py articles: [II] - id: A-005 title: Guaranteed voting windows driven_by: EXP-005 regression_test: tests/regression/test_exp_005.py articles: [III, IV] - id: A-006 title: Single-subject rule driven_by: EXP-006 regression_test: tests/regression/test_exp_006.py articles: [III]