67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
# 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.
|