Skip to content

test(cliffs): the residual is a SUPPRESSION, and the wider sweep is not worth capturing (#84) - #109

Merged
wormeyman merged 1 commit into
mainfrom
cliffs-suppression-not-field
Aug 3, 2026
Merged

test(cliffs): the residual is a SUPPRESSION, and the wider sweep is not worth capturing (#84)#109
wormeyman merged 1 commit into
mainfrom
cliffs-suppression-not-field

Conversation

@wormeyman

Copy link
Copy Markdown
Collaborator

#108's own handoff proposed ~40 more headless captures. This says don't. oracle-vulcanus-cliff-bands's constant1 arm already covers the same region under the same collapsed rule at 70..1150, so its observations fold straight into the fine sweep's and answer the question for free.

The field's exoneration is much wider than #107 stated

#107 checked 998 two-sided brackets and left the one-sided bounds unused. Those falsify just as well - "this corner is above 910" is refuted by a port value of 800.

corners constrained from one side only 1711
of those, contradicting the port's value 0

The silence is not the field running out of range

Widening the window 5x (70..1150 rather than 700..900) rescues exactly 1 of the 681 corners the fine sweep left unbracketed. And 294 corners whose port value sits in [700,900] get no constraint of any kind across all 50 levels - while the port asserts 8,906 crossings on their edges over those same levels, with not one of the 294 where the port is silent too.

For a field error to produce that, it would have to move those corners outside [70, 1150] entirely and leave all 1,711 one-sided bounds elsewhere satisfied. The two sides are not disagreeing about a value; they are disagreeing about whether anything is emitted.

Two suppressor candidates refuted, each against a base rate

population n rock in the cliff's box default gate fully shut
matched (base rate) 18654 1312 = 7.03% 8588 = 46.0%
surplus 1200 127 = 10.58% 617 = 51.4%
wrong orientation 693 35 = 5.05% 311 = 44.9%

Rocks - Surface::wouldCollide's unported ENTITY half, the obvious candidate - do not survive. 1.5x on the surplus is weak, and the wrong-orientation cells are anti-correlated at 5.05% against 7.03%. A suppressor cannot be anti-correlated with half the defect it is supposed to cause.

The gate row is worth more than the refutation it came from. It was a confound check, not a candidate: if routing cliffiness at a literal 1 had silently not taken, the whole [1500,1500] residual would just be the gate. The game emits 8,588 cells the default gate would have blocked outright, so the routing genuinely opened it. The collapsed-rule oracle that #106, #107 and #108 all rest on is not confounded on this axis - which had never been checked.

Where that leaves it

Excluded for the suppression: the field (twice over, by brackets and by one-sided bounds), rocks, the cliffiness gate, the smoothing, the repair, and - since #108 - the stage.

What remains is which cells the game refuses, and the list is stated as open rather than closed. #106's trap is available here, so the next candidate needs a positive measurement rather than promotion by elimination.

Item of #84; the issue stays open.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ExK3ASs5i2KMm9NwWqnZuj

…ot worth capturing (#84)

#108's handoff proposed ~40 more headless captures - "a sweep well outside
[700,900] is the measurement that would close the gap". Don't capture it.
`oracle-vulcanus-cliff-bands`'s constant1 arm already covers the SAME region
under the SAME collapsed rule at 70..1150, so its observations fold straight
into the fine sweep's and answer the question for free.

**The field's exoneration is much wider than #107 stated.** That PR checked
998 two-sided brackets and left the ONE-SIDED bounds unused - but those
falsify just as well, since "this corner is above 910" is refuted by a port
value of 800. **1,711 one-sided bounds, 0 contradicting the port.**

**The silence is not the field running out of range.** Widening the window 5x
rescues exactly **1** of the 681 corners the fine sweep left unbracketed. 294
corners whose port value sits in [700,900] get no constraint of any kind
across all 50 levels, while the port asserts **8,906** crossings on their
edges over the same levels - and there is not one of the 294 where the port
is silent too. A field error would have to move those corners outside
[70,1150] entirely AND leave all 1,711 one-sided bounds satisfied.

**Two suppressor candidates refuted, each against a base rate:**

| population | n | rock in box | default gate shut |
| --- | --- | --- | --- |
| matched (base) | 18654 | 7.03% | 46.0% |
| surplus | 1200 | 10.58% | 51.4% |
| wrong orientation | 693 | 5.05% | 44.9% |

Rocks - `wouldCollide`'s unported ENTITY half, the obvious candidate - do not
survive: 1.5x on the surplus is weak and the wrong-orientation cells are
ANTI-correlated at 5.05% against 7.03%. A suppressor cannot be
anti-correlated with half the defect it is supposed to cause.

**The gate row is worth more than the refutation it came from.** It was a
confound check, not a candidate: if routing `cliffiness` at a literal 1 had
silently not taken, the whole residual would just be the gate. The game emits
**8,588** cells the default gate would have blocked outright, so the routing
genuinely opened it - the collapsed-rule oracle that #106, #107 and #108 all
rest on is not confounded on this axis, which had never been checked.

Excluded for the suppression now: the field (twice over), rocks, the
cliffiness gate, the smoothing, the repair, and since #108 the STAGE. What
remains is WHICH cells the game refuses, and the list is stated as open -
#106's trap is available here, so the next candidate needs a positive
measurement rather than promotion by elimination.

Item of #84; the issue stays open.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ExK3ASs5i2KMm9NwWqnZuj
@wormeyman
wormeyman merged commit 586d9e1 into main Aug 3, 2026
2 checks passed
@wormeyman
wormeyman deleted the cliffs-suppression-not-field branch August 3, 2026 17:12
wormeyman added a commit that referenced this pull request Aug 3, 2026
…169 (#84) (#111)

#110 asked for a lever that isolates the non-ore suppressor the way
`autoplace_controls` isolated the ore, with the suspect unnamed. This adds
two, through `map_gen_settings.autoplace_settings` - a knob
`autoplace_controls` cannot reach, since a control only touches prototypes
that name one and the rocks, chimneys and `crater-cliff` name none.

**No placed entity suppresses a Vulcanus cliff.** Switching the whole
`entity` category off removes 409 rocks, 115 chimneys, 45 rock explosions
and all 8 `crater-cliff`s, and the cliff set does not move by one cell.
Rocks were previously refuted only statistically against our own rock
model (#109); this is the class excluded positively, with the lever's own
proof in the same run three ways.

**Cliffs do not collide with each other**, refuted by the game's own
output rather than a model: 293 pairs of its own cliffs have overlapping
collision rectangles.

**Lava suppresses 169 cells and our rejection gets 166, with 5 false
positives** - precision 0.9708, recall 0.9822, the first real score that
rule has had. Its errors ARE the residual: the 3 it misses are 3 of the 10
surplus cells and the 5 it invents include all 3 of the port's missing
ones. They point both ways, so the box's shape is wrong rather than its
size - left measured and unfixed, per #88.

**With neither ore nor lava, recall is 1.0000** (1049 matched, 9 wrong, 12
surplus, 0 missing of 1058). The port produces a strict superset of the
game's cells, so everything left is over-placement and the question is now
what else the game refuses.


Claude-Session: https://claude.ai/code/session_015C8AbtvYMdc7ed3rnAZbhP

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant