crabidy/plan/incremental-captures.md

33 lines
1.7 KiB
Markdown

# Plan: incremental-captures
Ordered tasks; each names its verification (tests and/or gates in
`quality/incremental-captures.md`).
- [x] **T1 — Skipped playable in fsdy + proto.** `PlayableSpec.skipped`,
`Playable::Skipped`, cardinality validation, `from_track_skipped`,
`from_track` preserves skipped-ness, `to_track` sets `is_skipped`;
`Track.is_skipped = 6` in the proto; fix all struct literals. Verifies:
fsdy parse/round-trip tests; gates "Skipped playable".
- [x] **T2 — Two-phase walk + incremental download sink.** Enumerate
(caps) then fetch; `Sink::Download` writes into the final folder,
reuses satisfied entries, writes skipped tomls for uncapturable tracks,
keeps progress on abort; `Sink::Link` keeps tmp-and-swap. Progress
callback plumbed through. Verifies: capture/capture_store tests
(resume, reuse, skipped toml, abort-keeps-progress, caps); gates
"Incremental capture".
- [x] **T3 — Proto `CaptureProgress` + accept-then-stream RPC.** New
oneof update; provider validates then replies and spawns the walk with
a bounded progress channel; rpc forwards progress into the update
broadcast. Verifies: gates "Progress + RPC".
- [x] **T4 — Playback skip.** Flag-based skip without provider call;
skip loop bounded by queue length. Verifies: playback tests; gate
"Playback".
- [x] **T5 — TUI.** Red skipped tracks (queue + library), capture
progress lines with expiry, warnings in help + input label, focused
selection contrast fix. Verifies: cbd-tui render/dispatch tests; gates
"TUI".
- [x] **T6 — Full verification.** Workspace suite green; clippy/fmt/
taplo/markdownlint clean; quality gates ticked.
- [x] **T7 — Docs.** `plan/summary.md` section incl. deviations;
reconcile `architecture/incremental-captures.md`.