Address PR bot review on Phase 2 checkpoint stores
main·
Commit

- Fix local-settings checkpoints override (Cursor Bugbot, medium): the loader returned early if the BASE checkpoints block failed to decode, so a valid block in settings.local.json never got to override it — contradicting the documented "local replaces base wholesale" semantics. Reworked to extract the raw block from local-then-base and decode/validate only the block that wins, so a malformed block in the overridden file never blocks the winner. Added a regression test (valid local overrides invalid base).
- Reuse jsonutil.WriteFileAtomic in fsstore.save instead of the hand-rolled temp+rename (Copilot): it uses a unique temp name, fsyncs, and cleans up the temp file on failure rather than leaving it behind.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com Entire-Checkpoint: 6ce520beb1cc
Checkpoints
Checkpoint 1