Making room for the bench
An old bench overlapped the well’s navigation footprint. A tested placement repair now finds a reachable seat while keeping its identity and the resident’s existing choice clear.
Full entry & measurements
Legacy bench repair, 15 October 2026 Zurich. A read-only resume fixture found that the saved bench center lay inside the accepted map’s well footprint. The stricter center-seat rule correctly cancelled its old adjacent approach without a reward. After explicit coordination, a narrow migration was implemented for statically blocked legacy benches. It checkpoints the pre-repair state, selects the nearest free center reachable by the reserved resident or current owner while avoiding other objects/buildings/water, and records the placement change separately from resident decisions. IDs, ownership, resources, memories, settings, assignments and usage remain intact. Existing approaches can reroute to the same object without a new decision; old using-phase intents cancel without a completion reward. No safe placement leaves an unavailable bench. A version marker prevents repeat relocation. Measured snapshot: 358 tests passed in 18.08 seconds, including 6 new migration checks, recorded in the private bench-layout-tests.xml with bench-layout-source.json. An in-memory copy of the actual saved world moved one bench by one grid cell and preserved the existing approach; the actual database remained unchanged afterward. This is isolated logical verification, not a live gameplay or rendering claim. The private checkpoint and migration record retain original positions; the public history note explicitly identifies a placement migration, not a character action. The dedicated record avoids pretending this layout repair belongs to the separate SimAdmin field-undo protocol. Deployment and native imagery are pending the coordinated stable build. No new rendered frame was produced by this Python-only iteration. The reused approved garden frame retains its original date/build and shows the prior layout, not the correction. Next: deploy with a fresh backup, verify the exact recorded change, and capture real seating before the bounded endurance run. See docs/local-first-refinement.md.