# Quality gates: incremental-captures Criteria beyond the automatic tests. Each gate is pass/fail by reading the code. Tests live next to the modules they cover (fsdy, capture, capture_store, playback, cbd-tui). ## Skipped playable (D1) - [x] `[playable] skipped = true` parses; `skipped = false`, `skipped` combined with another field, and an empty table are typed `PlayableCardinality`-style errors — never panics. - [x] `from_track` on an `is_skipped` wire track writes a skipped playable (queue persistence and bookmarks keep skipped-ness); `to_track` sets `is_skipped` and keeps the lib path. - [x] `get_urls_for_track` on a skipped file is a typed error, not empty-vec success. ## Incremental capture (D2) - [x] Download captures write into the final folder with no tmp/swap and never delete existing entries; bookmark captures keep tmp-and-swap byte-identically (their existing tests pass unchanged). - [x] Enumeration enforces `max_dirs`/`max_tracks` before any download; the byte budget counts only bytes downloaded this run. - [x] Reuse rule: parseable toml + non-skipped playable (+ existing file for `file` playables) is not re-downloaded; skipped/broken/missing-audio entries are re-captured. - [x] Uncapturable tracks write skipped tomls (no more silent omission); real download failures abort the run but keep prior writes. - [x] Stream URLs and cookies never appear in errors, logs, or progress events (only names, paths, counts). ## Progress + RPC (D4) - [x] `CaptureLibraryNode` replies after validation (name, store enabled, download blessing) with the existing status mapping; the walk runs spawned and reports through `CaptureProgress` updates ending in exactly one `finished` event (success or error). - [x] The progress channel is bounded; a vanished receiver does not abort the capture. ## Playback (D3) - [x] `play` skips `is_skipped` tracks without a provider call and bounds skipping by the queue length at entry: an all-skipped repeat queue stops with a warning instead of spinning. ## TUI (D5, D7) - [x] Skipped tracks render red in queue and library; the current-track marker keeps precedence. - [x] Progress lines show name, done/total, and skipped count; finished lines expire on the render tick; errors render red. - [x] The `W` binding description and the download-capture input label warn that captures can take long and resume by name. - [x] The selected row of a focused pane renders colored items with the dark foreground (readable on the light bar); unfocused panes keep the colored foregrounds. ## Hygiene - [x] New/changed public items documented, stating error/edge behavior. - [x] `clippy -D warnings`, `fmt`, `taplo`, `markdownlint` clean; all tests green. - [x] `architecture/incremental-captures.md` reconciled where the implementation diverged.