test(cliffs): 11 of the 25 missed destructions are the ORE (#84) - #123
Merged
Conversation
#115 ruled the ore out for the whole residual in one clause: "no adjustment to a lava collision box can ever reach them, and neither can the ore rule (all 25 are `ore = false`)". `ore = false` there is OUR predicate's output, not the game's behaviour, and `vulcanusOreRejection.ts` says on its own front page that the rule is "exactly right where it fires, simply too narrow" - it accounts for 20 of the 31 cells the ore actually suppresses. Ruling the ore out with it is circular. The non-circular instrument was already on disk and already covers the right region: `oracle-vulcanus-cliff-ore-direction` re-runs `[1500,1500]`, where every one of the far ten lives, with the resources switched off. Switch them off and SIX OF THE FAR TEN APPEAR. - Of the 25: 11 ore (7 calcite + 4 geyser), 11 unknown, 3 outside the lever's region. The unidentified-mechanism population is 11, not 25. - The far ten's clusters have DIFFERENT causes - the `1542/1546` knot is the geyser, the two singletons are calcite, and only the `1742/1746` vertical run of four survives as unexplained. - #115's lava-distance grouping is not the causal grouping: ore cells land in its near, mid and far groups alike. Do not act on the near/far split. - The 0.710 and 0.645 recall figures are the PLACED and RAW stages of the same predicate, not a disagreement. Precision is 1.000 at both. - Sharpens #122: of its two proven destructions, `1546,1550.5` is a geyser suppression, so the unknown group's destruction proof rests on `1746,1538.5`. The ore gap itself is not new - `vulcanusOreRejection.ts` has documented the narrowness since it was written, with the geyser arm excluded deliberately. What is new is that this known gap is where 11 of the 25 went. #115's careful half stands and is untouched: the distances are right, no lava box reaches the far group, and the tile resolver is exonerated 70/70. Its doc comment is corrected in place rather than left to mislead. Measurement only - nothing shipping changed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015jeznBmWiZywUc7cBw9xFU
This was referenced Aug 4, 2026
Merged
wormeyman
added a commit
that referenced
this pull request
Aug 4, 2026
…count is 14 (#84) (#126) Everything the last three PRs established about the ore rule was measured on [1500,1500], because that is the only region `oracle-vulcanus-cliff-ore-direction` re-runs with the resources off. A rule characterised on one region and never tested on another is fitted until proven otherwise, so the lever was captured for the two regions the entities fixture covers and it never did. | region | resources | ON | OFF | suppressed | | --- | --- | --- | --- | --- | | [0,0] | 945 tungsten-ore | 283 | 283 | 0 | | [-1200,800] | 1047 coal | 387 | 387 | 0 | - PRECISION 1.000 SURVIVES. Our predicate fires on zero cells in both regions, so 1992 resource entities across two fresh regions produce no false positive. This is the arm that would have caught a rule fitted to [1500,1500]. - THE UNEXPLAINED POPULATION IS 14, NOT 11. #123 could only park `106,26.5`, `90,38.5` and `-1050,1022.5` as undetermined because the lever's region did not cover them. It does now, and the ore suppresses nothing there. - Re-confirms #110's attribution - 27 calcite, 4 geyser, 0 tungsten and coal - at far larger scale than the arm that produced it. The non-vacuity check is in the fixture rather than argued: "0 suppressed" is also what a lever that never reached the generator prints, and the OFF arms read back 0 resources against 945 and 1047. What this does NOT establish: neither region contains calcite or a geyser, the only two controls that suppress anything. So this is a PRECISION test, not a recall test - the rule's positive evidence is still one region, and #125's cascade result is still measured on [1500,1500] alone. Breaking the rule would need a region with calcite in it, and the oracle set has none. New fixture is deliberately separate from `oracle-vulcanus-cliff-ore-direction` so regenerating it cannot rewrite ground truth four merged PRs depend on. PROVENANCE entry added. Claude-Session: https://claude.ai/code/session_015jeznBmWiZywUc7cBw9xFU Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
wormeyman
added a commit
that referenced
this pull request
Aug 4, 2026
… is on chunk borders (#84) (#131) Two things were stuck at a sample size rather than at an idea. The unexplained population was 14 cells, and every structural test on it landed at 1.4-1.9 sigma against its base rate - what a partition looks like at n=14 whether or not a cause exists. And the shipped accuracy figure was measured on THREE regions, chosen years into this investigation for reasons unrelated to sampling. Four more regions with the ore lever, ~2.5s a capture. THE PORT GENERALISES, measured where it was never fitted: | | original 3 | the 4 new | | --- | --- | --- | | raw cells | 1756 | 2789 | | game cliffs | 1531 | 2590 | | raw a strict SUPERSET | yes | yes, all four | | predicate precision | 0.971 | 0.9877 | | predicate recall | 0.889 | 0.8090 | | false rejections | 6 | 2 | [3000,3000] is exact - 362 raw, 362 game, nothing to explain - and is also the one region with no resource entity at all, which is what every result from #123 onward predicts. THE CHUNK-BORDER ENRICHMENT REPLICATES OUT OF SAMPLE: | | unexplained | on border | base rate | | --- | --- | --- | --- | | original 3 | 14 | 9 (64.3%) | 45.0% | | the 4 new | 13 | 9 (69.2%) | 47.2% | | combined | 27 | 18 (66.7%) | ~46.3% | Read the status before the number. The replication is 1.59 sigma alone and the combined figure ~2.1 - short of decisive, and this is a LEAD not a result. What changed is the KIND of evidence: the hypothesis was formed on the original 14, dismissed there as noise at 1.45 sigma, and is tested here on 13 cells captured afterwards in regions chosen before any of them was known. Why it matters: chunk borders are `updateConnections`' entire domain - the one rule that treats border cells differently, which our port measures firing ZERO times and models as an UPPER bound. #122 promoted its gate from inert to load-bearing; #127 showed it cannot be scored from map-gen output. This is the first positive evidence that it does anything. And n is 27 now, which is what unblocks the next attempt: at 14 nothing could be settled; at 27 the border question is answerable with one more capture round. New fixture + PROVENANCE entry. Claude-Session: https://claude.ai/code/session_015jeznBmWiZywUc7cBw9xFU Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#115 ruled the ore out for the whole residual in one clause:
ore = falsethere is our own predicate's output, not the game's behaviour.vulcanusOreRejection.tssays on its own front page that the rule is "exactly right where it fires, simply too narrow" - it accounts for 20 of the 31 cells the ore actually suppresses. Ruling the ore out with it is circular.The non-circular instrument was already on disk and already covers the right region:
oracle-vulcanus-cliff-ore-directionre-runs[1500,1500]- where every one of the far ten lives - with the resources switched off throughautoplace_controls.Switch them off and six of the far ten appear
The far ten's clusters have different causes, which is why treating them as one population was never going to work:
1542,1554.51542,1558.51546,1550.51546,1554.5(the knot)1590,1618.51602,1622.5(the singletons)1742,1530.51746,1530.51746,1534.51746,1538.5(the vertical run)The unidentified-mechanism population is 11, not 25, and the far group's share of it is 4, not 10.
The distance grouping is not the causal grouping
"Near the lava" and "caused by the lava box" are not the same claim, and neither are "far from lava" and "unidentified mechanism". The near/far split is what the previous handoff proposed to act on; act on the lever instead.
Two recall numbers, two stages, no disagreement
#110 gives recall 0.710, this gives 0.645. #110 scores PLACED cells after the crossing stage, where the predicate fires on 20 and the placement loses 22; this scores the raw queue, which is the set
applyCliffsactually tests and the stage #114 established as the right place to count a rule at. Precision is 1.000 at both - our predicate has never fired on a cell the ore does not suppress.Also sharpens #122
Of the two far cells whose destruction #122 proved from the game's own orientations,
1546,1550.5is now known to be a geyser suppression - so the genuinely-unknown group's destruction proof rests on1746,1538.5alone.What is NOT new, and what is NOT touched
The ore gap itself is not a new defect -
vulcanusOreRejection.tshas documented the narrowness since it was written, with the geyser arm excluded deliberately (includeGeyser: false, because our geyser placement rolls and misses the game's) and the calcite remainder open. What is new is knowing that this known gap is where 11 of the 25 went.#115's careful half stands entirely: the distances are right, no lava box reaches the far group, #111's entity lever and the cliff-versus-cliff refutation are untouched, and the tile resolver is exonerated 70/70. Its doc comment is corrected in place rather than left to mislead - the #121 lesson.
Arms worth noting
Where it leaves #84
11 cells with no known cause - 5 within two tiles of our lava (still a legitimate box-shape question), 6 not - plus 3 the lever's region cannot speak about. Next: widen the ore rule and re-score (precision 1.000 means headroom; the geyser arm is a model gap, not a shape question), and re-run the lever on the other two regions, which would also re-test this split out of sample.
Verification
pnpm run verifygreen - 1458 app (up 9) + 13 worker + 3 container tests, 0 warnings, exit 0. Measurement only; nothing shipping changed.🤖 Generated with Claude Code
https://claude.ai/code/session_015jeznBmWiZywUc7cBw9xFU