test(cliffs): the ore recall gap is SIX cells, not thirty-one (#84) - #142
Merged
Conversation
The direct follow-on from #141, and another zero-capture fold. Measured against the game's REAL resource entities rather than the port's footprint model, so a shortfall in the rule's geometry cannot be confused with a shortfall in where the port puts the ore. the ore provably rejects 31 explained by base-box overlap with a real resource 21 additionally removed as CASCADE casualties of those 4 still unexplained 6 Four of the ten apparent misses were never geometry failures. They are single-ended cliffs (X-to-none / none-to-X) whose one end is trimmed when a neighbour is rejected, so the cascade force-destroys them. Charging those to a rejection rule's recall is counting the defect at the output instead of at the rule - the #114/#115 lesson, applied to our own scorecard this time. The remaining 6 are NOT near-misses, and that is the load-bearing negative. The honest measure is the factor the base box's half-extents would need to be scaled by to reach the nearest resource; distance is wrong, because the box is asymmetric (0.988 x 0.488). Five of the six need 1.42x to 3.28x. No plausible box correction gets there, and #110 already measured that the higher-catching variant LOSES, because a wider box buys true cells at the price of false rejections elsewhere. The sixth sits at 1.11x and is exactly the geyser cell the per-orientation rotbb box catches, so the one marginal case is accounted for rather than waved at. Zero over-removal is what makes the 21 trustworthy: destroying only those and cascading removes nothing the game kept. The rule remains pure precision; it is recall that is short, and now by six. That leaves a different question from the one #141 handed over - not "which cells does the box miss" but "what removes a cliff that no resource touches, only when resources exist". Verification: pnpm run verify green - 1549 app (up 6) + 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
This was referenced Aug 4, 2026
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.
The direct follow-on from #141, and another zero-capture fold. Measured against the game's real resource entities rather than the port's footprint model, so a shortfall in the rule's geometry cannot be confused with a shortfall in where the port puts the ore.
Four of the ten apparent misses were never geometry failures
They are single-ended cliffs (
X-to-none/none-to-X) whose one end is trimmed when a neighbour is rejected, so the cascade force-destroys them. Charging those to a rejection rule's recall is counting the defect at the output instead of at the rule — the #114/#115 lesson, applied to our own scorecard this time.The remaining 6 are NOT near-misses — do not widen the box
Distance is the wrong metric, because the box is asymmetric (0.988 × 0.488): a cell can be close in Chebyshev terms and still far outside it. The honest measure is the factor the box's half-extents would need to be scaled by to reach the nearest resource:
Five of six need 1.42× to 3.28×. No plausible box correction gets there, and #110 already measured that the higher-catching variant loses, because a wider box buys true cells at the price of false rejections elsewhere. The sixth is accounted for rather than waved at.
Zero over-removal
Destroying only the 21 and cascading removes nothing the game kept. The rule remains pure precision; it is recall that is short, and now by six rather than by ten or thirty-one.
Where that leaves it
A different question from the one #141 handed over — not "which cells does the box miss" but "what removes a cliff that no resource touches, only when resources exist".
Verification
pnpm run verifygreen — 1549 app (up 6) + 13 worker + 3 container tests, 0 warnings, exit 0. Measurement only; shipping accuracy unchanged.🤖 Generated with Claude Code
https://claude.ai/code/session_012VRsPwmSwjnFKVSS6jx9Mo