docs: ADR-0006 Amendment 1 — undo/snapshot design (every-mutation, hybrid, batch) + plan
Settles the undo/snapshot half (U1/U2) before implementation: - every-mutation single-step undo (supersedes destructive-only model) - hybrid whole-project snapshot (db backup API + yaml/csv copy), reconciling ADR-0006 with ADR-0015's derived-db model - persisted N=50 ring; redo discarded on new work - batch ops (replay + future) record one undo step; import excluded - --no-undo disable switch Adds the implementation plan and updates README index, requirements U1/U2, and CLAUDE.md in lockstep.
This commit is contained in:
+17
-5
@@ -365,11 +365,23 @@ handoff-14 cleanup; 449 after B2/C2.)
|
||||
|
||||
## Undo and replay (per ADR-0006)
|
||||
|
||||
- [ ] **U1** Auto-snapshot before destructive operations into a
|
||||
ring buffer (initial size N=10, tunable).
|
||||
- [ ] **U2** `undo` restores the most recent snapshot; `redo`
|
||||
re-applies; both prompt for confirmation showing the snapshot
|
||||
timestamp and a summary of the changes that will be discarded.
|
||||
- [ ] **U1** Auto-snapshot before **every** data/schema mutation
|
||||
(DSL + SQL) into a persisted ring buffer (size N=50, tunable),
|
||||
per ADR-0006 Amendment 1 (single-step undo, superseding the
|
||||
original destructive-only model). Snapshot is a hybrid
|
||||
whole-project copy (database via online backup API + `project.yaml`
|
||||
/ `data/*.csv` as files); staged before the mutation's transaction,
|
||||
finalised after the db commit (preserves ADR-0015 §6). A batch
|
||||
command (`replay` / future batch ops) records one boundary
|
||||
snapshot; `import` takes none. A `--no-undo` CLI flag disables
|
||||
snapshotting. *(Designed + amended + planned in
|
||||
`docs/plans/20260524-adr-0006-undo-snapshots.md`; not yet
|
||||
implemented.)*
|
||||
- [ ] **U2** `undo` restores the most recent snapshot (database +
|
||||
text, directly); `redo` re-applies (redo stack discarded on new
|
||||
work); both prompt for confirmation naming the command being
|
||||
undone / re-applied (`Y` confirms). *(Designed + amended; not yet
|
||||
implemented — see U1's plan.)*
|
||||
- [x] **U3** `history.log` records every submitted command in
|
||||
append-only form, tagged with its outcome (Iteration 2;
|
||||
broadened by ADR-0034). Format: `<ISO-8601 Z>|<status>|<source>`
|
||||
|
||||
Reference in New Issue
Block a user