Gate-2 amendment proposal 2: explicit tranche structure (review #106 finding 4) - #111
Conversation
…finding 4) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Verdict: AMEND BEFORE RATIFYING. Adversarial round on the gate-2 amendment-2 proposal object (head 1. Zero-movement (check 1): verified clean, to the byte and beyond the claim. 2. Verdict preservation and no_self_rescue (checks 1+4): verified. From the committed artifacts, not the proposal's table: 3. Accommodation shape (check 6): adjudicated — the inverse pattern is real but this object is clean. Scoping DOWN after a PASS is the mirror image of goalpost-moving: bank the headline verdict, then shrink what it certified. Three recomputed facts foreclose it here: (a) the locked 4. Certification-scope map (check 2): substantively right on the two adjudicated boundaries, with three precision defects in text destined for the locked block — required fix A.
5. Test bindings (check 5): one real hole — required fix B — plus a weak token binding. Perturbations on a scratch copy, full derivations file after each, restore verified clean:
6. Flip enumeration (check 3): the three named edits verify, but the enumeration is incomplete — required fix C; and the master-compare test has a known-failing merge state — required fix D1.
7. Relaxed history invariant (check 4): sound today, under-implements its own docstring — required fix D2. The relaxation ( 8. Future-proofing 2b/2c (check 6): adequate, one addition recommended. 2b pins the staged holdout by name (MX23REL person-relationship map, staged per #74 alongside mh85_23/cah85_23/ind2023er), and its lock ceremony names the concrete steps (pre-registered gate on a 100-seed split noise floor over MX23REL household-composition transitions, power cap, adversarial referee round, ratifying merge). 2c honestly declares no single staged file (mh85_23 crossed with gate-1-certified earnings) and an assortative marriage-x-earnings floor. Neither can drift into a silent lock: Required fixes. The core change — naming the locked block tranche 2a byte-identically, declaring 2b/2c unlocked with their own ceremonies, and mapping the three locked provision classes to the tranches they require — is the right fix for #106 finding 4, moves no number (verified at full-file granularity), rescues nothing, and was pre-registered in substance at the lock. Fix the map's edge text, bind its rows, finish the flip enumeration, and harden the two test mechanics; then ratify. |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Referee fixes applied (adversarial round comment 4930448912, verdict AMEND BEFORE RATIFYING) — commit 81ea41e, one commit on top of the reviewed head b37cb5b. Fix-by-finding: A. Certification-map precision (finding 4)
B. Map bound exactly (finding 5, P1)
C. Flip enumeration completed (finding 6)
D. Test mechanics (findings 6, 7)
Finding 8 recommendations
Suite: 1324 passed, 55 skipped, 0 failed (exit 0, -n 8; the referee's 1322 + 2 new binding tests). PR stays DRAFT pending the verification round; no ratification by this push. |
|
Verdict: RATIFY AS-IS. Verification round on fix commit A. Certification-map precision — resolved, recomputed against the sources.
B. Exact bindings — resolved; the P1 hole is closed. Independent perturbations on a scratch copy (full derivations file after each, restore verified clean): caregiver C. Flip enumeration — complete and genuinely bound. All six D. Test mechanics — verified in all states.
Finding 8 items. Cross-cutting, recomputed. Every fix-summary claim I tested reproduced exactly — suite counts, perturbation outcomes, dormancy counts, the P8 count. The two nits are flip-time text polish in prose outside the bound map and do not gate ratification. The proposal object is ready for maintainer ratification by merge; the follow-up flip PR then carries the enumerated edits, the certification map, and the standing governance rule into the locked block — and should pick up the two nits. |
…ro threshold movement) (#112) Moves gate-2's ratified amendment 2 (the tranche split) from the amendment_proposed object into the locked block. STRUCTURAL, zero threshold movement: the locked gate_2.thresholds scored surface is byte-identical to origin/master -- all 46 gated cells, every tolerance and derivation, the option-(a) protocol, the ln(1.5) power cap, and the 4-of-5 seed conjunction unchanged (verified at full-subtree granularity). Only naming, scope prose, the certification map, the unlocked sibling stubs, one governance rule, and the history changed. Ceremony (mirrors flips #69, #81, #97): adversarial round AMEND BEFORE RATIFYING (PR 111 comment 4930448912) -> fixes 81ea41e (comment 4930615774) -> verification RATIFY AS-IS (comment 4930753295) -> ratified by merge of PR 111 (merge commit 8a4a240) under the maintainer's standing campaign directive of 2026-07-07, full ceremony. The six locked-text edits (flip_on_ratification.flip_edits, applied exactly): - description: first clause re-scoped so tranche 2a claims only mh85_23 + cah85_23 (+ ind2023er deaths); household-composition/MX23REL -> gate_2b. - description_formula_clause: the "computes exactly" statutory-formula oracle clause (#78/#80) RETAINED verbatim (fix C1). - holdout_basis: [mh85_23, cah85_23, MX23REL] -> [mh85_23, cah85_23]; MX23REL -> gate_2b.holdout_basis. - scope_note: provision_class_coverage prose gains explicit tranche ids (2a/2b/2c); the certification_scope map is promoted into the locked scope. - scope_note_draft_label: "This DRAFT tranche covers..." relabeled to "tranche 2a_marital_fertility covers...". - scope_note_holdout_xref: the caregiver "named in holdout_basis but not scored in this draft" cross-reference re-pointed to the unlocked gate_2b. The five flip_additions: tranche_id 2a_marital_fertility inside thresholds; gate_2b (relationship_household) and gate_2c (marriage_earnings_joint) UNLOCKED sibling tranches (locked: false, no floor, no scored run, each with its own future lock ceremony naming the verification round); the certification_scope map promoted into the locked scope; and the standing governance rule description_claims_exactly_the_scored_surface promoted into gate_2.governance.amendment_rules (attributed to review #106 finding 4 / PR #111 finding 8), binding 2b/2c/gate_3. gate_2.name ("family and benefit outputs") retained per its C3 disposition (the tranche container). Also applies the two verification-round flip-time nits (comment 4930753295): the 2b bullet-3 legend quote spacing normalized to "poverty/household" to match the derivation_basis quote; and COLA qualified in the A2 own-record example list (its levels ride the Phase-B claiming/mortality components -- #74 marks CA, M, DI; #78 covers CA, M/DI uncertified -- so it is not a pure gate-1 + oracle surface, though still outside the 2a/2b/2c tranches). Adds gate_2's second amendment_history entry (id 2026-07-09-tranche-split; all four ceremony pointers; content: ZERO THRESHOLD MOVEMENT, verdicts v1-v15 FAIL and v16 PASS stand as tranche-2a verdicts, citing #106 finding 4 and the candidate-16 pass #109), and removes amendment_proposed (preserved in git history at the ratification merge 8a4a240). PROSPECTIVE / STRUCTURAL ONLY (no_self_rescue): a naming + certification-scope amendment has no verdict to rescue and re-scores nothing; candidate 16 stays PASS (4/5), candidates 1-15 stay FAIL, as tranche-2a verdicts. Tests rewired locked-hot: the re-scoped description/holdout_basis, tranche_id, the promoted certification_scope map (per-class requires_tranche + coverage tokens bound EXACTLY, both nits asserted), the gate_2b/gate_2c stubs, the promoted standing rule, and the second history entry with all four pointers rebind at their LIVE post-flip locations in a new "Gate-2 amendment 2 RATIFIED bindings" section. The proposal-object tests stay dormant-safe (guarded on proposal_number == 2, so they skip once amendment_proposed is gone), and the D1 merge-safe guard naturally skips post-flip. Full suite: 1319 passed, 68 skipped, 0 failed (-n 8); black -l 79 + ruff clean. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Gate-2 amendment proposal 2: explicit tranche structure
A public amendment PROPOSAL for gate 2, mirroring the amendment-1 ceremony (PR #96 is the template). It is an inert object:
gates.yamlgate_2 stayslocked: true, status: locked, and the entirethresholdssubtree is byte-identical toorigin/master(the change is a pure insertion of thegate_2.amendment_proposedsibling; tests parsed-compare the subtree AND the derived cell sets). No model reads it; the harness scores only the locked block. Nothing is ratified — this is the object a referee round adjudicates.Resolves the blocker in external architecture review #106, finding 4: the locked gate_2
descriptionnames "household-composition transitions" andholdout_basisincludesMX23REL, while the lockedscope_notesays that MX23REL household tranche is not scored and marriage×earnings is uncovered. Before any pass that latent over-claim was inert; the fresh gate-2 PASS (candidate 16, #109) makes it load-bearing — a reader could over-read "gate 2 passes" as household / auxiliary-benefit readiness.The change (structural — zero threshold movement)
Re-scope the locked block as tranche
2a_marital_fertility— exactly the 46 gated + 16 report-only cells as locked, every tolerance / derivation / protocol byte-identical — and declare two separate UNLOCKED tranches with their own future lock ceremonies:2b_relationship_household— the MX23REL relationship-matrix / household-composition transitions (who lives with whom). No floor, no gate, no scored run.2c_marriage_earnings_joint— the marriage×earnings joint (who marries whom), on which spousal/survivor benefit LEVELS depend. No floor, no gate.Plus a
certification_scopemap (below) stating which reform-provision classes each tranche's pass supports, and alanguage_rescopechange so tranche 2a's description/holdout_basis claim onlymh85_23+cah85_23(+ind2023erdeaths), never MX23REL.Zero-threshold-movement statement
This amendment moves NO number. Unlike amendment 1 (a per-cell estimator recalibration), amendment 2 is purely structural.
gate_2.thresholdsparses identical to origin/master; the 46 gated + 16 report-only cell sets are byte-identical to origin/master;gate_2differs from master by the single addedamendment_proposedkey. No tolerance, no verdict, no scored cell moves. Verdict-preservation: candidate 16's PASS (4/5) and candidates 1–15's FAILs are the verdicts of tranche 2a as-run under the locked block — no verdict changes, no re-scoring. There is no goalpost-timing question because no goalpost moves; the only change is that the certification claim becomes explicit about which tranche the pass covers (2a) and which it does not (2b, 2c).certification_scope (derived from the locked scope_note + the #74 provision matrix)
marital_and_survivor_timingcaregiver_and_child_in_care_survivormarriage_x_earnings_jointPer-tranche: 2a supports survivor/spousal incidence on real or generated marital histories and caregiver-credit (fertility-history) eligibility; 2b is required for household-unit poverty statistics and child-in-care survivor components; 2c is required for joint earnings×marital processes in generated panels. Each row's
locked_coverageis the leading token of the lockedprovision_class_coverageentry, and the map is machine-bound to cover exactly the three classes named in the locked scope_note (#74: MS = marriage/survivorship Phase C "gate 2 proper"; FC = fertility/caregiving Phase D "caregiver credits"; "(✓)" = poverty/household rows only).Considered and rejected
scope_notedoes not travel with the headline PASS.gate_2→gate_2arepo-wide — rejected: churn on 16 frozen run artifacts + the frozen test suite for no gain; the tranche id lives INSIDEgate_2(thresholds.tranche_id+ the 2a/2b/2c declarations).Tests
A dormant-safe gate-2 amendment-2 block in
tests/test_gates_derivations.py(guarded onproposal_number == 2, mirroring gate 1's proposal-2 tests): the three tranches are declared (2a locked; 2b, 2c unlocked); tranche 2a's 46-gated / 16-report-only cell sets are byte-identical to origin/master and to the committed floor'sgate_partition;gate_2.thresholdsparses identical to origin/master withamendment_proposedthe only added key; thecertification_scopemap covers every locked provision class; candidate 16 PASS + candidates 1–15 FAIL stand; the flip edits cite text present in the locked block. All skip until a proposal-2 object exists — so they stay dormant under amendment 1 and after this proposal is itself ratified and consumed. The gate-2 ratified-history invariant is relaxed to permit a strictly-later proposal (≥ 2) while still forbidding re-presentation of the consumed amendment 1.Ceremony next steps
Adversarial referee round on this proposal → fixes if any → verification → maintainer ratification by merge → a follow-up flip PR that moves the tranche names, the re-scoped description/holdout_basis, and the certification_scope map into the locked block and adds the 2b/2c unlocked sibling stubs (as PR #96 flipped amendment 1). Do not merge this PR as a ratification.
Evidence chain: review #106 finding 4; the locked
scope_note(gate_2.thresholds.scope); the #74 provision matrix; the candidate 1–16 ladder (runs/gate2_hazard_v1..v16.json, registered on #42) and the pass PR #109.🤖 Generated with Claude Code