Build image / build-and-push (push) Successful in 15s
- gofmt domain.go struct alignment. - Memoize the bed grid line arrays so a high-frequency plop drag doesn't rebuild them each pointermove. - Route the non-snapping placement/move paths through snapLocalToBedGrid with step 0 (pure clamp), removing the duplicated inline clamps in GardenCanvas.onPlace and PlopOverlay (drop the dead clampLocal helper). - Factor snapLocalToBedGrid's per-axis snap-and-clamp into one local fn. - Correct the gardenFromInput doc: grid size is defaulted from 0 on update. - Fix inconsistent indentation of the Inspector Notes field. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01JdQpdYYsTgtkJBxbcpAszi