fix(simulation): PR #216 review fixes — footprint-wins enforcement, discriminating tests

Finding 2 became a real code fix: interstitial_fill_into now enforces
the footprint-wins conflict rule (column_has_voxel range probe) — the
FilledChunk absence contract was previously a documented promise the
code didn't keep against conflicting inputs; pinned by a fully-
overlapping-leaf test asserting per-tile resolution. The tautological
overlap test replaced with a real rects_overlap() geometric helper
(itself sanity-tested) applied pairwise. The degenerate-setback fix is
now a standalone pure fn shrink_lot_or_interstitial with four boundary
tests — honestly documented as unreachable from live traffic today
(every min_lot exceeds every setback), a robustness guard for future
recalibration. Both sub-chunk clip tests now reconstruct the full
32-tile union across the seam (disjoint + complete), including the
pre-existing footprint clip test (leave-cleaner). Brief's ChunkLayout
claim tightened to the verified no-production-consumer statement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 14:28:40 +02:00
co-authored by Claude Fable 5
parent 5b5cdc85a3
commit 9c5aa79852
3 changed files with 332 additions and 22 deletions
+6 -2
View File
@@ -77,8 +77,12 @@ by *construction*, with no residual "what's left over" category to guess at:
(`skeleton_gen.rs:872-887`, `// Perimeter street margin`) — it is claimed by
the future street-network layer (D-234), not by this ticket. `ChunkLayout`
(`spacing`/`offset`/`rotation_steps`, `generator.rs:103`) is the *only* other
street-adjacent data on `BlockSkeleton` today, and it is an unconsumed stub
(grep confirms no reader) reserved for that same future street-network
street-adjacent data on `BlockSkeleton` today; grep confirms it has **no
production consumer** (its only reads are `#[cfg(test)]` assertions in
`skeleton_gen.rs` — `skeleton_has_streets_and_local_lattice` — checking that
the plan-time writer set it; the writer itself, `generate_quarter_skeleton`'s
layout-mode application, populates it but nothing downstream of plan time
consumes it yet). It is reserved for that same future street-network
step — not something this ticket needs to or should resolve.
Every block-local tile is covered by exactly one of these three at generation