# Review: Job stage observability

Spec source: task prompt; plan.md was absent.

## Findings

1. **Collector vocabulary and stampStage: MET.** `collector/src/requests/requests-store.ts:116-121,404-412` defines and validates the fixed vocabulary, appends stage receipts, and ignores a repeated current stage.
2. **Machinery writers: NOT MET.** Store mappings exist at `collector/src/requests/requests-store.ts:387-401,440-445`, but repository call sites invoke `recordReceipt` only for failed receipts at `collector/src/server.ts:900,911`. No factory, gate, lander, or deploy watcher call sites were added. Transitioning to shipped at `collector/src/requests/requests-store.ts:328-361` also does not stamp live.
3. **Card strip and fallback: MET.** `apps/web/src/lib/request-board.ts:50-60` reads the latest valid stage; `apps/web/src/components/requests/RequestsBoard.tsx:99-109` renders the Stepper and honest fallback.
4. **Drawer timeline: MET.** Stage receipts use normal trail entries (`collector/src/requests/requests-store.ts:410-411`), and `apps/web/src/components/requests/RequestDrawer.tsx:62,78-86` renders all trail entries.
5. **Fail-open: MET.** `collector/src/requests/requests-store.ts:415-417` catches piggyback stage-write failures.
6. **Edge-triggering: MET.** `collector/src/requests/requests-store.ts:408-409` no-ops when the latest stage is repeated.
7. **Dark landing/no services: MET.** The reported diff adds no poller, daemon, or service.
8. **Live acceptance: NOT MET.** No acceptance artifact was supplied, and missing external writers prevent machinery-driven end-to-end advancement.
9. **Specified tests: NOT MET.** No tests or fixtures were added for collector behavior, writer seams, all UI stages, fallback, or out-of-order arrivals.

## Verdict

5 of 9 requirements met. Approval is blocked by missing machinery integrations, missing shipped-state live stamping, missing required coverage, and absent real live acceptance evidence.
