After Discover showed failed batch j1, another session could finish a
newer batch. The deck then reported neither an active nor a failed batch,
as the server suppresses a failure a later batch supersedes, but the page
kept following j1 and its error stayed shown (or, before j1's first poll,
"Finding new side quests…" did, and the error arrived later).
Each new read of the deck is now reconciled: one reporting neither batch
stops following a job known to have failed, by its poll or by the deck's
previous read. A followed job that succeeded is still left followed, so
its end is read as before.
The replenish-failure test's stub now reports its failed batch on the
deck, as the server does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The deck reported only a pending or running batch, so a Discover page
opened after a batch failed (or was interrupted by a restart) had no job
to follow and showed "All caught up" or the remaining cards with no
error. GET /api/v1/suggestions/deck now also returns failed_batch: the
newest batch when it failed, read in the same snapshot after orphaned
batches are failed, so at most one of active_batch and failed_batch is
set and a later batch supersedes the failure. The page follows the
failed batch's job like the active one, so its failure shows with the
existing Retry, which asks for a new batch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixes the Feature 13 review findings on the Discover deck (Maestro task
4fc551f0-3c11-4c15-b638-f2c08a28eb29):
- F13-01: a batch failure (start, poll or job) is shown with its Retry
whatever the deck has, so a replenish that fails while cards remain is
no longer silent until the deck runs out.
- F13-02: GET /api/v1/suggestions/deck reports the batch pending or
running (active_batch, read in the deck's snapshot), and a decision
that calls for a replenish returns the job of the batch it started or
joined. The page follows a newly reported active batch, so a reopened
page or a second session shows skeleton cards while the batch runs
instead of "All caught up".
- F13-03: ← / → leave the deck alone while it is inert behind a modal
(the Quest log sheet or its confirmation).
- F13-04: a one- or two-card deck keeps all three depths: skeleton cards
stand in for the missing ones while a batch finds more Side quests,
blank stack-edge cards while none is coming.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>