- Store: one failed list read no longer marks running jobs as ended; two in
a row, or a good list without them, do (M1). A good read resets the
backoff, except for a stream that keeps dropping while the list reads fine
(M2). Finished jobs the server pruned are dropped (M3). Numbers group as
en-US, like the server's lines (M13).
- Job view: a job the store's list no longer has shows the not-found state
(M3). Focus moves to the job heading when Cancel scan goes away, and to the
item's title link in the list (M4). The detail is read only when its listed
rows change or the open log grows, using the summary's new listed and
log_length (M12).
- Viewer rows open by exact identity: each scan row records its root's
listing index, the source must still carry the row's label, and the
workspace listing gains an exact `path` filter (M8, M9).
- Scan rows name the prompt by its Library title, stored title first (M10).
- A toast with a link stays 20 s, and any toast stays while hovered or
focused (M14).
- A real two-batch scan cancelled after batch 1 keeps partial counts (M7).
- TESTING.md: D54, D56 and D57 updated (M5, M6).