Skip to content

[Bugfix #1166] Consult skip stubs and no-verdict output parse as SKIPPED, never as approval#1167

Open
pseudoseed wants to merge 1 commit into
cluesmith:mainfrom
pseudoseed:fix/1166-skip-stub-verdict
Open

[Bugfix #1166] Consult skip stubs and no-verdict output parse as SKIPPED, never as approval#1167
pseudoseed wants to merge 1 commit into
cluesmith:mainfrom
pseudoseed:fix/1166-skip-stub-verdict

Conversation

@pseudoseed

Copy link
Copy Markdown

Fixes #1166.

What

A consult lane that never produced a review now parses as a first-class SKIPPED verdict instead of an approving COMMENT:

  • agySkipContent emits VERDICT: SKIPPED; legacy on-disk stubs (VERDICT: COMMENT + the SUMMARY: ... lane skipped marker) are detected and reinterpreted, so older artifacts/installs can't sneak through.
  • No-verdict fallback: long output with no parseable VERDICT: line is also SKIPPED (was COMMENT = silent approval). Empty/near-empty output stays REQUEST_CHANGES (crashed lane → retry). Explicit APPROVE/REQUEST_CHANGES are never reinterpreted.
  • allApprove excludes 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.
  • Gate disclosure: when a lane skipped, the human-gate message says "All effective reviewers approved (N lane(s) SKIPPED — reduced review coverage)" instead of "All reviewers approved!", and verdict listings annotate SKIPPED.

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/codev porch 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 --noEmit clean.
  • Pre-existing failures in 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

…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

porch counts consult skip stubs (and no-verdict output) as approving COMMENT reviews

1 participant