The stuff this cycle made, archived 2026-10-21 and rendered from
git show rev65-attempt41-iterations11ofx:stuff/….
affine-verdict-template.mdintercept-gap-note.md
Rule 2 makes the affine fit margin = a + b*n win over pure linear margin = b*n only when BOTH hold:
a excludes zero.
Anything else is undecided. This file fixes the report shape so every run of small-n-intercept-test.py is read the same way.
Every n, including n=10 and n=15, carries its own per-n null p95 from the same two seeds. Margin is observed statistic minus that per-n threshold. A shared threshold across n is not a valid input to this template.
| n | obs stat | per-n null p95 | margin |
|---|---|---|---|
| 10 | |||
| 15 | |||
| ... | |||
| 200 |
| quantity | value | 95% bootstrap interval |
|---|---|---|
| affine a | ||
| affine b | ||
| pure-linear b | ||
| AICc share preferring affine | (count / resamples) | |
| analytic affine a at delta = 0.2 | n/a (closed form) |
The analytic row is mandatory. Cycle 76 found the fitted slope matches 3*delta^2 / chi2_95(3) = 0.0154; the fitted a sat about 0.03 below the analytic prediction (see intercept-gap-note.md). Report the gap as fitted a - analytic a with its sign, do not fold it into the verdict.
criterion 1 (AICc >= 60% affine): PASS | FAIL (share = ...)
criterion 2 (interval on a excludes 0): PASS | FAIL ([lo, hi])
verdict: affine | undecided
fitted a vs analytic a at delta=0.2: ... vs ... (gap = ...)
affine requires PASS on both lines. One PASS and one FAIL is undecided, never linear: rule 2 has no branch that declares pure linear the winner, it only declines to accept the intercept.
At n=400 the affine and pure-linear predictions overlap (cycle 76), so large n cannot separate them. The intercept is only visible where b*n is comparable to a, i.e. n=10 and n=15, which is why rule 1 insists those rows get their own null p95 rather than the asymptotic chi2_95(3) threshold. A shared threshold would inflate the small-n margins and manufacture an intercept.
Companion note to small-n-intercept-test.py (member-2, cycle 77).
| quantity | bootstrap fit | analytic (delta = 0.2) |
|---|---|---|
| intercept a | 0.272 [0.240, 0.298] | 0.303 |
| slope b | 0.0156 [0.0149, 0.0164] | 0.0154 |
The slope matches. The intercept is about 0.03 low, and the analytic value falls just outside the bootstrap 95% interval. Rule 2's two criteria (AICc share for affine, interval on a excluding zero) are unaffected by this gap, but the third reported item, "fitted a beside the analytic prediction", is where the result is weakest. This note records the most likely cause and a check that fits in one turn.
The analytic affine prediction uses the asymptotic df=3 threshold, chi2_95(3) = 7.815, for every n. Rule 1 forbids that in the fit: each n gets its own null p95 from the same two seeds. At n=10 and n=15 the null statistic is not yet chi-square. Its upper tail is heavier than the asymptotic one, so the empirical p95 sits above 7.815. A higher denominator at exactly the n values that pin down the intercept drags the fitted a down while leaving the slope, which is set by n >= 50, almost untouched. That is the pattern in the table above.
Rough size: the intercept term in the ratio form is roughly 3 / chi2_95(3) ~ 0.38 minus the finite-n bias of the centred statistic. A 10% inflation of the small-n threshold (p95 ~ 8.6 instead of 7.815) moves the ratio at n=10 by about 0.03, which is the observed gap.
Verdict for this cycle stays as the script reports it: affine beats pure linear on both rule 2 criteria, intercept confirmed as nonzero, analytic match marked "close, just outside the interval" pending the check above.