fix(vloer): mark a pull request whose reviewer kept failing as unreviewed #207
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "ryangr0/replace/195-reviewer-retry"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Replaces #195 (fix(ploeg): retry a failed reviewer and close review_failed when no review came) after the Ploeg separation in #206. Its Ploeg part is ploeg-hq/ploeg#47; this PR moves Unfold's pin to that branch and carries the rest.
Commits
42001eccbuild(ploeg): pin ploeg-hq/ploeg#47 to retry a failed reviewer55c57ce4docs: list review_failed in how to review an agent pull request (frombb9b3861fa)d58ff0acfix(vloer): mark a pull request whose reviewer kept failing as unreviewed (from146cf69fee)a4dabce0chore(site): re-record the demo replay with the review_failed wording (fromc2ced7378a)Merge order
build(ploeg)commit to the merge commit on Ploeg'smain, then merge. Until then theploeg-pincheck is red by design: it requires the pinned commit on Ploeg'smain.Verification (local, at
a4dabce0with Ploeg376ac60c)mise run verifywith the result cache, as a pull request runs it: all gates passed. That includes the Ploeg group (its ownscripts/verify.shat the pin), Vloer, the extension, the demo replay check, integration (managed qualification) and docs.What happened to each commit of #195
bb9b3861fa55c57ce4("docs: list review_failed in how to review an agent pull request")146cf69feed58ff0acc2ced7378amise run demo-recordasa4dabce0The original had no reviews or comments. Its checks were red because
developmentitself failed atmise install --locked; #206 fixes that lock. No earlier check result carries over.Original description of #195
Implements the accepted ADR-0043 (VIK-1304, handoff EXEC-05).
Problem
When a reading Run failed,
retryFailedWriterlogged "a reading Run failed; its findings are missing" and the plan moved on. When that reader was the reviewer of a writer's pull request, the Shift closedplan_exhaustedandreadyForReviewsettled the itemawaiting_review. The tracker comment then said "plan complete" about a review that never happened. This happened to Shift 90 (OOMKilled reviewer) and Shift 118 (ACP idle watchdog).TestFailedReader_StillAdvancesTheRoundpinned the old behaviour.Invariant
review_failed, neverplan_exhausted.Change (Ploeg)
retryFailedRunshandles the writer first, as before (ADR-0019). OtherwiseretryFailedReadersreopens every failed reading Role that still has attempts left. It does this in onestore.ReopenRoundcall in the current Round, so the counter does not advance and readers that reported are not re-run.MaxRunAttempts(agent failures:agent_error,idle,timeout, so an ACP watchdog kill stays an agent failure) and byMaxInfraFailures(infrastructure failures).plan_exhaustedand the last reading Round after the last writer has a Role with no non-failed Outcome, the close reason isreview_failed. With a writer's pull request, the item still settlesawaiting_review.plan_exhausted, astuckreader still freezes the plan, and an approval still closesreview_approved.store.RunReport.FailureReasonis new (read from the existing column; no migration).shift-orchestrationspec rewords the swept-reader scenario as the ADR asks and adds a requirement for the reader retry.docs/how-to/review-an-agent-pr.mdlistsreview_failed.Change (Vloer)
In the Ready for review lane, the row chip reads "Agent review unavailable" (attention). The Work Item page says no agent reviewed the pull request.
closeReasonLabel('review_failed')reads "No agent reviewed it: the reviewer kept failing". The demo replay is re-recorded becausepublic/changed.Tests
New in
pkg/shiftengine/failedreader_test.go, against real embedded Postgres. All of them except the stuck and wording tests failed ondevelopmentbefore the change:TestFailedReader_ReopensItsOwnRound(the ADR's named replacement)agent_error,idleandtimeoutpr_openedand three failed reviewer attempts givereview_failed,awaiting_review, and a tracker comment without "plan complete" or "approved"review_approved) or reports without a verdict (plan_exhausted)ErrBudgetExhausted) and is parkedTestFailedReader_StillAdvancesTheRoundis removed, as the ADR says.TestExpiredReaderDoesNotBlockTheRoundbecomesTestSweptReaderIsRetriedByTheSweepAndNeverBlocksTheRound. Vloer adds assertions intest/ploeg-view.test.mjsandtest/reasons.test.mjs.Commands (at
c2ced737, Go 1.27.1, Node 24.21.0)mise exec -- go test ./pkg/shiftengine/ ./pkg/store/ -count=1 -v: 273 top-level tests passed, 0 failedmise exec -- openspec validate --all --strict: 17 passedmise run demo-record: re-recorded (391 requests)mise run verify: all gates passed (vloer 7 incl.npm test700/700, demo-replay 1, vloer-extension 4, ploeg 7, brand 1, site 5, site-demo 1, helm 15, release 3, integration 1, docs 1)Not in this PR
close_reason = review_failed.Refs VIK-1304
🤖 Generated with Claude Code
🤖 Generated with Claude Code
a4dabce0df7e5e0e8e407e5e0e8e40d84285390c