UX review: item 5 is live, and what the backup nearly missed

Stopping the container does not checkpoint the WAL: petal.db on disk was four
hours stale while 2 MB of her writing sat in petal.db-wal. A lone
`cp data/petal.db` would have backed up the wrong day — and 0015 is the first
migration here that rebuilds a table, so that backup was the one that mattered.
Recorded for the next one.

Claude-Session: https://claude.ai/code/session_016y6gyuHkQXPiEuW8RGQyua
This commit is contained in:
prosolis
2026-07-28 00:35:45 -07:00
parent b23c5a9a13
commit ce5de68b9b
+20 -6
View File
@@ -604,12 +604,26 @@ vitest tests. So the three sessions of work she hasn't seen, she can now
see. Untouched: 6, 7, 8, item 3's incremental half, item 5's re-scoped see. Untouched: 6, 7, 8, item 3's incremental half, item 5's re-scoped
Translate card type.)* Translate card type.)*
*(Sixth session, second half: item 5 done — see the subsection under it. It sits *(Sixth session, second half: item 5 done — see the subsection under it
on `feat/translate-card`, **not deployed**; `main` is at the stack merge. Two **merged and live** (`b23c5a9`). Two findings there are worth reading before
findings there are worth reading before picking the next item: the inline picking the next item: the inline underline needs a per-type CSS rule or it
underline needs a per-type CSS rule or it renders invisibly, and at her actual renders invisibly, and at her actual viewport the rail is disabled — the inline
viewport the rail is disabled — the inline hover card is what she sees, which hover card is what she sees, which inverts item 7's premise. Untouched: 6, 7, 8,
inverts item 7's premise. Untouched: 6, 7, 8, item 3's incremental half.)* item 3's incremental half.)*
**Migration 0015 on the live database.** It rebuilds the suggestions table, so
unlike 0014 it could have dropped her rows. Backed up first — and the backup
had to be the whole WAL set (`petal.db`, `-wal`, `-shm` in
`data/backups/pre-0015-translate-20260728T073254Z/`), because stopping the
container does **not** checkpoint: `petal.db` was still four hours stale while
2 MB of her writing sat in the `-wal`. A lone `cp data/petal.db` would have been
a backup of the wrong day. Worth remembering for the next migration.
After the rebuild, on the live database: `integrity_check ok`, still 112
suggestions across 9 documents, both indexes recreated, `'translate'` in the
CHECK, and every existing row still carrying the label she has already read (the
seven `clarity` rows include the mislabelled Chinese one — by design, only new
findings get the new type; if you want that card relabelled, edit the sentence).
**Suggested next (sixth session onward):** items 6, 7, 8 are all untouched **Suggested next (sixth session onward):** items 6, 7, 8 are all untouched
and all small; item 5's re-scoped Translate card type is the cheapest and all small; item 5's re-scoped Translate card type is the cheapest