Plan waves 9-10: manual entry, then online search; chained runner

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RWoivrRUEmJLFFwbsrGkqQ
This commit is contained in:
Spriteandclaude committed 2026-09-13 17:30:38 +00:00
1 parent 0c0b8466cc
commit 9b74f50565
4 files changed
+605

No files matched your search

+29
View File
@@ -737,3 +737,32 @@ non-matching task name), and after killing it. Only the real worker counts as ru
**When checking a wave, compare the guard log with the worker's `.state`:** a
`workers still running` renewal timestamped AFTER `.state` says SUCCESS means
the guard is stuck. It is not a slow worker.
## Waves 9 + 10 — K-manual then L-search, CHAINED: launched 2026-09-13
The Wave-8 crash never recurred and the user has parked it. Two user-requested features,
run IN SEQUENCE (they share `ui/library`, `ui/nav`) with NO orchestrator between them —
the user asked for wave 10 to start straight after wave 9 without waiting on them.
- **Wave 9 `tasks/K-manual.txt`** — add a book by hand with no ISBN. New `ui/add/`
screen + `Routes.addBook(title, isbn)`, entry points on the library FAB/empty state and
the scan screen's manual-ISBN dialog. Before this there was NO way to add a book with no
barcode (`saveManualEntry` required an ISBN).
- **Wave 10 `tasks/L-search.txt`** — library search bar also searches Open Library
`search.json` + Google Books `volumes?q=`, on SUBMIT only; "In your library" on top;
deduped across all three sources. User decisions recorded in the prompt: submit-only,
"in your library" = owns SOME edition, ISBN filled only when unambiguous (OL work with
exactly one distinct ISBN-13, else exactly one GB ISBN-13, else none).
Live-verified API fact: **OL search omits `isbn` unless `fields=` asks for it.**
**Runner: `tasks/wave-chain.sh 9:K-manual 10:L-search`** (new). Holds the lease itself
(wave-guard would release it during the between-wave gate), runs each worker in the
foreground, then a MECHANICAL gate (assembleDebug, testDebugUnitTest, verifyPaparazziDebug,
XML test count up, no build files, no `always 'false'`). Red -> one fresh `<task>-fix`
worker -> re-gate -> still red = sentinel says FAILED and the chain STOPS. Green ->
`git add -A` commit (message says "ORCHESTRATOR REVIEW STILL PENDING") + push, then next wave.
Logs: `logs/wave-chain.log`, `logs/gate-<task>.log`, `logs/WAVE9-DONE`, `logs/WAVE10-DONE`,
`logs/CHAIN-DONE`. Baseline: 205 tests, 2 skipped.
**The gate is not acceptance.** Still owed by the orchestrator for BOTH waves: read each
`.summary`, read the diff, eyeball the new Paparazzi PNGs, check CancellationException is
rethrown in every new catch, and check wave 10's dedupe judgement call in its report.