Skip to content

test(cliffs): the border enrichment is NOT a cascade artifact (#84) - #143

Merged
wormeyman merged 1 commit into
mainfrom
cliffs-residual-cascade-audit
Aug 4, 2026
Merged

test(cliffs): the border enrichment is NOT a cascade artifact (#84)#143
wormeyman merged 1 commit into
mainfrom
cliffs-residual-cascade-audit

Conversation

@wormeyman

Copy link
Copy Markdown
Owner

The ore thread's two wins (#141, #142) came from auditing populations rather than hunting mechanisms, so the border residual gets the same treatment.

The obvious deflation — after #142 showed four of ten ore "misses" were cascade casualties — is that the unexplained cells are largely casualties too. The residual is counted at the output (cells the game killed that our predicates don't), so a casualty of a correct kill scores as an independent defect.

It is not that

Applying the destruction cascade — confirmed against the game in #139 and again in #141 — to the port's own kill set:

unknown on border z false rejections
before cascade 33 22 2.36 12
after cascade 23 17 2.67 14

The cascade explains 10 of the 33, and the enrichment concentrates rather than dissolving — the share rises too, so it is not the z moving on sample size alone.

The border signal has now survived both of its plausible deflations: the orientation-reach rival (#134) and cascade double-counting here.

A shipping gain, measured and deliberately not taken

The same run says the port is leaving cells on the table: 10 fewer missed for 2 more false rejections, net 8. renderVulcanusCliffs does not cascade at all today — applyCliffConnections exists but only specs use it.

It is recorded rather than adopted on purpose, because adopting it:

  • changes rendered orientations as well as positions,
  • needs cliffErrorBudget.spec.ts moved in lockstep (that file's header records the day it drifted), and
  • applyCliffConnections additionally bundles the updateConnections model, which is an explicit upper bound and is not what this audit applied.

Look at the 2 new false rejections before the 10 wins. They are cells the game KEPT that our cascade removes, and #134 recorded a gate the port does not model: Cliff::destroyEnd refuses to forceDestroy when entity flag bit 4 of +0x6e is set, returning with the orientation UNCHANGED rather than merely undestroyed.

Scope, stated because the headline differs from the published 44

This pairs 14 regions across three fixtures, not the 15 the 44-cell figure covers — [1500,1500]'s ON/OFF pair lives in a fixture with a different case shape.

The overlap is the correctness check, and it passes: on the eight-region border batch this harness reproduces 17 unknown, 12 on a border, exactly what cliffResidualBorderEnrichment publishes for that batch. Without that, every other number here could be measuring something else.

Verification

pnpm run verify green — 1554 app (up 5) + 13 worker + 3 container tests, 0 warnings, exit 0. Measurement only; shipping accuracy unchanged.

🤖 Generated with Claude Code

https://claude.ai/code/session_012VRsPwmSwjnFKVSS6jx9Mo

The ore thread's two wins came from auditing populations rather than hunting
mechanisms, so the border residual gets the same treatment. The obvious
deflation - after #142 showed four of ten ore "misses" were cascade casualties
- is that the unexplained cells are largely casualties too, since the residual
is counted at the OUTPUT and a casualty of a CORRECT kill scores as an
independent defect.

It is not that. Applying the destruction cascade - confirmed against the game
in #139 and again in #141 - to the port's own kill set:

                    unknown   on border    z      false rejections
  before cascade      33         22       2.36          12
  after cascade       23         17       2.67          14

The cascade explains 10 of the 33, and the enrichment CONCENTRATES rather than
dissolving. The border signal has now survived both of its plausible
deflations: the orientation-reach rival (#134) and cascade double-counting.

A shipping accuracy gain is measured here and deliberately NOT taken: 10 fewer
missed cells for 2 more false rejections, net 8. renderVulcanusCliffs does not
cascade at all today - applyCliffConnections exists but only specs use it.
Adopting it changes rendered ORIENTATIONS as well as positions, needs
cliffErrorBudget.spec.ts moved in lockstep, and applyCliffConnections also
bundles the updateConnections model, which is an explicit UPPER BOUND and is
not what this audit applied.

The 2 new false rejections are the thing to look at first, not the 10 wins:
they are cells the game KEPT that our cascade removes, and #134 recorded a
gate the port does not model - Cliff::destroyEnd refuses to forceDestroy when
entity flag bit 4 of +0x6e is set, returning with the orientation UNCHANGED.

Scope is stated in the spec because the headline differs from the published
44: this pairs 14 regions across three fixtures, not 15, because [1500,1500]'s
pair lives in a fixture with a different case shape. The overlap is the
correctness check and it passes - on the eight-region border batch this
harness reproduces 17 unknown, 12 on a border, exactly what
cliffResidualBorderEnrichment publishes.

Verification: pnpm run verify green - 1554 app (up 5) + 13 worker + 3
container tests, 0 warnings, exit 0. Measurement only; shipping accuracy
unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012VRsPwmSwjnFKVSS6jx9Mo
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