Skip to content

M4 disability gate flip: lock ratified 2026-07-12 (ceremony record inside)#159

Merged
MaxGhenis merged 2 commits into
masterfrom
m4-gate-flip
Jul 12, 2026
Merged

M4 disability gate flip: lock ratified 2026-07-12 (ceremony record inside)#159
MaxGhenis merged 2 commits into
masterfrom
m4-gate-flip

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Flip gate_m4 (the M4 DI disability gate) live: this PR adds it to gates.yaml as a NEW LOCKED top-level gate. Unlike gate_2b/2c (amendment-2 unlocked stubs flipped in place), gate_m4 had no pre-existing stub — the block is inserted fresh as locked. ZERO threshold movement: every value is READ from the ratified, frozen floor runs/m4_gate_floors_v1.json; the artifact is never rewritten. kind: anchor_based (gate-1 external-check style).

Ceremony chain — ratified by merge of #153 (squash 0fa4a29)

step comment verdict
round-1 referee 4950447491 AMEND BEFORE LOCK — findings 1-6 / fixes A-F (finding 1 BLOCKER: restore the pre-registered prevalence+conversion families dropped under the invalid level_bridged_via_anchor_shape reason)
fixes 4950571161 fixes A-F applied (05d8292 + master merge 45bbabe); computed mixed-k remedy; OC 0.9689 / p_seed 0.9408
verification 4950648191 AMEND metadata-only (the PR body) — every committed object verified EXACT, zero-diff rebuild, all mutations caught; 5 flip-time notes
body amendment 4950660426 PR body rewritten to committed state; #157 tier conflict resolved by recount
ratified merge of #153, squash 0fa4a29 under the standing campaign directive of 2026-07-07 (delegated authority)

Surface — 12 gate-eligible (8 internal mixed-k + 4 anchor) + 24 report-only

Internal reproduction|ln(rbar_candidate / r_PSID)| <= round(floor mean + k·sd, 3), capped at ln(1.5), pre-registered MIXED k (FLOW=3 / STOCK=4):

cell tolerance k σ-units
incidence.40-49|female 0.358 3 (flow) 2.600
incidence.50-59|female 0.334 3 (flow) 2.596
incidence.50-59|male 0.354 3 (flow) 2.508
recovery.50-59|female 0.400 3 (flow) 2.647
recovery.60-66|female 0.332 3 (flow) 2.553
recovery.60-66|male 0.400 3 (flow) 2.653
prevalence.50-59|female 0.371 4 (stock) 3.225
prevalence.50-59|male 0.387 4 (stock) 3.123

Anchor — concept-bridged SHAPE/DOMINANCE, candidate per-seed invariant with margin >= MARGIN_K=3 × real half-split sd (the MARGIN reading, not bare ordinal):

cell real-data margin basis
prevalence_ageshape.comonotone|female 6.099 σ min_gap sd (Table 19)
prevalence_ageshape.comonotone|male 5.298 σ min_gap sd (Table 19)
conversion_exit.retirement_dominant|female 4.797 σ share sd (Table 50)
conversion_exit.retirement_dominant|male 12.806 σ share sd (Table 50)

24 report-only cells, all machine reason tolerance_above_t_max (power; no below_20_events). Faithful OC p_seed 0.9408 / p_gate 0.9689, at/above the 2a/2b/2c precedent band top (0.9685). k_selection: k=2 flow OC 0.2901 (unusable) / k=3 flow OC 0.9717 / stock k=4 the sole k a prevalence cell survives; option-(i) uniform-k3 OC 0.9008.

Flip-time notes (5, from verification 4950648191) — all implemented

note implementation
1 — tier re-refresh tier_counts.json/README-tiers.md re-refreshed against master-at-flip by CI-equivalent live collection (openpyxl present, per #158)
2 — OC "at/above precedent" recorded as "at or above" (0.9689 sits 4e-4 above the 0.9685 band top), not "within"
3 — anchor gate_rule prose each anchor gate_rule separates the candidate-voiced condition (its own ≥3σ margin) from the evidence-time cell conditions ("holds on all 100 real halves", "≥20 exits"); the sparse-exit all-retire candidate is pinned as caught INTERNALLY (recovery.60-66), no candidate-side exit floor imposed
4 — σ-units presentation stock σ-units committed as 3.225/3.123; the comments' "3.23/3.12" & "3.22/3.12" are 2dp renderings of the same numbers
5 — bootstrap optional the wart-3 block-bootstrap is deliberately NOT committed (preserves the every-number-recomputes invariant)

Legacy manifest --transition

Regenerated via scripts/build_legacy_manifest.py --transition (the #135 mode, not the internals workaround). Parent-match validated against HEAD^ (origin/master); only contract_revision (890aa39b1a81b0) and the gates.yaml entry (sha + n_bytes 168354 → 216748) move — the 40 frozen legacy entries stay byte-identical (originating_commit unchanged). contract.py artifact env sidecars were checked for and not added (Sol's contract is still only on the unmerged contract-identity branch — not on master).

Bindings & tiers

Locked-hot bindings extend tests/test_gates_derivations.py (21 new tests, artifact tier): tolerance derivations from the frozen floor, 12/24 partition set-equality, OC 0.9408/0.9689 recompute, mixed-k + k_selection binding, anchor-margin recompute + ε-tilt failure pin (0.0917/0.0912 ≪ 3), protocol equality with the ratified 5200+k estimator + schema [20,8,5], D1 SUBSET master-compare (gate_1/gate_2/gate_3 byte-identical to origin/master, gate_m4 the sole new key), history entry. The floor's own guard (test_m4_gate_derivations.py) flips to assert gate_m4 locked. Tier manifest artifact 744 → 765, total 2,401 → 2,422 (CI-equivalent collection).

Always-runnable tiers (unit + artifact) green inline: 924 passed, 40 skipped. No locked sibling block touched.

🤖 Generated with Claude Code

Add gate_m4 (the M4 DI disability gate) as a NEW LOCKED top-level gate
(unlike gate_2b/2c, it had no pre-existing unlocked stub). The full lock
ceremony ran on PR #153 (floor runs/m4_gate_floors_v1.json): round-1 AMEND
BEFORE LOCK (comment 4950447491, findings 1-6 / fixes A-F) -> fixes
(comment 4950571161, 05d8292 + merge 45bbabe) -> verification AMEND
metadata-only, the PR body (comment 4950648191) -> body amendment executed
(comment 4950660426) -> ratifying squash merge 0fa4a29, under the standing
campaign directive of 2026-07-07.

gates.yaml gate_m4 (kind anchor_based): the 12-cell surface (8 internal
mixed-k -- flow incidence/recovery @k=3 + prevalence.50-59 STOCK @k=4 -- + 4
concept-bridged anchor cells at the pinned >=3 sigma margin), tolerances
machine-derived as round(floor mean + k*sd, 3) from the FROZEN floor and
capped at ln(1.5), the 24 report-only cells (all tolerance_above_t_max), the
K=20 mean-over-draws protocol (5200+k) + fresh_run schema [20,8,5], the
k_selection rule (k=2 flow OC 0.2901 / k=3 flow OC 0.9717 / stock k=4), the
in-repo sha-pinned di_asr_2023 anchor (reported, never gated), the
ceremony_record (four comment ids + ratified-by-merge 0fa4a29 + delegated
authority) and the 2026-07-12-m4-gate-lock history entry. ZERO threshold
movement vs the ratified floor: the frozen artifact is READ, never rewritten.
The five verification flip-time notes are implemented.

Locked-hot bindings extend tests/test_gates_derivations.py (21 tests:
tolerance derivations, 12/24 partition set-equality, OC 0.9408/0.9689
recompute, mixed-k + k_selection, anchor margins + epsilon-tilt failure,
protocol equality, D1 SUBSET master-compare, history). The floor's own
gates.yaml guard (test_m4_gate_derivations.py) flips to assert gate_m4
locked. The legacy manifest's contract_revision + gates.yaml entry track the
flip via --transition (41 frozen entries byte-identical). Tier manifest
artifact 744 -> 765 (CI-equivalent collection, openpyxl present), total
2,422.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
social-security-model Ready Ready Preview, Comment Jul 12, 2026 10:44am

Request Review

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Flip-fidelity referee: M4 disability gate lock (gate_m4 fresh insert)

Verdict: AMEND BEFORE MERGE — one finding, one sentence, contract-prose only. Every number is faithful.

Zero threshold movement verified end-to-end: the frozen floor is byte-identical to master, every committed value recomputes exactly — from the floor's raw per-seed vectors AND from raw PSID with independent implementations — the fresh insert touches nothing else in the contract, the --transition manifest is exact and idempotent, the 21+1 bindings discriminate on every required mutation, and CI is green/MERGEABLE. The single blocker is a flip-authored governance sentence that misdescribes the ratified statistic's weight basis (finding 1). It moves no number, but it is inside the locked contract, the ceremony's own bar AMENDed for less (verification 4950648191 amended for a PR-body misdescription), and the sentence itself says the weighting is load-bearing. One-sentence fix, gate_m4-internal, breaks no binding.


Findings

Finding 1 (AMEND): weight_definition misdescribes the ratified weight basis

gates.yaml gate_m4 thresholds.governance.weight_definition (lines ~3305-3310):

"mirrors tranche 2a / 2b / 2c weight_definition. Every gated statistic is weighted by the person-constant most-recent positive PSID wave weight; …"

The ratified M4 statistic is not weighted that way. Three independent sources agree the basis is the start-wave (wave-w) cross-sectional individual weight, carried per person-year / transition pair:

  1. The pre-registered foundation (runs/m4_disability_v1.json, frozen): "consecutive observed waves (w, w') … form one transition carrying age and weight at w … all banded by age-at-w x sex, weighted by the start-wave cross-sectional individual weight."

  2. The code (src/populace_dynamics/data/disability.py): read_disability_status melts the per-wave weight; build_transition_pairs carries weight at w; every cell weights by that column. No most-recent reduction exists in the module.

  3. The frozen numbers. I rebuilt all 32 reference-moment cells from raw PSID under both bases (own pandas implementation, .venv-gate):

    • start-wave weights: all 32 cells reproduce the frozen floor exactly (worst |Δrate| = 0.0; num_wt/den_wt/n_events exact; panel 41,345 / 284,932 / 227,579 exact; anchor min-gaps and conversion shares exact to 1e-12; seeds 0-2 half-split |ln(r_A/r_B)| exact to 1e-12 on all 8 gated cells with my own splitter replication);
    • person-constant most-recent weights (the committed sentence): every gated cell differs:
    cell person-constant rate frozen rate |ln ratio| share of its tolerance
    incidence.40-49|f 0.017270 0.020175 0.155 43% of 0.358
    recovery.50-59|f 0.313627 0.276139 0.127 32% of 0.400
    prevalence.50-59|f 0.059377 0.070178 0.167 45% of 0.371
    prevalence.50-59|m 0.064509 0.069352 0.072 19% of 0.387

    (remaining four: 0.095/0.101/0.016/0.053 — all nonzero; conversion-exit anchor shares also move, 0.7085→0.7041 (f) / 0.8587→0.8375 (m).)

Why it matters: the block's own closing line — "The weighting is load-bearing, so it is pinned here, not inherited implicitly" — is the point. A fresh-run scorer implementing rbar/rate_a from the locked contract text would build a statistic displaced by up to ~45% of a whole tolerance. The floor and foundation artifacts carry the correct definition, so the contract contradicts its own frozen evidence; description_claims_exactly_the_scored_surface (which gate_m4 itself invokes) is the standing rule this violates. The error is flip-authored: the ratified floor has no governance block and never claims person-constant weighting (its only "person-constant" is sex); the ratified stub proposal says only "the weighted per-interval PSID rate". 2a/2b/2c pin the person-constant most-recent-positive weight (e.g. the marriage histories' source file carries no per-wave weighttransitions.py attaches one); the employment-status panel carries a weight at every wave and the M4 builder uses it at w — "mirrors" holds for the rule-form (weighted-only, no unweighted gate, pinned in-block), not the weight construction.

Required fix (one sentence, no threshold movement, no floor rewrite, no sibling edit, breaks no binding — no gate_m4 test pins this text; the most-recent bindings at tests/test_gates_derivations.py:1009/2708 are 2a/2b's own, where person-constant is correct): reword to the foundation's definition, e.g.: "Every gated statistic is weighted by the start-wave (wave-w) cross-sectional individual PSID weight carried on each person-year / transition pair (the m4_disability_v1 hazard rule; weight > 0 filter at read); there is NO unweighted gated statistic; the unweighted counts (n_events / n_at_risk) are committed alongside. Mirrors tranche 2a/2b/2c in form (weighted-only, load-bearing, pinned here), not in construction: those retrospective sources carry no wave weight and use the person-constant most-recent-positive weight."

Finding 2 (non-blocking): precedent_oc_band's gate_2c entry is a p_seed among p_gates

k_selection.precedent_oc_band: { gate_2a: 0.9685, gate_2b: 0.9678, gate_2c: 0.9641 }. From the locked sibling blocks: 2a p_gate_pass_4_of_5: 0.9685 (p_seed 0.9404), 2b p_gate_pass_4_of_5: 0.9678 (p_seed 0.9397), but 2c commits p_seed_pass: 0.9641 / p_gate_pass_4_of_5: 0.988 (27 cells). So the band's 2c entry is a seed-level OC beside two gate-level OCs. On either level-consistent axis, m4 sits above 2a/2b and below 2c: p_gate 0.9689 vs {0.9685, 0.9678, 0.988}; p_seed 0.9408 vs {0.9404, 0.9397, 0.9641}. The blanket "at or above the 2a/2b/2c precedent band" (flip-note 2's wording) is exact only under the committed mixed-level composition.

Why non-blocking: the band was committed in the ratified frozen floor (k_selection.precedent_oc_band, identical values) — the flip copies it verbatim, as it must (the binding asserts yaml == floor), and this exact comparison was endorsed through both ceremony rounds (round-1: "k=3 … clears precedent"; verification note 2 restated the band as 0.9641–0.9685). No operative rule rides on it: no candidate verdict, tolerance, or partition uses the band, and the k=3 flow choice is forced independently (k=2 flow OC 0.2901 unusable, k=4 empties the flow surface, k∈[2,3] is the pre-registered range). Recommendation: while amending for finding 1, add one clause to the two oc_vs_precedent notes recording 2c's level ("2c's 0.9641 is its p_seed; its p_gate is 0.988; on a level-consistent basis the OC clears 2a/2b and sits below 2c") — an annotation beside the bound values, safe under no_self_rescue (no gate_m4 candidate run exists). Alternatively defer to a future floor amendment note; either way the public record now carries it.

Observation 3 (non-blocking, for the record)

(a) The history entry's proposed: 2026-07-12 prose date is unbound (mutating it alone passes the suite); the load-bearing date in the entry id is bound (mutation caught). Same class as the prose-pin caveat the verification round accepted. (b) The anchor half_split_floor blocks commit summary stats (mean/sd/min/max/n_seeds), not the 100 per-seed vectors the internal cells carry — a property of the frozen artifact ratified at #153, not of this flip; the committed margins recompute exactly from the committed gap/sd, and my raw-PSID seed replication confirms the split machinery.


Verification record (all recomputed independently)

1. Threshold fidelity — CLEAN. runs/m4_gate_floors_v1.json byte-identical to master (sha256 185d8182…, empty git diff). All 32 cells' mean/sd/realized_sigma/min/max recompute from the 100 raw per-seed values (≤1e-12). Every gated tolerance recomputes as round(mean + k·sd, 3) at the pre-registered mixed k — 6 flow@3: 0.358/0.334/0.354/0.400/0.332/0.400; 2 stock@4: 0.371/0.387 — all == yaml == floor draft, all ≤ ln(1.5). Partition rebuilt from scratch (defined-100 + ≥20 events + cap at family k): exactly the committed 12/24; machine reasons all 24 tolerance_above_t_max, zero below_20_events (min events over all 32 cells = 59), conversion cells demote at 0.596/0.611 > ln(1.5) (finding-1 pin); the withdrawn level_bridged_via_anchor_shape appears nowhere. OC recomputes: p_seed 0.940823 → 0.9408, p_gate 0.968944 → 0.9689 (per-cell probs all match). Stock sigma-units 3.2246/3.1231 → 3.225/3.123 (flip-note 4 exact). k_selection: uniform sensitivity 21/12/2 recomputed; k=2 flow 12 cells OC 0.2901; k=3 flow 6 cells OC 0.9717; k=4 leaves exactly the two prevalence.50-59 stock cells; option-(i) uniform-k3 12 cells OC 0.9008 < band bottom. Anchor margins recompute from committed gap/sd: 6.099 / 5.298 / 4.797 / 12.806σ, all ≥ 3; the ≥3σ rule is pinned candidate-side with 4-of-5 conjunction; ε-tilt reproduces 0.0917 / 0.0912 ≪ 3 (passes bare ordinal, fails pinned margin — the floor's builder-computed row matches). T19 band shares (f: 0.011/0.051/0.137/0.350/0.451; m: 0.016/0.061/0.133/0.333/0.457) and the T50 dominance constant 455,267/(455,267+99,721) = 0.8203186375200905 recompute from the sha-pinned tables.json (sha matches disk, the yaml pin, and the floor's own pin; provenance.md sha matches; n_bytes 26356). PSID side (.venv-gate, own implementations): panel 41,345 / 284,932 / 227,579 exact; all 32 reference cells exact; anchor gaps/shares and exit counts 289/182, 273/231 exact; seeds 0-2 half-splits exact on all 8 gated cells.

2. Fresh-insert integrity — CLEAN. Structural yaml-path diff vs origin/master: the only added path in the whole document is /gates/gate_m4 (history nested inside it); zero removed, zero changed paths; gate_1, gate_2 (2a thresholds + gate_2b + gate_2c), gate_3, and every non-gates top-level key deep-equal to master. D1 SUBSET guard: passes on the branch; passes in the simulated red-window post-merge state (origin/master := flip content — added == set() branch exercised); and correctly fails in the stale-branch red window (simulated master with an extra gate → removed != set()), forcing the documented reconciliation.

3. Ceremony record — CLEAN. All four comments re-fetched from GitHub: 4950447491 (07:57:21Z) "Round-1 adversarial referee … Verdict: AMEND BEFORE LOCK", findings 1-6 with required fixes A-F verbatim (finding 1 BLOCKER = the invalid level_bridged_via_anchor_shape family drop; fix A names the computed hybrid flow@3 + prevalence.50-59@4 at OC 0.9689 — round-1 endorsed exactly the adopted surface); 4950571161 (08:45:14Z) fixes round, commits 05d8292 + master merge 45bbabe (both real on #153's branch, plus 88756c9 for the 2,321 recount), mixed-k remedy, 5200+k VERBATIM, [20,8,5] schema, k=2 OC 0.2901, ε-tilt 0.0917/0.0912, "3.23/3.12" 2dp renderings; 4950648191 (09:14:25Z) "AMEND BEFORE LOCK — one amendment, metadata-only: the PR body. Every committed object verifies exactly", nine-row mutation table all caught, five flip-time notes; 4950660426 (09:19:01Z) amendment executed, tier recount 2,321, ratifying under the standing directive. 0fa4a29 confirmed as #153's squash mergeCommit (merged 09:19:05Z, MERGED, base master). Five flip notes each implemented at the claimed location: (1) tier files re-refreshed — verified by live collection both sides (below); (2) "at or above" wording in both oc_vs_precedent notes, 0.9689 − 0.9685 = 4e-4 recomputed (see finding 2 for the band-level caveat); (3) gate_rule separation — see next paragraph; (4) sigma_units_note carries 3.225/3.123 = the comments' 2dp numbers; (5) no bootstrap number committed anywhere in gate_m4 (the only gates.yaml bootstrap outside note-5's own text is gate_2c's pre-existing block, deep-equal to master).

Flip-note 3, adversarially re-tested. I reconstructed the verifier's sparse-exit two-readings candidate against the new text: simulated FRA-window exits ≈ a handful, all→retired, share 1.0, margin 0.5 ≥ 3σ (3σ = 0.130 f / 0.084 m) — under the frozen floor's old one-sentence gate_rule ("candidate … + holds on all 100 halves + ≥ 20 exits") a literal reading fails it for exit count; under the flip's candidate_condition ("This is the ONLY thing a candidate must satisfy") it passes the anchor with no second reading, evidence_time_conditions explicitly de-voices the 100-halves and ≥20-exit facts to floor-build time ("NOT a candidate-side exit-count floor"), and the catch is pinned where it actually lives: all-retire ⇒ zero return-to-work ⇒ recovery.60-66 rbar = 0 ⇒ |ln| = ∞ > 0.332/0.400 (internal fail), or an empty simulated denominator ⇒ run invalidated by the pre-specified undefined_draw_rule. The degenerate_candidates.rows table pins the same, and the converse (return-to-work-dominant, share 0.45) remains the anchor's unique catch. Ambiguity closed.

4. Manifest --transition — CLEAN. Diff confined to contract_revision 890aa394…b1a81b02… (verified = the actual gates.yaml blob ids at master/HEAD) and the gates.yaml entry sha256 3990e15a…e5edf668… / n_bytes 168354 → 216748 (both recomputed by me from git content); originating_commit unchanged (84a6721b…); the other 40 of 41 entries byte-identical; generated_at_commit unchanged. Parent-match is real: HEAD^ == origin/master (d13c3a3), the parent manifest's values equal the parent's actual gates.yaml (recomputed), and a negative test (parent whose gates.yaml moved without its manifest) raises "Parent manifest does not match parent gates.yaml". Idempotent: two --transition reruns in the worktree produce zero diff, clean tree.

5. Bindings discriminate — CLEAN. The 21+1 new tests (21 test_gate_m4_* artifact-tier bindings + the flipped floor-guard test_no_gate_mutated_and_gates_yaml_gate_m4_is_locked) pass: 22/22. Mutation table (each mutation applied to gates.yaml, suite selection rerun, file restored; baseline re-green after):

mutation result
tolerance incidence.40-49|f 0.358 → 0.359 2 failed (tolerance binding + OC recompute)
partition cell recovery.50-59|male…|malX 2 failed (partition set-equality + report reasons)
k_selection k2_flow_oc 0.2901 → 0.2902 1 failed
anchor sha pin tables.json …aa36…aa37 1 failed
history id date 2026-07-12 → 2026-07-13 1 failed
probe: chosen_stock_k 4 → 3 1 failed
probe: anchor margin 6.099 → 6.098 1 failed
probe: locked true → false 2 failed
probe: OC p_seed_pass 0.9408 → 0.9407 2 failed
probe: report-only cell added to gated tolerances 4 failed
probe: history proposed: date only not caught (observation 3a; id date is bound)

6. Hygiene — CLEAN. Diff = exactly the six claimed files (gates.yaml +789/−0; manifest 3/3; tier_counts 1/1; README-tiers 2/2; test_gates_derivations +520; test_m4_gate_derivations 18/5). Tier manifest vs CI-equivalent live collection (openpyxl present): branch 199/765/782/520/156 = 2,422 exact; master-at-flip 199/744/782/520/156 = 2,401 exact — the +21 is precisely the new artifact-tier bindings. Always-runnable tiers run inline: 924 passed, 40 skipped (exact match to the PR claim; the D1 guard PASSED, not skipped). Fresh at review time: gh pr checks exit 0 (build/lint/pytest 3.11 + 3.13/Vercel pass; deploy skipped), mergeable: MERGEABLE, mergeStateStatus: CLEAN — the W1 flip has not merged, no both-blocks reconciliation needed yet (if it lands first, the D1 guard and gates.yaml will conflict by design; the documented both-blocks merge applies).


Amend scope: finding 1's one-sentence weight_definition rewrite (plus, optionally, finding 2's one-clause annotation) — then this flip is merge-clean under the same bar #122/#130 set. No threshold, artifact, test, or manifest change is needed; everything numerical is already exact.

Referee basis: fresh worktree at 14d2f37; every check recomputed with independent implementations (own pooling/OC/margins/splitter/manifest arithmetic; raw-PSID reproduction in the gate env; structural yaml diff; mutation battery with per-step restore and re-green baseline). No repo state modified.

… referee finding 1); annotate precedent_oc_band

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Referee finding 1 executed: gate_m4 weight_definition corrected to the ratified start-wave (wave-w) cross-sectional weight (the frozen floor's own foundation and committed numbers), with the deviation from the 2a/2b/2c person-constant convention stated explicitly; precedent_oc_band annotated per the non-blocking note; manifest transition rerun for the new contract revision (all bindings + manifest tests green, CI explicitly re-verified). Merging under the AMEND→fixed path of the ceremony.

@MaxGhenis MaxGhenis merged commit a92a68c into master Jul 12, 2026
7 checks passed
MaxGhenis added a commit that referenced this pull request Jul 12, 2026
…by its own evidence (#166)

Carry the paper through every merged wave since the gate-2b pass (#149).

Add the gate-2c candidate ladder and its independently verified pass
(#155/#157, verification 4950580430): two candidates — the shortest of the
family ladders — candidate 1 failing 1/5 with the assortative diagonal held
35/35 on the first attempt and the gate bound entirely on the earnings-blind
first-marriage cells the registration had named in advance, candidate 2's
one marginal-preserving modifier (byte-carry 2,500 cells at 0.0) passing 4/5.
With it, every gate-2 tranche is passed: all four demographic gates locked
AND passed (memo 4950584695).

Add the disability gate (M4): floors #153 (round-1 restoring the occupancy-
stock teeth via mixed-k), lock #159 (the start-wave weight-definition fix),
candidate 1 passing 5/5 (#161) — the program's first five-of-five — verified
with a both-constructions gap adjudication (4951142927), the estimand always
the PSID self-report, never an SSA DI level (seven concept deltas).

Add the transport gate (W1): design #151, floors #154 with the owned #158
tier-manifest process violation, lock #160, candidate 1 failing 0/5 (#162,
C2 swap realised / C1 non-reversal robust / earnings not degenerate),
forensics 1 (#163, the entry-state lever and the Q4 gate-design finding),
and amendment 1 in full ceremony (#164/#165) — the program amending its own
structurally-unpassable gate, all ten family-B cells demoted on committed
evidence with anchors retained verbatim and the failed candidate left failed.
This is the fourth recurring referee class: a gate can itself be wrong, and
the same ceremony catches that too, after the lock.

Add the interim benefit seam (#156: gross $41.35B -> net $36.02B, offsets
enumerated, 4/4 expectations, engine-vs-transport gap 6e-8), stating the
PolicyEngine-executes / Axiom-cross-validates division; and the deployment
infrastructure (contract identity, env sidecars, a generic K=20 evaluator
reproducing the three committed gate verdicts; the household candidate-9
registry port).

Recompute the tally per the paper's conventions: forty-two registered runs
across six gates (13/16/9/2/1/1), thirty-seven failures against five passes,
six gates locked with FIVE ratified amendments (two gate 1, two gate 2, one
transport), ten forensics rounds, six external-anchor replications, and fifty
forecasts registered with forty-nine graded — the one open registration the
transport gate's second candidate. Frozen sections byte-identical.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant