diff --git a/docs/development/native-appearance-welcome/BACKUPS_AND_RESET.md b/docs/development/native-appearance-welcome/BACKUPS_AND_RESET.md index 4f5a903b..9e48593b 100644 --- a/docs/development/native-appearance-welcome/BACKUPS_AND_RESET.md +++ b/docs/development/native-appearance-welcome/BACKUPS_AND_RESET.md @@ -50,3 +50,15 @@ Manual terminal checks still needed: open /changes, review and restore a harmles **Interrupted writes (D4).** `outcome` stays `prepared | applied` so older builds still read every entry; how an unfinished write ended is extra evidence in `resolution` (`reverted`, `rollback-incomplete`, `finalized`, `partial`). `Journal.transactionState` reconciles an entry from the bytes on disk, never from assumptions: `applied`, `in-progress` (another live process owns it), `not-applied`, `partially-applied`, `applied-unfinalized`, `conflicted` (a file now matches neither its before nor after image), `reverted`, `rollback-incomplete`, `partial`, `indeterminate` (a file cannot be read safely). An in-process failure records `reverted` or `rollback-incomplete`. In `/changes`, unfinished entries are counted in the notice and marked `!`; Enter reviews a rollback (a normal restore with its own undo checkpoint; only files whose bytes would change and differ from what NMSh wrote need the second confirmation), and `F` marks an entry applied only when every file holds the written bytes (no file is touched). A successful rollback marks the entry `reverted`, naming the undo checkpoint. Unresolved prepared entries are never pruned automatically. Tests kill a real writer process with SIGKILL after the entry is recorded, after the first of two files, and before finalization (`tests/backupsIntegrity.test.ts`). Limits: the per-host appearance and shader ownership records each describe one file group and are always restored together with that group, so they are not reconciled per tool. PID reuse can make a long-dead writer look `in-progress`; that state blocks nothing but reconciliation advice. + +## History, reset and retention (D5–D7, 2026-10-29) + +**Readable history (D5).** Each row is `HH:MM · [+N more] · · `, grouped by local day. The application comes from the path (Kitty, Ghostty, Vim colors, Starship, NMSh settings, …); NMSh's own records (settings, ownership JSON) are never named as the subject when a user-facing file is in the entry. The writer's label stays visible as "Recorded as: ·