gate_w1 candidate 4: one-shot on the amendment-3 surface (registered 4964126356)#184
Conversation
…ir-scope verdict adapter (build only) Byte-identical to scripts/run_gate_w1_candidate3.py (model transport_deployment_v3 untouched) EXCEPT the two pre-registered changes (issue #42 comment 4964126356): 1. Output name -> gate_w1_candidate4_v1 (ARTIFACT_PATH, schema_version, run), so the write_new one-shot writes a fresh artifact on the amendment-3 surface instead of refusing over the committed candidate-3 output. 2. Family-C verdict adapter: _family_c_pass reads required_swap_realised on the contract swap_pair [payroll_plus_2pp, elimination] instead of the demoted 4-element reversed_to_anchor (gates.yaml family_c fingerprints.c2.gated_check_amendment_3 / candidate_procedure.pass_rule; flip 14658d0, ratified cb1ef63). The full-ordering statistics (reversed_to_anchor, kendall_tau_vs_required, deployed_order) are still computed by the untouched model and published in family_c and verdict.fingerprints; only the pair gates. The gated partition (43 family-A + C2) binds from gates.yaml at run time. Model code untouched (git diff origin/master -- src/ empty). BUILD ONLY: execution follows CI-green, per the one-shot protocol. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
… gate PASS (family-A cube bit-identical to c3) One-shot scored run (registered issue #42 comment 4964126356), published regardless. Verdict: gate PASS. - Family A: 5/5 seeds fully in-band (43/43 gated cells each) — family_a_pass. - Family C (gated: C2, amendment-3 pair-scope): required_swap_realised on [payroll_plus_2pp, elimination] = True (elimination outranks +2pp on the deployed ordering) — family_c_pass. The full-ordering statistic still publishes: deployed_order [elimination, cap_150k, payroll_plus_2pp, payroll_plus_1pp], reversed_to_anchor False, kendall_tau_vs_required 0.333. - Family B: report-only, 0/10 within tol (gates nothing). - Gate = family A AND family C = PASS. Reproduction (registered expectation): the family-A per-cell cube is BIT-IDENTICAL to runs/gate_w1_candidate3_v1.json across all 43 cells shared by both gated sets (0 deviations over 43 x 20 draws x 5 seeds). Frame identical to c3 (sha256 c2065b64..., 166302 persons / 57240 households, total_weight 340008863.6777494). Dispersion over the 43 shared cells is identical (max_across_draw_sd 0.351065412906704, max_per_draw_abs_ln 0.495819096421816); c3's published 0.938 max_per_draw_abs_ln was driven by hh_size_share.1, a cell demoted to report-only by amendment 3. Two-env split replicated from the c3 sidecar: frame exported in the policyengine.py .venv; scored phases in .venv-gate (py 3.14.4 / numpy 2.5.1 / pandas 3.0.3 / sklearn 1.8.0 / scipy 1.18.0 — matches the c3 sidecar). Contract gates.yaml blob 1efbf09 at head 778fb0a. Runner note: scripts/run_gate_w1_candidate4.py is the byte-copy of candidate 3 with the pre-registered amendment-3 pair-scope verdict adapter. As a strict byte-copy the artifact carries candidate 3's descriptive metadata verbatim (verdict.candidate "w1_candidate3"; gate_rule prose reads "reverses"); the operative rule is the pair-scope adapter (family_c_pass True with reversed_to_anchor False proves it gated on required_swap_realised), and both statistics are published in verdict.fingerprints. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Independent pass-verification: VERIFIED-PASS (bit-exact)Independent adversarial verification of the candidate-4 PASS, per the standing process addendum (issue #42 comment 4948637741): full pipeline re-executed from the committed code, compared field-by-field against the committed artifact, plus the adapter audit, registration-compliance review, no-self-rescue trail, and certification-scope check. Verification performed in a fresh worktree at 1. Independent re-executionTwo-env split replicated from the sidecar and verified before running:
Fresh frame export ( 2. Bit-exact comparison — my artifact vs committed
|
| Surface | Compared | Deviations |
|---|---|---|
family-A cube [20 × 43 × 5] |
4,300 values | 0 |
| family-A per-cell verdict fields (5 seeds × 43 cells × 7 fields) | 1,505 | 0 |
verdict block (incl. gate_pass, family_c_pass, fingerprints) |
whole block | byte-identical |
family_b block (0/10 within tol) |
whole block | byte-identical |
family_c block (all statistics) |
whole block | byte-identical |
conformance (max_across_draw_sd 0.35106541290670407, max_per_draw_abs_ln 0.49581909642181554) |
— | identical to full precision |
The only differing leaves in the whole artifact, enumerated exhaustively (11): frame_provenance.frame_pickle (worktree path), family_a.per_seed[0..4].elapsed_seconds (5), generator_fit_provenance.*.fit_seconds (5). All wall-clock/path metadata; zero numeric model-output differences. Sidecar: environment byte-identical; contract.blob_sha identical (1efbf095…); contract.head_sha differs as expected (theirs 778fb0a — execution at the build commit; mine 71ec93f — the artifact commit checkout). Committed artifact git blob confirmed d944ed2270a2c46c36ed3d0cd7e3328f1c8dbe88, as claimed.
Cross-check vs candidate 3 (the registered reproduction expectation), independently recomputed: my cube's 43 gated cells are a strict subset of c3's 47; all 4,300 shared sub-cube values exactly equal c3's committed cube (0 deviations); the c3-only cells are exactly the amendment-3-demoted hh_size_share.{1,3,4,5plus}; C1 and C2 fingerprint blocks byte-identical to c3's; c3's overall max_per_draw_abs_ln 0.9378340576894976 is driven by hh_size_share.1 and its max over the 43 shared cells equals c4's published 0.49581909642181554 to all digits — every reproduction claim in the PR body checks out.
3. Adapter audit
diff scripts/run_gate_w1_candidate3.py scripts/run_gate_w1_candidate4.py = 4 unified hunks falling entirely inside the two pre-registered change classes, nothing else:
- Output name (3 textual sites: docstring line 26,
ARTIFACT_PATH,schema_version/run) →gate_w1_candidate4_v1, exactly the artifact path the registration's protocol line pre-commits. - Family-C verdict adapter (docstring + the read):
_family_c_passreadsrequired_swap_realisedinstead ofreversed_to_anchor.
(The PR body's "diff = two hunks only" is loose phrasing — it is two registered change classes across 4 unified hunks; no unregistered change is present.)
The adapter's rule vs the live contract:
- gates.yaml
family_c.candidate_procedure.pass_rule(blob1efbf095…): "Amendment 3 RE-SCOPES the gated C2 check to the PAIR: PASS iff required_swap_realised on [payroll_plus_2pp, elimination] … with no requirement on the cap_150k/+1pp positions, which publish report-only … The full-ordering statistic is still computed and published; only the pair gates." Same rule infingerprints.c2.gated_check_amendment_3("required_swap_realised on [payroll_plus_2pp, elimination] ONLY"), andgate_partition.gate_eligible = [fingerprint.elimination_plus2pp]. - Adapter (
_family_c_pass):gated_fids and all(fc["fingerprints"][fid]["required_swap_realised"] for fid in gated_fids)withgated_fidsbound fromgate_partition.gate_eligibleat run time — an exact implementation.
Mutation checks (in-memory, on the pure helpers): live binding yields 43 family-A + ['c2'] matching the artifact; demoting a cell in a mutated family_a block shrinks the gated set (binding is live, not hardcoded); emptying gate_eligible yields no gated fids and _family_c_pass returns False (no vacuous pass); the adapter returns True on (swap=T, rev=F) and False on (swap=F, rev=T) — it reads the pair statistic, not the ordering.
Decisiveness confirmed: on the committed statistics, the old c3 rule (reversed_to_anchor) evaluates False and the pair-scope adapter True — the adapter was decisive exactly as disclosed, and the artifact's own family_c_pass: true with reversed_to_anchor: false (kendall_tau_vs_required 0.333, deployed [elimination, cap_150k, payroll_plus_2pp, payroll_plus_1pp]) proves the operative rule was the pair.
4. Registration compliance (comment 4964126356)
- Ordering: registration 2026-07-14T00:19:18Z → build commit
778fb0a00:39:40Z → CI green on778fb0a00:44:40Z (pytest 3.11/3.13, lint, build all success) → execution → artifact commit 01:30:36Z. Timestamps are consistent with the registered "CI-verified BEFORE execution" ordering (total phase runtime ≥ ~9 min even fully parallel; ≈30 min serial in my re-run). - One-shot / write_new / no partial state: the branch adds exactly 3 files over base
14658d0(runner, artifact, sidecar). Seed phases write only to gitignoredscratch/;write_newis exclusive-create with cleanup-on-failure and_refuse_if_artifact_existsguards every phase; the artifact+sidecar pair exists once, landed in one commit, and is internally consistent (reproduced bit-exactly). Any pre-write_newseed re-runs after kills could not leak state into the committed record, and none did. - Seeds and streams: gate seeds 0–4 and K=20 confirmed in code (
td1.GATE_SEEDS,K_DRAWS) and artifact. Streams actually consumed: family-A 5200+k (FAMILY_A_STREAM_BASE, v3's registered-distinct base), family-B 9200, family-C 9300 — published correctly in the artifact's protocol block. Finding (prose, non-blocking): the registration's parenthetical "K=20 draws 9100+k" names a stream v3 does not consume (9100+k is c1/c2's family-A base, present in v3 only as a comment); c3's own registration carried the same slip ("streams 9100+k"). The operative claim — "same registered streams as c3, byte-identical model" — is true and is exactly what the bit-identity result certifies. - Reproduction expectation: "the family-A cube is EXPECTED to reproduce candidate 3's committed per-cell values bit-exactly, and the pair-swap to realise as committed" — met, verified independently above; no deviation to report.
- Registered build-step exception: honored precisely — statistics computation untouched (verified:
family_cblock byte-identical to c3's), verdict read only.
5. No-self-rescue trail
runs/gate_w1_candidate{1,2,3}_v1.jsoneach have exactly one commit onorigin/master(e53b58c, 6ebb6eb, 64ebf97) — never edited; committed verdicts all still readgate_pass: false(c3: family-A 0/5 under the 47-cell surface, family-C failing the 4-element reversal).- Amendment-3 ceremony record intact: history entry
2026-07-13-w1-hh-size-and-c2-paircarries the five-round ceremony (4962052314 → 4962297637 → 4962578395 → 4962844009 → 4963441188), ratified by squashcb1ef63, with the explicit no-self-rescue paragraph ("candidate 1 … candidate 2 … candidate 3 all STAND FAIL … the demotion rescues nothing") and the pre-commitment to exactly this verification round. - Contract blob chain:
gates.yamlblob1efbf0958b722d8172697ac3f9a48c043de09bcfis identical at the flip14658d0, the build commit778fb0a, the PR head71ec93f, and liveorigin/master— the sidecar's contract reference points at the surface that is still live. Master has advanced only by M6 design amendment 3b: year-0 earnings-domain law (§2.8.3, closes Sol round-4 blocker) #183 (43ac64f), which touchesdocs/design/m6_projection_engine.mdonly — scored surface identical, as the PR body claims.
6. Certification scope (gates.yaml §9)
The live certification_scope certifies "the TRANSPORT of the already-fit PSID generators onto the certified populace frame — the 44 gated cells (43 family-A joints + 1 family-C fingerprint — the pair-scoped C2 elim<->+2pp compression swap)", with the hh_size quad, cap_150k/+1pp legs, 18-24 pair, 65+ quad, C1, and all 10 family-B margins report-only, and does_not_support the dynamics re-certification, projection (M6), revenue (M7), integrated scoring (M8), behavioral response, and benefit levels. The PR body stays inside this scope: it claims the 44-cell transport surface only, restates the report-only families as publishing-not-gating, carries the known-passable-surface and search-size disclosures, and makes no claim touching any does_not_support item.
Findings (all non-blocking; none affects the verdict)
- Frozen-artifact self-description — the byte-copy constraint leaves the artifact misdescribing itself in four places:
verdict.candidate= "w1_candidate3",verdict.gate_ruleprose = "every GATED fingerprint reverses" (the demoted rule), andregistration.comment_id/verdict.registration_pointer= null with "pending amendment-2 ratification (build only)" status — while the run is in fact the registered candidate 4 under the amendment-3 pair rule. A reader loading the artifact without PR/commit context would conclude it is an unregistered build-only c3 run whose verdict contradicts its own prose (family_c_pass: truewithreversed_to_anchor: false). Both quirks were disclosed in the registration/PR/commit, and the contradiction is resolvable via gates.yaml — but the artifact is the frozen record. Recommend the record entry (or a runs/ note) carry a mapping annotation:gate_w1_candidate4_v1.json→ registration 4964126356;candidatefield = the c3 MODEL (byte-copy); operative family-C rule = amendment-3 pair scope. Do not touch the frozen artifact. - Registered-stream prose slip — "K=20 draws 9100+k" in the registration (inherited from c3's registration) does not name a stream the code consumes; the artifact's protocol block (5200/9200/9300) is the exact record. Worth folding into the same annotation.
- "Two hunks" phrasing — the runner diff is two registered change classes across 4 unified hunks (the output name touches the module docstring,
ARTIFACT_PATH, andschema_version/run). No unregistered change exists; suggest the record entry use the change-class wording. - No test pin yet —
runs/gate_w1_candidate4_v1.jsonis not yet referenced by any test (prior candidates are pinned bytests/test_gate_w1_candidate{2,3}*.py). Expected at this stage — the record entry, grading, and pin are the orchestrator's acts — noted so it isn't dropped. - Scope of this verification — independent re-execution from the committed code with a fresh frame export, fresh generator fit, and fresh scoring in a fresh worktree, but on the same machine class as the original run (the sidecar's platform string matches this host). Cross-machine bit-identity was not part of the registered expectation and remains untested.
Verdict
VERIFIED-PASS (bit-exact). The claimed result — gate PASS on the amendment-3 surface, 5/5 seeds × 43/43 family-A cells, pair-swap realised, family-A cube bit-identical to c3 on all shared cells — reproduces exactly from the committed code under the registered protocol, the verdict adapter implements the live contract rule and was decisive as disclosed, the registration's pre-commitments were honored, and the no-self-rescue trail is intact. Per the standing addendum this PASS is now eligible for the record; the record entry, grading, and merge remain the orchestrator's acts.
Verdict: gate PASS
One-shot scored run of W1 candidate 4 — the unchanged c3 model (
transport_deployment_v3, byte-identical) — against the LIVE amendedgate_w1surface (44 gated = 43 family-A + the pair-scoped C2), partition bound fromgates.yamlat run time. Published regardless (no_self_rescue;write_newone-shot, refuses overwrite).Registration: issue #42, comment 4964126356. Surface: amendment-3 flip
14658d0(ratifiedcb1ef63). Base14658d0; live master has since advanced only by docs-commit #183 (43ac64f), which does not touchgates.yaml/src/scripts/runs— scored surface identical.Artifact:
runs/gate_w1_candidate4_v1.json(git blobd944ed2270a2c46c36ed3d0cd7e3328f1c8dbe88) + env sidecar. Verdict adapter needed the patch: c3's_family_c_passhardcodesreversed_to_anchor(the demoted 4-element rule) → it would have FAILED family-C here; the pre-registered pair-scope adapter (required_swap_realised) PASSES.Gate outcome
required_swap_realisedon[payroll_plus_2pp, elimination]Family A — per seed (of 43 gated cells)
5 / 5 seeds pass; every gated cell in-band on every seed. Per-draw dispersion (conformance):
max_across_draw_sd= 0.351065412906704,max_per_draw_abs_ln= 0.495819096421816,regenerated_surface= true,identity_candidate= false — non-zero across-draw dispersion confirms the candidate regenerates every scored column (the prohibited identity map is excluded).Family C — compression fingerprints
elimination_plus2ppppi_nraC2 (amendment-3 pair-scope): the gated check is
required_swap_realisedon[payroll_plus_2pp, elimination]— realised (elimination outranks +2pp). The full-ordering statistic publishes report-only:[elimination, cap_150k, payroll_plus_2pp, payroll_plus_1pp][elimination, payroll_plus_2pp, payroll_plus_1pp, cap_150k]so
reversed_to_anchor= False andkendall_tau_vs_required= 0.333 — the cap_150k/+1pp legs are report-only (anchor_ordering_internally_inconsistent_under_certified_swap, the pinned-frame-scoped Q10 disclosure). This is bit-identical to c3's committed C2 result; only the gating statistic changed (amendment 3), not the ordering.Bit-identity check (the registered reproduction expectation)
BIT-IDENTICAL. Every one of the 43 cells gated in both runs has a per-cell
[K=20 draws × 5 seeds]sub-cube exactly equal toruns/gate_w1_candidate3_v1.json— 0 deviations over 43 × 20 × 5 = 4,300 values. Frame identical to c3 (sha256c2065b64…, 166302 persons / 57240 households, total_weight 340008863.6777494). Over the 43 shared cells the dispersion stats are identical to 15 digits; c3's publishedmax_per_draw_abs_ln= 0.938 was driven byhh_size_share.1, a cell demoted to report-only by amendment 3 — its exclusion (not any numerical change) is the entire difference.Report-only families (published, do not gate)
ppi_nra): report-only (fingerprint_reversal_not_realized, amendment 2);reversed_to_anchorFalse, τ vs required 0.667.hh_size_share.{1,3,4,5plus}, demoted by amendment 3): not evaluated in this artifact — the run binds the 43 gated cells only (size-2 remains gated and is among the 43, in-band 5/5). Their committed values are in c3's artifact; the frame/model/streams identical and the shared-cell cube bit-identical, they reproduce c3's out-of-band pattern exactly (sizes 1/3/5+ out-of-band 5/5; size 4 out-of-band 4/5, clears seed 1). This is the whittling the amendment discloses: amendment 3 demoted exactly the cells c3 failed and rescoped C2 to exactly the part c3 passed.Forecast vs outcome (graded against the registration)
family_c_passcorrect under the pair-scope ruleRegistered disclosures (restated)
cb1ef63).marital_sharecells in-band 5/5).Build-step & runner faithfulness
scripts/run_gate_w1_candidate4.pyis a strict byte-copy ofscripts/run_gate_w1_candidate3.py(diff= two hunks only): (1) output name →gate_w1_candidate4_v1; (2)_family_c_passreadsrequired_swap_realisedinstead of the demoted 4-elementreversed_to_anchor(gates.yamlfingerprints.c2.gated_check_amendment_3/candidate_procedure.pass_rule). Model untouched (git diff origin/master -- src/empty). As a strict byte-copy the artifact carries c3's descriptive metadata verbatim —verdict.candidatereads"w1_candidate3"and thegate_ruleprose still reads "reverses"; the operative rule is the pair-scope adapter (family_c_passTrue withreversed_to_anchorFalse proves it gated onrequired_swap_realised), and both statistics publish inverdict.fingerprints.Env (two-env split, replicated from the c3 sidecar): frame exported in the
policyengine.py.venv (py 3.13.9 / hf_hub 0.34.4 / tables 3.11.1); scored phases in.venv-gate(py 3.14.4 / numpy 2.5.1 / pandas 3.0.3 / sklearn 1.8.0 / scipy 1.18.0 — matches the c3 sidecar byte-for-byte). Contractgates.yamlblob1efbf0958b722d8172697ac3f9a48c043de09bcfat head778fb0a.Draft — grading, the registry update, and (on this PASS) the independent bit-exact verification are the orchestrator's acts; not marking ready.