R-278: raising SCAN_RUNS found that SCAN_RUNS had never been read
Asked to raise the scan until the redcap's pack size stopped flipping. Measured the threshold -- unstable at 3000 and 4000, stable across twenty seeds at 6000 -- raised it, and the re-record took fifteen seconds, which was impossible. winRate takes three parameters and pickSize passed SCAN_RUNS as a fourth. JavaScript discards it, so every scan has always run at RUNS and SCAN_RUNS has never been read by anything. The fix I was asked to make was inert in the same way as the thing it was fixing. winRate takes runs now. The redcap is still n=3 with gain 6.3, arrived at stably rather than luckily; the_arrears drops out of the measurable band at an honest scan, 31 packs to 30; the_committee moves 2 to 6 and stays pinned. Claim check still passes, bestiary regenerated. The only signal was a number being too small. A fifteen-second re-record is good news, and good news is what nobody investigates. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
00e5a993cc
commit
a7eca91a9c
@@ -6403,3 +6403,48 @@ fights solo, read the wipe column when the agents-down column was the one that m
|
||||
explained a power by a mechanism that does not hold. Each was found by somebody asking me to
|
||||
act on it. The entry is worth keeping in that state rather than tidying: it is the clearest
|
||||
example in this log of confident, internally consistent, repeatedly wrong.
|
||||
|
||||
## R-278 — raising SCAN_RUNS found that SCAN_RUNS had never been read
|
||||
|
||||
R-277 left the redcap's recorded pack size one seed in eight from being 2 instead of 3, so
|
||||
the instruction was to raise the scan until it stopped flipping. Measured rather than
|
||||
guessed: still unstable at 3000 and 4000, stable across twenty seeds at 6000. Raised it.
|
||||
|
||||
**Then the re-record took fifteen seconds, which was impossible.** Fifteen times the scan
|
||||
work cannot cost what 400 runs cost, so I read the call:
|
||||
|
||||
```js
|
||||
const winRate = (foes, targets, seed) => { for (let i = 0; i < RUNS; i++) ...
|
||||
...
|
||||
const w = winRate(Array(n).fill(spec), "random", seedFor(...), SCAN_RUNS);
|
||||
```
|
||||
|
||||
**Three parameters, four arguments.** JavaScript discards the fourth in silence, so every
|
||||
scan this guard has ever run used `RUNS`, and `SCAN_RUNS` — declared, commented, passed —
|
||||
has never been read by anything. Changing it from 400 to 6000 also did nothing, which is
|
||||
how it surfaced: the fix I was asked to make was inert in exactly the way the thing it was
|
||||
fixing was.
|
||||
|
||||
That is the defect this project names as its own signature — a value computed and never
|
||||
read — living inside a guard, undetected by seventeen other guards, for as long as the
|
||||
scan has existed. **No guard can catch it.** The constant is used at its one call site and
|
||||
the call site looks correct; only the clock disagreed.
|
||||
|
||||
**What the honest scan changed.** `winRate` takes `runs` now, and the re-record costs 49
|
||||
seconds instead of 15:
|
||||
|
||||
- **the redcap is still n=3, gain still 6.3** — the answer R-277 gave was right, and is now
|
||||
arrived at stably rather than luckily.
|
||||
- **the_arrears drops out of the measurable band**, 31 packs to 30. Its best size was chosen
|
||||
on 1000 runs and does not survive 6000, which means it has been carrying a recorded focus
|
||||
gain that the scan would not now stand behind.
|
||||
- **the_committee moves n 2 to 6** and stays pinned either way, so nothing is measured there
|
||||
and nothing changes.
|
||||
|
||||
**The claim check still passes**: focus fire helps in all 30, all of them clear of their own
|
||||
noise. Bestiary regenerated, and it prints 30 where it printed 31.
|
||||
|
||||
**The lesson is not about arity.** It is that the only signal was a number being too small,
|
||||
and I nearly did not look — a fifteen-second re-record is good news, and good news is what
|
||||
nobody investigates. The same instinct that made the README quieter as the build got worse
|
||||
(R-268) made this cheaper as the scan got weaker.
|
||||
|
||||
Reference in New Issue
Block a user