Review queue: failures you can see and retry, filters that count, and a real Regenerate
Release notes 2026-09-15 — a set of review-queue changes on vocion-core main since v2.5x: a failed execution is named and retryable, the queue filters by card type with true counts, Regenerate is an action capability whose feedback is a learning signal, and a run is claimed before it resumes so a double click runs it once.
Shipped: merged to vocion-core main between the previous deployed pin and v2.69.0; included in the 2026-09-15 deploy. Commits cited inline. Part of the 2026-09-15 release notes.
The outcome
The review queue is where a person's decisions enter the system, so it has to report state rather than leave it to be inferred: what failed, what is pending, what a click will do.
What changed
A failed execution is visible, named, and retryable (36083e10). When an approved action's execution throws, the run is marked failed with the error named and the card offers Retry (features/review/ReviewActionCard.tsx, routers/Review.ts; ActionService.test.ts covers the failed state).
Filter the queue by card type, with counts that are true (0d056246). Chips per proposal kind (features/dashboard/ReviewTypeChips.tsx); the counts come from the review router's card-type facets and are pinned by ReviewService.cardType.test.ts; GET /api/v1/reviews exposes the same filter.
Regenerate is an action capability, and the feedback is a learning signal (82354c3b, 23b343e0, ffdef67e). One feedback field on the card, a Regenerate that runs the agent's skill turn for that record with the feedback in context, no raw payload dump. Regenerating is server truth on the run, so the card holds its place while the agent pass runs after the response (3db0cb04).
A run is claimed before it resumes (4aa06a6d, aeb5c956). Approving a paused mission or workflow run claims it first, so a double click — or two reviewers — runs the task once. A lost claim answers CONFLICT (an ORPCError with the message "This run is no longer resumable — someone may have already approved it, or it has moved on.", routers/Review.ts); the tests are Review.resume.test.ts and Missions.resume.test.ts.
Decided runs are recognised (8ab3b049). When a proposal's record comes back changed after a decision, the proposal outcome is named rather than re-proposed; dedup is scoped to the action, not the key alone (6a587253).
The Up-next rail folds when the dock is open (21f77524) and pages its list in blocks of fifty (ReviewFocus.tsx reads useDockOpen()).
Why together
Each is small; the commits are linked so the change is auditable one by one. Two related changes have their own posts: agents recommend a decision and decisions become learning candidates.
Docs: docs/review-ops.md.
Where this lives in the repo
- Queue and decisions:
services/ReviewService.ts; resume-with-claim inrouters/Review.tsandrouters/Missions.ts(testsReview.resume.test.ts,Missions.resume.test.ts) - The card and its filters:
features/review/ReviewActionCard.tsx,features/dashboard/ReviewFocus.tsx - Regenerate as a capability:
services/agents/skillTurn.ts(the scoped skill-turn executor) - Docs:
docs/review-ops.md