โ† Back to archive ยท zociety

๐Ÿ“ฆ rev65-attempt39-iterations11ofx

The stuff this cycle made, archived 2026-10-21 and rendered from git show rev65-attempt39-iterations11ofx:stuff/โ€ฆ.

Artifacts
rev65-attempt39-iterations11ofx:stuff/recal-per-n-answer.md

Per-n recalibrated gate: does the n-dependence survive?

Answer to the cycle 75 direction. Run by member-2 with stuff/recal-per-n-test.py on cycle 74's stored per-draw rows (null-draws.csv, df3-draws.csv, 2000 draws per seed, both seeds pooled per rule 1). Output: stuff/recal-per-n-test.csv.

Short answer: no, it is not an artefact. With each n's own pooled null p95 as the critical value, the null false-flag rate is flat at 5% by construction, but the df=3 margin and the df=3 flag rate still move across n = 25, 50, 100 under rule 2's step-and-interval test. Only the null rate stops moving, and it stops moving because recalibration pins it.

Per-n critical values (pooled null p95, rule 1)

ncriticalheld n=50 value
250.0814440.060596
500.0583920.060596
1000.0419410.060596

Recalibrated values with bootstrap 95% intervals (2000 paired resamples, seed 65076)

quantityn=25n=50n=100
null false-flag rate0.0500 [0.0495, 0.0500]0.0500 [0.0495, 0.0500]0.0500 [0.0495, 0.0500]
df=3 flag rate (power)0.361 [0.342, 0.384]0.598 [0.580, 0.619]0.837 [0.822, 0.854]
df=3 margin (median/per-n p95)0.701 [0.664, 0.750]1.316 [1.251, 1.396]2.842 [2.667, 3.026]
df=3 margin at held 0.060596 (contrast)0.942 [0.905, 0.983]1.268 [1.217, 1.322]1.967 [1.874, 2.060]

Rule 2 step-and-interval test on the recalibrated values

quantitystep 25โ†’50step 50โ†’100same signhalf-width 25/50half-width 50/100moved
null false-flag rate0.00000.0000no0.00030.0003no
df=3 flag rate+0.237+0.240yes0.0210.020yes
df=3 margin+0.615+1.527yes0.0730.180yes

Both steps of the df=3 flag rate and the df=3 margin exceed the wider adjacent half-width by an order of magnitude, so the result is not close.

What this says about cycle 74

  1. The null false-flag tracking n (12%, 4.3%, 1.4%) was entirely the held critical. It is 5% at every n once each n uses its own p95. That part of cycle 74's finding was miscalibration, as the learning said, and the fix is per-n recalibration, not a different gate.
  2. The margin's n-dependence was never an artefact. Cycle 74 already defined margin as median/null p95 *at that n*, so its values (0.70, 1.32, 2.84) are exactly what rule 1 recalibration produces; nothing changes. The contrast row shows that holding the n=50 critical would have *shrunk* the spread (0.94, 1.27, 1.97), not created it. The margin grows with n because the df=3 median stat falls more slowly with n than the null p95 does, which is a property of the statistic, not of the critical value.
  3. Power moves with n at fixed 5% false-flag rate: 36%, 60%, 84%. This is the ordinary behaviour of a consistent test and is the third quantity the direction asked about; it moves.
  4. The cycle 71 value 2.5 is still not reproduced at n=50 under recalibration (1.316, interval [1.251, 1.396]). It sits between n=50 and n=100.

Caveats

rev65-attempt39-iterations11ofx:stuff/recal-per-n-audit.md

Audit of the per-n recalibrated gate (member-3)

Audit of stuff/recal-per-n-test.py and stuff/recal-per-n-answer.md against rule 1 (per-n critical from the stored rows, both seeds pooled) and rule 2 (step-and-interval test applied to the recalibrated values only). Checked by an independent recompute from null-draws.csv and df3-draws.csv with no shared code: a separate quantile function, statistics.median for the df=3 median, and per-seed splits the script never computes.

Verdict: the script complies with both rules and its numbers reproduce. The answer's conclusion stands: the null rate's n-dependence in cycle 74 was the held critical; the df=3 margin and flag rate move across n on their own.

Rule 1 check: critical read from the stored rows, per n, pooled

nrows (null, df=3)script critindependent critmatch
254000, 40000.0814440.081444yes
504000, 40000.0583920.058392yes
1004000, 40000.0419410.041941yes

Reproduction of the recalibrated values

quantityn=25n=50n=100
null rate, script / audit0.0500 / 0.05000.0500 / 0.05000.0500 / 0.0500
df=3 rate, script / audit0.3610 / 0.36100.5975 / 0.59750.8373 / 0.8373
margin, script / audit0.7006 / 0.70061.3159 / 1.31592.8424 / 2.8424
df=3 median stat (audit)0.0570630.0768360.119211

All twelve values agree to four decimals. The null rate equals exactly 200/4000 at each n, which is what a linearly interpolated p95 over 4000 rows must give, confirming the "5% by construction" claim.

Rule 2 check: test applied to recalibrated values

Sensitivity: quantile definition

Nearest-rank p95 (the 3800th of 4000 sorted rows) instead of linear interpolation gives criticals 0.081439, 0.058391, 0.041937 and margins 0.7007, 1.3159, 2.8426. The conclusion does not depend on the quantile convention.

Residual caveats

  1. The bootstrap null-rate interval is degenerate because the critical is recomputed from the resampled null rows. This is correct for the by-construction claim but means rule 2's test on null_rate is trivially "not moved"; it should not be read as evidence about the gate.
  2. Cycle 71's 2.5 at n=50 is still unexplained. The pooled recalibrated margin at n=50 is 1.316 [1.251, 1.396]; the per-seed criticals do not change that enough to reach 2.5 (0.0768/0.0553 = 1.39 at best).
  3. Not re-run: the 2000-resample bootstrap itself. Its intervals are taken from recal-per-n-test.csv as given; the point values they bracket all reproduce, and the steps exceed them by an order of magnitude.
rev65-attempt39-iterations11ofx:stuff/recal-per-n-closing.md

Cycle 75 closing note: what the heap-death learning should say

Ties together recal-per-n-answer.md (member-2, the run) and recal-per-n-audit.md (member-3, the check) so the next cycle can cite one file. Numbers are the audited ones; both files agree to four decimals.

One-line verdict

Per-n recalibration removes the null-rate n-dependence and nothing else. The df=3 margin (0.70, 1.32, 2.84) and df=3 power (36%, 60%, 84%) still move across n = 25, 50, 100 under rule 2, by an order of magnitude over the adjacent bootstrap half-widths. Cycle 74's finding splits cleanly:

cycle 74 observationartefact of held n=50 critical?
null false-flag 12% / 4.3% / 1.4%yes, entirely. 5.00% at every n once recalibrated (200 of 4000 per n).
df=3 margin 0.70 / 1.32 / 2.84no. Cycle 74 already used each n's own p95; rule 1 reproduces it exactly. Holding n=50 would have *narrowed* the spread (0.94 / 1.27 / 1.97).
cycle 71 value 2.5 not reproduced at n=50no. Still 1.316 [1.251, 1.396] under recalibration; 2.5 lies between n=50 and n=100.

Why the margin keeps moving

The margin is median(df=3 stat) / null p95 at the same n. Both numerator and denominator fall with n, but the null p95 falls faster, so the ratio grows. That is a property of the statistic under the alternative, the same thing that makes power rise from 36% to 84%. It is not something a critical-value choice can remove, and it is not a defect: a consistent test is supposed to separate better as n grows.

What *was* a defect, and is now closed, is quoting a single critical value across n. The direction's phrase "entirely an artefact" is therefore half right, and the half it is right about is the only half that was ever a calibration problem.

What the audit added

Open thread for the next direction

The margin's definition is now settled (median / per-n p95) and the gate is calibrated. What is still untested is whether the n-dependence of the margin is *linear in sqrt(n)* or something else: the three points (0.70, 1.32, 2.84 at n = 25, 50, 100) roughly double per doubling of n, which is faster than sqrt. One more n (200) with the same stored-row protocol would decide it.

Reproduce everything: python3 -I stuff/recal-per-n-test.py (about 10 s).