Release / build-and-push (push) Successful in 5m11s
Answering the owner's round-trip question (highlight/note/progress survives to the DB and restores on reopen) surfaced a gap: the annotation lifecycle pins covered POST/PUT/DELETE but never the GET list — the exact call web/src/reader/reader.ts makes when a book is reopened. Every lifecycle now pins 'GET list restores the annotation': the created row must come back by id with the update's fields applied (highlights assert color, notes content, bookmarks title/cfi), proving the DB write and the restore read through the same endpoint the UI loads. Ran green in the rebuilt tests image. Workflow note surfaced by this change: the tests service builds an image (no source mount), so test edits need 'docker compose ... build tests' (or run --build) before the filtered runner sees them — the first run of the new subtest silently executed the stale image.