[Bugfix #1166] Consult skip stubs and no-verdict output parse as SKIPPED, never as approval#1167
Open
pseudoseed wants to merge 1 commit into
Open
[Bugfix #1166] Consult skip stubs and no-verdict output parse as SKIPPED, never as approval#1167pseudoseed wants to merge 1 commit into
pseudoseed wants to merge 1 commit into
Conversation
…PPED, never as approval A consult lane that never produced a review (agy skip artifact, or output with no parseable VERDICT line) previously parsed as COMMENT, which allApprove counts as an approving reviewer — so a skipped/garbage lane masqueraded as a passing review at porch gates. - New Verdict member SKIPPED: emitted explicitly by agySkipContent, and detected on legacy stubs via the 'lane skipped' SUMMARY marker; the no-verdict fallback now returns SKIPPED instead of COMMENT. - allApprove excludes SKIPPED lanes (progression on remaining reviewers, Spec 778 guarantee preserved) but blocks when EVERY lane skipped. - porch next() emits a dedicated re-run task for the all-skipped round (a rebuttal is the wrong remediation for feedback that does not exist). - Gate message discloses reduced coverage instead of 'All reviewers approved!' when a lane was skipped; SKIPPED annotated in verdict listings and history icons. Empty/near-empty output still parses as REQUEST_CHANGES (crashed lane = retry, not skip). Explicit APPROVE/REQUEST_CHANGES are never reinterpreted. Found via entriq #2467 / spec 2458: the skipped gemini lane, re-run manually, returned REQUEST_CHANGES with the round's most serious finding on a money-critical spec; the stub would have passed it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1166.
What
A consult lane that never produced a review now parses as a first-class
SKIPPEDverdict instead of an approvingCOMMENT:agySkipContentemitsVERDICT: SKIPPED; legacy on-disk stubs (VERDICT: COMMENT+ theSUMMARY: ... lane skippedmarker) are detected and reinterpreted, so older artifacts/installs can't sneak through.VERDICT:line is alsoSKIPPED(wasCOMMENT= silent approval). Empty/near-empty output staysREQUEST_CHANGES(crashed lane → retry). ExplicitAPPROVE/REQUEST_CHANGESare never reinterpreted.allApproveexcludes SKIPPED lanes — the Spec 778 progression guarantee is preserved (a phase still advances on the strength of the remaining reviewers) — but an ALL-skipped round now blocks instead of auto-passing on zero evidence.porch next()emits a dedicated "re-run the consultations" task for the all-skipped round; the previous behavior would have asked for a rebuttal against feedback that doesn't exist.Why
Downstream (entriq #2467, spec 2458): the agy skip stub degraded a 3-way consult to 2-way with a fake third verdict. The skipped gemini lane, re-run manually through a working CLI, returned REQUEST_CHANGES carrying the round's most serious finding on a money-critical spec — the stub would have passed it through the gate.
Verification
packages/codevporch suite: 358/358 pass (includes new unit + integration coverage: legacy-stub reinterpretation, skip-never-approves, all-skipped blocks with re-run task, gate message disclosure).consult.test.ts: 51/51 (stub assertions updated to SKIPPED).tsc --noEmitclean.worktree-write-guard.test.ts/session-manager.test.ts(9) reproduce identically on untouched origin/main in my environment — unrelated (process-spawning/git-env sensitive).🤖 Generated with Claude Code