Skip to content

Gate-1 candidate 7: k-NN conditional rank bootstrap - #55

Merged
MaxGhenis merged 1 commit into
masterfrom
gate1-candidate7-knn
Jul 6, 2026
Merged

Gate-1 candidate 7: k-NN conditional rank bootstrap#55
MaxGhenis merged 1 commit into
masterfrom
gate1-candidate7-knn

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Verdict: FAIL — gate_1_pass = False (geometry 2/5, battery 2/5; needs ≥4/5 both)

The ninth pre-registered gate-1 run. Replaces candidate 6's discretized rank kernel with continuous empirical conditional draws and deepens the conditioning memory: a k-nearest-neighbor conditional rank bootstrap over train transition records, matched on the next two generated-or-real ranks (v1, v2) and the person's continuous anchor rank a. The frozen candidate-7 spec was registered before the run and implemented literally — no tuning.

The deepened two-step-plus-anchor memory is a real improvement over candidate 6 (which failed 0/5 on both blocks), and it produces the best classifier scores of any candidate so far — the first to pull the pairs-view c2st under threshold on all five seeds. But it does not clear the 4/5 conjunction: the runs-view c2st and the 10-year autocorrelation each clip on 3/5 seeds.

What changed vs candidate 6

  • Rank machinery (cells, Qhat_pos/rhat, continuous anchor rank u_A) reused byte-for-byte from candidate 5b (Gate-1 candidate 5b: rank-space generative dynamics #52); protocol machinery imported from the baseline runner (Gate-1 baseline run: chained weighted QRF #40); participation gate is candidate 2's backward regime gate.
  • Donor pools per seed from train positives: pairs (u_prev, u_next) — candidate 6's kernel pairs, verified bit-identical (64,603 records, seed 0) — triples (u_prev, u_next, u_next2) where the next-later observed period is also positive (~49,200 records), and re-entry pairs — candidate 6's, verified bit-identical (4,994, seed 0). Records pinned in a stable (person_id, period) order that fixes the k-NN tie-break.
  • Conditional draw: triples when v2 exists else pairs; distance d = |u_next − v1| + 0.5·|u_next2 − v2| (triples only) + 0.25·|u_A − a|; k = 25 nearest; one record drawn with probability proportional to its weight; the generated u_prev is that record's u_prev exactly (no binning, no smoothing, no within-bin jitter). Earnings = Qhat_pos of the target cell at u_prev (interpolated, so no value duplication). Zero crossings use the re-entry pool matched on |u_A − a| alone.

Per-seed table

seed geometry battery pairs c2st (≤0.53) runs c2st (≤0.54) ac 2yr ac 4yr ac 10yr (dev vs 0.07) mobility
0 0.529 ✓ 0.548 ✗ 0.719 0.649 0.470 (0.069 ✓) 0.582
1 0.525 ✓ 0.539 ✓ 0.721 0.632 0.473 (0.066 ✓) 0.589
2 0.516 ✓ 0.546 ✗ 0.711 0.624 0.445 (0.094 ✗) 0.577
3 0.517 ✓ 0.532 ✓ 0.720 0.632 0.442 (0.097 ✗) 0.589
4 0.528 ✓ 0.549 ✗ 0.725 0.644 0.465 (0.074 ✗) 0.582

Geometry (2/5): the only failing metric anywhere is the runs-view (window-3) c2st_auc, failing seeds 0/2/4 (0.548/0.546/0.549 vs 0.54) and passing 1/3 (0.539/0.532). The pairs-view c2st passes on all five seeds (0.516–0.529 ≤ 0.53), and every other locked geometry threshold (energy, coverage, tail q90/q99/w1sd) passes on all five seeds and both views.

Battery (2/5): the only failing metric anywhere is the 10-year autocorrelation, failing seeds 2/3/4 (deviations 0.094/0.097/0.074 vs tolerance 0.07) and passing 0/1 (0.470/0.473; deviations 0.069/0.066). Every other locked tolerance (2yr/4yr autocorr, mobility diagonal, zero-persistence, entry/exit, spell length) passes on all five seeds. This is exactly the registered risk: "the 10-year autocorrelation floor may still undershoot — two-step-plus-anchor memory may not carry the full permanent share."

The nine-run ladder (autocorrelation at 2/4/10 years)

run 2yr 4yr 10yr
baseline 0.726 0.573 0.333
c2 0.726 0.688 0.649
c3 0.722 0.695 0.647
c4 0.464 0.401 0.354
5a 0.779 0.704 0.616
5a′ 0.720 0.631 0.490
5b 0.716 0.653 0.507
c6 0.692 0.548 0.381
c7 (this run) 0.719 0.636 0.459
band 0.730 ± 0.05 0.657 ± 0.06 0.539 ± 0.07

c7's 2yr (0.719) and 4yr (0.636) land inside their bands. The 10yr (0.459) undershoots the band center 0.539 by 0.080 — just outside the ±0.07 window on the mean, which is why it fails on 3/5 seeds. c7 carries appreciably more 10yr memory than c6 (0.381) but less than 5b (0.507), which passed 4yr yet still failed 10yr against this same band; the continuous two-step memory sits between them.

Mobility vs the field

c7 mobility diagonal = 0.584 (mean), inside the 0.604 ± 0.05 band — it passes on all five seeds. On the axis that broke candidate 5b:

  • c7: 0.584 (passes) — continuous draws restore rank stickiness
  • c6: 0.572 (passed) — the discretized kernel also passed mobility
  • 5b: 0.44 (failed) — latent-Gaussian innovations churned the diagonal

So the continuous k-NN keeps the mobility win that the counting estimators earned; it does not regress toward 5b's Gaussian churn.

c2st vs prior candidates (pairs / runs; thresholds 0.53 / 0.54)

run pairs c2st runs c2st
5a′ 0.547 0.567
c6 0.547 0.596
c7 (this run) 0.523 0.543
threshold 0.53 0.54

c7 is the strongest classifier result in the field: the continuous empirical innovations (no discretization, no within-bin uniform, no Laplace flattening — the residuals the forensics, #54 localized in c6) drop the pairs c2st from c6's 0.547 to 0.523 (under threshold on 5/5) and the runs c2st from 0.596 to 0.543 — to the very boundary of the 0.54 lock. The window-3 joint is now barely distinguishable rather than clearly so.

k-NN diagnostics (reported-not-gated, per the registration)

Stable across the five seeds:

  • Neighbor distances (k-th neighbor distance per draw): median ≈ 0.016, p90 ≈ 0.041, mean ≈ 0.019, max ≈ 0.17 — matches are tight, so the empirical conditional is well-supported.
  • Triple-vs-pair usage: triples supply ≈ 0.77 of the positive-transition draws (the rest are pair-branch first steps from the anchor); re-entry ≈ 1,220–1,290 draws/seed.
  • Donor reuse (mean draws per record): triples ≈ 0.26, pairs ≈ 0.06, re-entry ≈ 0.25 — no record is over-drawn.
  • Drawn corner mass by anchor quintile (seed 0): bottom-anchor persons (Q0) draw into the bottom rank corner 11.9% and the top 0.8%; top-anchor persons (Q4) draw into the top corner 22.5% and the bottom 1.0% — the anchor conditioning carries the between-person permanent component, comparably to candidate 6's kernel corner masses.
  • Clamped-rank share: ≈ 0.0001–0.0003 — negligible.

Reproduction & integrity

  • battery_reference reproduces bit-exact on the full filtered panel before any candidate is scored (the standard hard-stop precheck).
  • The live seed-0 reproduction test passes in the gate venv (.venv-gate) — seed 0 reruns to float precision (geometry + battery to 1e-12; pool sizes exact). The run reproduces from the seeds alone.
  • Full pytest green: 249 passed, 7 skipped (the 7 skips are the PSID + populace-fit reproduction tests across candidates, which skip off the gate venv). ruff check clean; black -l 79 clean. All prior tests stay green.

Deliverables on this branch

  • scripts/run_gate1_candidate7.py — deterministic; registered stages exactly; RNG substreams labeled (gate, donor-draw, re-entry-draw).
  • runs/gate1_rank_knn_v1.json — schema gate1_rank_knn.v1; spec_registration = the candidate-7 comment; the reported-not-gated diagnostics above.
  • tests/test_gate1_qrf_candidate7.py — seed-0 reproduction (skipif PSID + importorskip populace.fit) + the standard consistency block + synthetic donor-pool and k-NN-draw unit tests.

Refs issue #42, the forensics PR #54, and the eight prior run PRs: baseline #40, c2 #43, c3 #44, c4 #48, 5a #50, 5a′ #51, 5b #52, c6 #53.

Draft — do not merge. Published exactly as computed.

🤖 Generated with Claude Code

…locks)

The ninth pre-registered gate-1 run. Replaces candidate 6's discretized
rank kernel with continuous empirical conditional draws and deepens the
conditioning memory: a k-nearest-neighbor conditional rank bootstrap over
train transition records, matched on the next two generated-or-real ranks
(v1, v2) and the person's continuous anchor rank a. Frozen spec registered
before the run in issue #42 (issuecomment-4896132094); implemented
literally, no tuning.

Mechanics (all constants fixed a priori at registration):
- Rank machinery (cells, Qhat_pos/rhat, continuous anchor rank u_A) reused
  byte-for-byte from candidate 5b; protocol machinery imported from the
  baseline runner; participation gate is candidate 2's backward regime
  gate.
- Donor pools per seed from train positives: pairs (u_prev, u_next) --
  candidate 6's kernel pairs, verified bit-identical (64,603 seed 0) --
  triples (u_prev, u_next, u_next2) where the next-later observed period is
  also positive, and re-entry pairs (candidate 6's, 4,994 seed 0). Records
  pinned in a stable (person_id, period) order fixing the k-NN tie-break.
- Conditional draw: triples when v2 exists else pairs; distance
  |u_next - v1| + 0.5|u_next2 - v2| (triples) + 0.25|u_A - a|; k=25 nearest;
  one record drawn with probability proportional to its weight; generated
  u_prev is that record's u_prev exactly (no binning/smoothing/jitter).
  Earnings = Qhat_pos of the target cell at u_prev. Zero crossings use the
  re-entry pool matched on |u_A - a| alone.

Verdict: gate_1_pass = False (geometry 2/5, battery 2/5; needs >=4/5 both).
The deepened memory is a real improvement over candidate 6 (which failed
0/5 both) but does not clear the conjunction.
- Geometry: the only failing metric is the runs-view (window-3) c2st_auc,
  failing seeds 0/2/4 (0.548/0.546/0.549 vs 0.54) and passing 1/3
  (0.539/0.532). The pairs-view c2st passes on all five seeds
  (0.516-0.529 <= 0.53); every other geometry threshold passes everywhere.
- Battery: the only failing metric is the 10-year autocorrelation, failing
  seeds 2/3/4 (0.445/0.442/0.465; deviations 0.094/0.097/0.074 vs
  tolerance 0.07) and passing 0/1 (0.470/0.473). This is the registered
  risk: two-step-plus-anchor memory does not carry the full permanent share
  on 3/5 seeds. Every other battery tolerance passes on all five seeds.

Determinism: battery_reference reproduces bit-exact before scoring; the
live seed-0 reproduction test passes in the gate venv; the run reproduces
from the seeds alone. Reported-not-gated diagnostics per the registration
(neighbor distances, triple/pair share, donor reuse, drawn corner mass by
anchor quintile, clamped share) are carried in the artifact.

Deliverables on this branch: scripts/run_gate1_candidate7.py,
runs/gate1_rank_knn_v1.json (schema gate1_rank_knn.v1, spec_registration =
the candidate-7 comment), tests/test_gate1_qrf_candidate7.py. Full pytest
green (249 passed, 7 skipped); ruff clean; black -l 79 clean.

Refs issue #42, forensics #54, and the eight prior run PRs
(#40, #43, #44, #48, #50, #51, #52, #53).

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

vercel Bot commented Jul 6, 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 6, 2026 6:34pm

Request Review

@MaxGhenis
MaxGhenis marked this pull request as ready for review July 6, 2026 20:42
@MaxGhenis
MaxGhenis merged commit 1433c96 into master Jul 6, 2026
7 checks passed
MaxGhenis added a commit that referenced this pull request Jul 6, 2026
Amendment OBJECT under the locked pre-registration contract. It PROPOSES
changes and changes NOTHING: the locked gate_1.thresholds block is
untouched (locked: true stays; every locked value byte-identical), no
model reads the new subsection, and nothing takes effect until a fresh
adversarial referee round runs on this proposal and the maintainer
ratifies by merging.

New committed anchor (real-vs-real PIA-proxy floor at deployment scale):
- runs/pia_proxy_floor_9822.json + scripts/build_pia_proxy_floor.py: the
  ctx20 construction (40% draw seed 1000+s, halved at seed s) on the FULL
  locked filtered panel, both disjoint halves pushed through the pinned
  PIA-proxy functional imported verbatim from build_downstream_relevance
  (single source of truth). Records per seed and mean/sd: |mean % gap|
  1.86+/-0.76, |median % gap| 1.61+/-0.99, weighted KS 0.0288+/-0.0078,
  and the Q0 (zero-anchor subgroup) gap (pooled |Q0| 2.66%; per-seed
  5.25+/-4.53). The floor is real-vs-real, so the oracle import path does
  NOT pull populace.fit; the reproduction test needs only PSID and runs
  live (seed 0, pinned to float precision).

gates.yaml gate_1.amendment_proposed (pure addition, zero deletions):
- change 1: runs-view c2st_auc_max moves gated -> reported-not-gated
  (PR #56: candidate-7 KS inside the real-real noise floor, central
  benefit gaps <=1.9%; the window-3 residual is benefit-immaterial
  texture per PR #54).
- change 2: a NEW gated benefit_space block on the candidate PIA-proxy
  panels: |mean %|<=5, |median %|<=5, deciles d3-d9 <=5 (d1 AND d2
  reported-not-gated -- the new anchor shows their real-real floor clips
  5% on 5/5 and 3/5 seeds), weighted KS <= committed anchor mean + 4*sd
  (machine-checkable derivation = 0.0599), and pooled |Q0 mean %|<=5. The
  5% bands cite the paper's pre-stated +/-5%-of-SSA-statistics success
  criterion (docs Phase-1 acceptance table); only KS is floor-derived.
  Candidate 7 measured +9.3% on Q0, so the amendment ADDS strictness
  where the evidence says it bites -- recalibration toward
  decision-relevance, not relaxation. Discriminator check on committed
  evidence: real-vs-real PASSES the block, candidate 7 FAILS it on Q0.

tests/test_gates_derivations.py: binds the proposed block -- the KS band
equals anchor mean + stated k*sd, every proposed gated metric carries a
derivation or an a-priori-source citation, the anchor's stats recompute
from its stored per-seed values, and the reported-not-gated d1/d2
partition matches the anchor's per-decile fragility.

ruff + black -l 79 clean; full pytest green in the repo .venv
(275 passed, 9 skipped -- the skips are pre-existing populace.fit gate
reproductions). Evidence chain: PR #54, PR #55, PR #56, issue #42.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Jul 6, 2026
…cks) (#58)

The tenth pre-registered gate-1 run, and the last planned candidate
iteration before the governance track resolves. Candidate 7's k-NN
conditional rank bootstrap VERBATIM with exactly two registered
substitutions, both conditioning refinements with no new tuned constant.
Frozen spec registered before the run in issue #42
(issuecomment-4897723604); implemented literally, no tuning.

Substitution 1 (long memory): every train donor record carries
u_w = Phi(what / sigma_hat_w), the donor person's correlated-noise-shrunk
permanent rank from candidate 3's stage-1 decomposition APPLIED TO THE
Z-PANEL (z = Phi^-1(rank) of positive observations; the same rank map that
forms u_prev/u_next). The k-NN third term becomes |u_w(donor) - u_A(target)|
at candidate 7's 0.25 weight, upgrading the donor side from a single noisy
anchor draw to the shrunk full-career permanent estimate. The target side
keeps u_A.

Substitution 2 (attachment-aware zero conditioning): for zero-anchor
holdout persons (u_A = p0/2 identically) every k-NN distance replaces the
third term with |d age|/40 + |d n_observed_periods|/13 (scales pinned as
the range widths -- age over the 25-59 filter, the observed-period count
over the 13 biennial reference years -- not tuned), and the donor pool is
restricted to train records whose person's own anchor earnings are zero.

Everything else -- donor pools, k=25, the 1/0.5 lag weights, the weighted
single-record draw, no smoothing/jitter, the re-entry pools, the regime
gate, the rank machinery, the gap rule, the substream seeding -- is
byte-identical to candidate 7. Protocol machinery imported from the
baseline runner (PR #40); rank machinery / participation gate from
candidate 5b (PR #52); the k-NN draw and anchor quintiles from candidate 7
(PR #55); the u_w decomposition from candidate 3 (PR #44); the reported
benefit-space functional from PR #56. Scored under the CURRENT locked gate;
the artifact additionally REPORTS the proposed benefit-space block (PIA-proxy
gaps incl. Q0) so this run carries evidence for both standards.

VERDICT: gate_1_pass = False (geometry 0/5, battery 0/5).

Substitution 1 overshot persistence rather than repairing it. Candidate 7
undershot the 10-year autocorrelation (mean 0.459, band 0.539 +/- 0.07);
candidate 8 overshoots it (mean 0.670) and now overshoots ALL THREE
autocorrelation lags -- 2yr 0.791 (dev 0.053-0.071), 4yr 0.733 (dev
0.066-0.085), 10yr 0.670 (dev 0.110-0.145) -- so the battery fails 5/5.
Mobility diagonal (0.61, within 0.05) still passes. Geometry fails 5/5: the
runs-view c2st (mean 0.5495) misses 0.54 on every seed; pairs-view c2st
(mean 0.5307) clears 0.53 on seeds 2-4 only.

The Q0 fix did not work. The zero-anchor subgroup's PIA-proxy overstatement
did not shrink -- Q0 mean gap +12.2% (candidate 7 +9.3%), Q0 median +24.0%
(c7 +22.9%), Q0 KS 0.092 (c7 0.097). Overall benefit space also degraded:
the persistence overshoot flipped the pooled mean gap to -2.1% (c7 +1.85%)
and worsened the KS to 0.040 (c7 0.025).

Reported-not-gated per seed: the u_w decomposition (rho 0.74-0.78,
sigma_hat_w ~0.72, permanent share ~0.55; u_w spans [0.002, 1.0], median
~0.45), the Q0 pool sizes (~6,400 pairs / ~4,400 triples / ~2,950 re-entry;
Q0 draws ~11-14% of positive draws), the neighbor-distance distribution,
usage shares, corner masses, and the full PIA-proxy benefit-space block.

Runner deterministic; seed-0 reproduction test run live in .venv-gate
(matches the committed artifact to float precision). Full pytest green in
the repo .venv (281 passed, 12 skipped). Battery-reference reproduced to
float precision before scoring.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Jul 6, 2026
* Gate-1 amendment proposal: decision-relevant recalibration

Amendment OBJECT under the locked pre-registration contract. It PROPOSES
changes and changes NOTHING: the locked gate_1.thresholds block is
untouched (locked: true stays; every locked value byte-identical), no
model reads the new subsection, and nothing takes effect until a fresh
adversarial referee round runs on this proposal and the maintainer
ratifies by merging.

New committed anchor (real-vs-real PIA-proxy floor at deployment scale):
- runs/pia_proxy_floor_9822.json + scripts/build_pia_proxy_floor.py: the
  ctx20 construction (40% draw seed 1000+s, halved at seed s) on the FULL
  locked filtered panel, both disjoint halves pushed through the pinned
  PIA-proxy functional imported verbatim from build_downstream_relevance
  (single source of truth). Records per seed and mean/sd: |mean % gap|
  1.86+/-0.76, |median % gap| 1.61+/-0.99, weighted KS 0.0288+/-0.0078,
  and the Q0 (zero-anchor subgroup) gap (pooled |Q0| 2.66%; per-seed
  5.25+/-4.53). The floor is real-vs-real, so the oracle import path does
  NOT pull populace.fit; the reproduction test needs only PSID and runs
  live (seed 0, pinned to float precision).

gates.yaml gate_1.amendment_proposed (pure addition, zero deletions):
- change 1: runs-view c2st_auc_max moves gated -> reported-not-gated
  (PR #56: candidate-7 KS inside the real-real noise floor, central
  benefit gaps <=1.9%; the window-3 residual is benefit-immaterial
  texture per PR #54).
- change 2: a NEW gated benefit_space block on the candidate PIA-proxy
  panels: |mean %|<=5, |median %|<=5, deciles d3-d9 <=5 (d1 AND d2
  reported-not-gated -- the new anchor shows their real-real floor clips
  5% on 5/5 and 3/5 seeds), weighted KS <= committed anchor mean + 4*sd
  (machine-checkable derivation = 0.0599), and pooled |Q0 mean %|<=5. The
  5% bands cite the paper's pre-stated +/-5%-of-SSA-statistics success
  criterion (docs Phase-1 acceptance table); only KS is floor-derived.
  Candidate 7 measured +9.3% on Q0, so the amendment ADDS strictness
  where the evidence says it bites -- recalibration toward
  decision-relevance, not relaxation. Discriminator check on committed
  evidence: real-vs-real PASSES the block, candidate 7 FAILS it on Q0.

tests/test_gates_derivations.py: binds the proposed block -- the KS band
equals anchor mean + stated k*sd, every proposed gated metric carries a
derivation or an a-priori-source citation, the anchor's stats recompute
from its stored per-seed values, and the reported-not-gated d1/d2
partition matches the anchor's per-decile fragility.

ruff + black -l 79 clean; full pytest green in the repo .venv
(275 passed, 9 skipped -- the skips are pre-existing populace.fit gate
reproductions). Evidence chain: PR #54, PR #55, PR #56, issue #42.

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

* Apply the amendment referee round: honest sourcing and full disclosure

The referee (PR #57 review) found two text-level defects, no numeric
ones. First, the +/-5% bands claimed the paper as their source; the
paper carries no such criterion. The a_priori_source now states the
exact provenance — the DRAFT Phase-1 acceptance tables, in AIME
units — notes that PIA concavity makes a 5% PIA-space band stricter
than the draft figure (roughly 7-9% AIME-equivalent), and declares
the bands as this amendment's own proposal-time criterion. The
source key renames to amendment_5pct_criterion accordingly. Second,
the runs-view c2st demotion silently changed the geometry-block
verdicts of four committed runs; a demotion_disclosure block now
lists every flip, shows that no overall gate-1 verdict changes
(each run still fails the battery and, under the amendment, the
benefit-space block — referee-verified baseline pooled Q0 +19.0),
and acknowledges where the anti-persistence duty concentrates.

Also aligns the anchor reproduction test's pe-us pin check with the
repo precedent (PR #41): skip with both revisions named on a
mismatched checkout instead of failing.

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Jul 7, 2026
… regime (fails under the amended gate) (#62)

The eleventh pre-registered gate-1 run and the first candidate scored
under the amended gate (PR #57/#59). Candidate 7's machinery verbatim
with two registered changes; the only calibration is the registered
train-side SMM for lambda.

Verdict under the amended gate: FAIL. Geometry 0/5, battery 2/5, pooled
Q0 -17.89% (> 5).

Two registered changes:
1. SMM-calibrated donor-coordinate blend. The k-NN third distance term
   becomes |lambda*u_w(donor) + (1-lambda)*u_A(donor) - u_A(target)| at
   the 0.25 weight; u_w is candidate 8's shrunk permanent rank, u_A the
   anchor ranks. lambda is calibrated per seed on the train split by SMM
   in the 5b tradition (grid {0,...,1.0}, autocorrelation-ladder SSE on
   the first 2,000 train persons, ties to the smaller lambda). lambda=0
   reproduces candidate 7; lambda=1 candidate 8.
2. Zero-anchor participation regime. Zero-anchor holdout persons draw
   participation from a gate refit only on zero-anchor train pairs and
   their re-entry innovations from a zero-anchor-restricted re-entry
   pool. Positive-anchor persons keep the shared gate and full pools
   exactly as candidate 7. Candidate 9 does NOT adopt candidate 8's
   attachment distance.

Findings:
- Chosen lambda per seed: {0: 0.2, 1: 0.0, 2: 0.3, 3: 0.1, 4: 0.0}. The
  train SMM never chose lambda above 0.3 and chose lambda=0 (candidate 7)
  on two seeds.
- The c9 pooled 10-year autocorrelation rung (0.514) lands inside the
  reference band [0.469, 0.609] and between the c7/c8 bracket
  (0.459/0.670) -- the blend achieved its aim on the 10-year rung in the
  pooled mean. But no single lambda on the grid lands all three rungs
  simultaneously: the registered risk materialized (the blend changes
  all three rungs together). Battery passes only 2/5 (seeds 2, 3);
  seed 0 fails the 2-year rung (dev 0.059), seeds 1/4 (lambda=0) leave
  the 10-year rung short.
- Geometry 0/5: the binding constraint is the pairs-view c2st_auc
  (0.531-0.550, all just over 0.53) on all five seeds; benefit-space
  additionally fails on seeds 0/2/3.
- The zero-anchor participation regime closed the never-worker
  resurrection (generated all-zero share 0.3155 vs real 0.3147, gap
  +0.0007, vs PR #61's +20.7pp for the shared gate) -- the participation
  law now matches reality. But the level over-corrected: pooled Q0
  PIA-proxy moved from c7 +9.3% / c8 +12.2% to c9 -17.89% (the restricted
  re-entry pool plus the resurrection fix together subtract more than the
  +9.3% they were meant to remove).

Artifact runs/gate1_rank_knn_v3.json (schema gate1_rank_knn.v3):
per-seed chosen lambda + SMM ladders, the amended-gate scorecard (the
benefit_space block per seed + pooled Q0), Q0 participation diagnostics,
and the standard diagnostics. The battery-reference bit-exact precheck
reproduced every committed value before scoring. Tests: seed-0
reproduction (live in .venv-gate) + the amended-verdict recomputation
block (24 pass in .venv-gate; 311 pass / 16 skip in the repo .venv).

Links issue #42; base machinery candidate 7 (#55); u_w candidate 8
(#58); benefit-space functional #56; C2ST forensics #54; amended gate
#57/#59; Q0 forensics #61.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Jul 7, 2026
…try under the amended gate) (#64)

The twelfth pre-registered gate-1 run, and the first whose every constant was
selected by nested validation (PR #63) rather than by outer-gate feedback.
Candidate 10 is the inner sweep's V1-lam0.1 variant at outer scale: candidate
7's k-NN conditional-rank-bootstrap machinery, candidate 9's zero-anchor
participation regime with its two poisons removed (the re-entry-pool
restriction dropped, Q0 targets held memory-exempt), and a FIXED lambda = 0.1
donor-coordinate blend for the non-Q0 targets. No calibration stage: lambda is
fixed, not chosen against any score.

Frozen spec: issue #42 comment 4902561460. Scored under the amended gate
(gates.yaml gate_1, PR #57/#59) exactly as run 11: runs-view c2st demoted,
gated benefit-space block folded into the geometry verdict, >=4/5 geometry AND
>=4/5 battery AND pooled Q0 (abs <= 5).

Verdict, exactly as computed: gate_1_pass = FALSE -- geometry 3/5 (needs 4/5),
battery 4/5 (passes), pooled Q0 +0.038% (passes). Seeds 0 and 1 each clip the
pairs-view C2ST (0.5315, 0.5330 vs 0.53); seeds 2/3/4 clear it. The only
battery failure is seed 0's 2-year autocorrelation (0.7896, deviation 0.0595 >
0.05) -- a short-lag overshoot from the memory injection, not the 10-year
undershoot of earlier candidates (every seed clears 4yr and 10yr).

Inner-vs-outer: the ~0.005-0.01 heat correction the inner sweep predicted for
the pairs C2ST delivered a reshuffle, not a uniform cooling -- mean cooled
-0.0014 (inner 0.5293 -> outer 0.5279), but seeds 0/1 heated up (crossing to
fail) while the worst inner seed (3, 0.5365) cooled to a comfortable pass
(0.5260). Still 3/5, one seed short -- exactly the forecast's named failure
(comment 4902561584, P(pass) ~0.42). The Q0 program was solved: pooled Q0
generalized inner +1.19% -> outer +0.04%, and the generated-vs-real all-zero
share gap is +0.0007 (no never-worker resurrection).

Generation verified byte-identical to the inner sweep's generate_variant at
memory_mode=lambda_blend, lam=0.1, use_zero_anchor_gate=True under candidate-7
seeding. Seed-0 reproduction run live in .venv-gate (float-exact). Full pytest
green in the repo .venv (361 passed, 22 skipped). ruff + black -l 79 clean.

Deliverables:
- scripts/run_gate1_candidate10.py -- deterministic; candidate-7 two-element
  substreams; the registered rules exactly.
- runs/gate1_rank_knn_v4.json -- schema gate1_rank_knn.v4; spec_registration =
  the candidate-10 comment; standard diagnostics + Q0 participation numbers +
  per-seed benefit_space + the amended scorecard.
- tests/test_gate1_qrf_candidate10.py -- seed-0 reproduction (skipif PSID +
  importorskip populace.fit) + generation-equivalence to the inner sweep + the
  Q0-exempt/full-pool checks + the amended-gate consistency block.

Links: issue #42; PRs #63 (inner-validation harness + design sweep), #62
(candidate 9), #61 (Q0 forensics), #55 (candidate 7).

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