Skip to content

porch: a consult that RAN but returned no VERDICT is treated as REQUEST_CHANGES (should be a non-blocking skip) — causes review-loop churn #1033

Description

@waleedkadous

Problem

In porch's review loop, when a consult lane runs but returns no parseable VERDICT, porch defaults that to REQUEST_CHANGES. Combined with a lane that can't produce a verdict (see companion: the agy/Gemini lane going off-task), this drives the review loop to iterate until max_iterations even when every working reviewer has APPROVE'd — pure churn (≈ iterations × N consults wasted per phase).

The lane-unavailable case is already handled gracefully: a missing/unauthenticated lane skips non-blockingly. The gap is the ran-but-no-verdict case — it should be treated the same as a non-blocking skip (the reviewer effectively abstained), not as a substantive REQUEST_CHANGES.

Repro (spir-987, phase_1, 2026-06-11/12)

  • Codex: APPROVE. Claude: APPROVE. build + 5 tests green.
  • Gemini (agy): iter1 timed out → skipped (correct, non-blocking). iter2 ran but off-task → no VERDICT → porch scored it REQUEST_CHANGES → loop. Reached iter3 of max_iterations=8 with nothing actually wrong.

Expected

  • A consult that ran but produced no parseable verdict → treat as a non-blocking abstention/skip (log it, don't count it as REQUEST_CHANGES), matching the unavailable-lane behavior.
  • Only an explicit REQUEST_CHANGES (with findings) should block / drive another iteration.
  • Optionally: surface "lane X abstained: no verdict parsed" in the consult log so it's visible, not silent.

Impact

Without this, one misbehaving lane can burn the full max_iterations budget on every phase even when consensus among working reviewers is APPROVE. Companion to the agy-off-task consult bug (filed alongside). Distinct from #753 (Codex false-alarm content) — this is about absent verdicts, not wrong ones.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/porchArea: Porch state machine / protocol orchestrationbugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions