Feature-integration corrections for Feature 13 (PR #110) at head 4d9d8af. Maestro task 4fc551f0-3c11-4c15-b638-f2c08a28eb29.
F13-01 (HIGH): replenish/batch failures and Retry now render alongside a non-empty deck, not only when it is empty.
F13-02 (HIGH): the client learns the active batch's job from the server on deck load and when a decision joins an existing batch, so an emptied deck shows skeletons while suggestions are being produced rather than "All caught up".
F13-03 (HIGH): arrow-key decisions are scoped so an open sheet or confirmation dialog does not decide the background card.
F13-04 (HIGH): the deck keeps three visible depths when supply is short, instead of showing fewer than three cards while suggestions remain.
Checks: gofmt, go vet, go test -race -count=1 ./..., CGO_ENABLED=0 go build ./..., make sqlc-check (no drift), web typecheck + tests + build, make build, docker build . - all passing.
Feature-integration corrections for Feature 13 (PR #110) at head `4d9d8af`. Maestro task `4fc551f0-3c11-4c15-b638-f2c08a28eb29`.
- F13-01 (HIGH): replenish/batch failures and Retry now render alongside a non-empty deck, not only when it is empty.
- F13-02 (HIGH): the client learns the active batch's job from the server on deck load and when a decision joins an existing batch, so an emptied deck shows skeletons while suggestions are being produced rather than "All caught up".
- F13-03 (HIGH): arrow-key decisions are scoped so an open sheet or confirmation dialog does not decide the background card.
- F13-04 (HIGH): the deck keeps three visible depths when supply is short, instead of showing fewer than three cards while suggestions remain.
Checks: gofmt, go vet, go test -race -count=1 ./..., CGO_ENABLED=0 go build ./..., make sqlc-check (no drift), web typecheck + tests + build, make build, docker build . - all passing.
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>
Deck returned a pending or running batch's job id without checking that
the job was still queued or running, so after a restart failed the job
the page polled a dead job as the active batch. Deck and startBatch now
share activeBatch, which runs FailOrphanedSuggestionBatches before
reading the active batch; Deck therefore uses a write transaction.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Feature-integration corrections for Feature 13 (PR #110) at head
4d9d8af. Maestro task4fc551f0-3c11-4c15-b638-f2c08a28eb29.Checks: gofmt, go vet, go test -race -count=1 ./..., CGO_ENABLED=0 go build ./..., make sqlc-check (no drift), web typecheck + tests + build, make build, docker build . - all passing.
Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
Independent Codex gpt-6-sol review: APPROVED for this exact commit.