You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Re-score phase 5 against the landed #269, and correct the prediction (#225)
Rebased onto `df3e39e`, which narrowed `basis_noise`'s output scale. Six of the
24 frozen counts moved. The point of this commit is not the counts - it is that
this branch predicted, in writing and before it could check, which ones would.
hairlineCracks 3 -> 2 directly exposed at output scale 0.6
floodCracksA 15 -> 15 not exposed
floodCracksB 40 -> 40 not exposed
floodPaths 10 -> 10 not exposed
floodBasaltsFunc 8 -> 9 exposed VIA hairline_cracks
mountainPlasma 7 -> 11 directly exposed at 125 and 625
elev 113 -> 115 directly exposed at 250 and 150
elevation 113 -> 115 same field as elev in this fixture
temperature 196 -> 196 unmoved despite reading elev
## Correction one: exposure is transitive
`fixtures.rs` said "do not expect the other four to move", reasoning that
eleven of this layer's twelve DIRECT `basis_noise_expr` calls sit at
power-of-two output scales and are blind by construction. Three of the four
held. `floodBasaltsFunc` did not.
The reason is in the layer's own verbatim transcription at the top of
`src/noise/expressions/vulcanusCracks.ts`:
flood_basalts_func = min(max(flood_cracks_a - 0.125, flood_paths),
flood_cracks_b)
+ 0.3 * min(0.5, hairline_cracks)
It READS `hairline_cracks`, so the single exposed term reaches it. The three
fields that held are exactly the three that never touch it. The rule is that a
field is exposed if it reads an exposed site directly OR through any field it
composes - counting call sites misses that, and this is the correction.
## Correction two: hairlineCracks got WORSE, 3 to 2
That is not evidence against #269. The primitive is graded 196/196 against the
game at five output scales in `test/basisOutputScale.spec.ts`, which is as
settled as this project gets. It is the both-directions movement #273 measured:
these are deep composed chains carrying other unported narrowings, so correcting
one term shifts values slightly and a position that happened to land exactly
right can stop doing so. A count falling by one at 61 positions says the field
is still wrong for reasons #269 does not address - the `input_scale` question
recorded on that issue is the next term to look at.
Recorded rather than smoothed over, because a count that moves the wrong way is
the kind of thing a port quietly re-baselines and then cannot explain later.
Comments carrying the old numbers are updated in the same pass: the helper,
crack, elevation and temperature blocks in `fixtures.rs`, and the phase 5
section of CLAUDE.md. Worst residuals are left labelled as measured before #269,
since only the counts were re-measured after it.
175 Rust tests pass. Full gate green at VERIFY_RC=0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X2wz8eFazisYuENEkmBvvG
0 commit comments