The review engine's checklist skip is accepted without checking the profile row that authorizes it - #1966
Conversation
…nal checklist claim in workpad.py
…eration-failure point (#1509)
…-engines-checklist-skip-is-accepted
|
/prflow:review |
PRFlow Review — PR #1966Status: ❌ Review failed Review run failed: claude step failure — https://github.com/The01Geek/prflow/actions/runs/32898515882 |
|
DevFlow review stall backstop — this cloud review ended with no verdict for /devflow:review |
|
PRFlow review: no verdict-post receipt was found for this run.
No run-scoped verdict-post receipt was found for this run: either Phase 4.4's No review authored by this run's reviewer identity is recorded in the reviews Any verdict text this run published OUTSIDE the emitter carries no producer-emitted verdict marker, This comment is a record of that gap. It is not a verdict, and it neither approves nor |
PRFlow Review — PR #1966Status: ❌ Review failed Review run failed: claude step failure — https://github.com/The01Geek/prflow/actions/runs/32898679634 |
|
DevFlow review stall backstop — this cloud review ended with no verdict for /devflow:review |
|
PRFlow review: no verdict-post receipt was found for this run.
No run-scoped verdict-post receipt was found for this run: either Phase 4.4's No review authored by this run's reviewer identity is recorded in the reviews Any verdict text this run published OUTSIDE the emitter carries no producer-emitted verdict marker, This comment is a record of that gap. It is not a verdict, and it neither approves nor |
PRFlow Review — PR #1966Status: ❌ Review failed Review run failed: claude step failure — https://github.com/The01Geek/prflow/actions/runs/32898845908 |
|
PRFlow review: no verdict-post receipt was found for this run.
No run-scoped verdict-post receipt was found for this run: either Phase 4.4's No review authored by this run's reviewer identity is recorded in the reviews Any verdict text this run published OUTSIDE the emitter carries no producer-emitted verdict marker, This comment is a record of that gap. It is not a verdict, and it neither approves nor |
|
/prflow:review |
PRFlow Review — PR #1966Status: ✅ APPROVE with notes Blueprint
Verdict: APPROVE with notesAll 13 acceptance criteria are satisfied and all 20 verification-checklist items PASS. The one substantive finding is a factual inaccuracy in a diff-added internal-doc paragraph ( Issue ComplianceReviewed against issue #1509: The review engine's checklist skip is accepted without checking the profile row that authorizes it — criteria from the Repo-specific gates:
Verification Checklist Results20 passed, 0 failed, 0 inconclusive — 0 via lite probe, 20 via agent. ✅ Passed items (20 of 20) — click to expand
Code Review Findings🟡 Suggestion / Minor
Verdict accounting:
Findings (live)All five Phase-3 agents returned (code-reviewer, silent-failure-hunter, comment-analyzer, pr-test-analyzer, requesting-code-review). The requesting-code-review final pass returned APPROVE. Note: its |
Summary
skipped-intentionalreview-coverage checklist claim was accepted without ever checking the profile row that authorizes it, so four merged engine-changing PRs recorded a clean coverage record while the checklist never ran.scripts/workpad.pynow recomputes the reviewed diff from git and refuses the claim when the authorizing row is disproved.unestablishedrather than blocking finalization, and a recorded override channel downgrades to a non-clean bareskipped.Changes
workpad.py — review-coverage recompute gate:
--record-review-coveragerecomputes the reviewed diff from git alone (git diff --numstatfor counts,--name-only -zfor paths) over the reviewed head recorded on the coverage record's as-of anchor, measured against the PR's own base branch (--record-review-coverage-base, falling back to theorigin/HEADsymbolic ref). Askipped-intentionalclaim is accepted only when the recomputation confirms the profile row (skills/review/phases/phase-0-setup.md§0.5): changed lines below 100, changed files at most 3, config-only extensions, and — only in this engine's own repository, detected by.claude-plugin/plugin.json'sname— no engine-source path. A resolved-and-disproved row refuses the write non-zero, naming the failed condition and measured value; an unresolvable measurement records the axisunestablished; a confirmed row writes today's record byte-for-byte and reports the measured values on success.workpad.py — override channel: a new
--record-review-coverage-override REASONdowngrades askipped-intentionalclaim to bareskipped— a non-clean value that forces a--review-coverage-dispositionexactly as bareskippeddoes today — and records that the override was used. No override path yields a clean record.skills/review/phases/phase-1-checklist.md: the generation-failure step now names the literal
checklist_skipped = "failure", matching the exact stringphase-4-verdict.mdandlib/efficiency-trace.jqcompare against.skills/implement/phases/phase-3-review.md: the
/simplifygate tick now also records asimplify outcome:note in the same call.docs/internal/DEVFLOW_SYSTEM_OVERVIEW.md: names the
checklist_skippedfield and its three legal values ("intentional","failure",null) alongside the five Phase 0.5 flags, and states that the coverage-recordchecklist-axis spellings and the field values are the same axis in two spellings.Resolves
Resolves #1509
Test Plan
lib/test/test_python_scripts.py#1509cases pass: the#1504(6-file) and#1503(153-line) reproductions are refused (RED before the fix, GREEN after).unestablishedand never refuse.lib/**/CLAUDE.md/.prflow/**.mdchange is refused in this repo but confirmed on another repository (engine arm excluded).skipped, and is a no-op (announced on stderr) on a non-skipped-intentionalchecklist.phase-0-setup.md§0.5.Visual Changes
N/A
Breaking Changes
None. Existing workpads written before this change are not re-validated retroactively; the axis vocabulary and its clean set are unchanged (only which records are accepted changes). No workflow file, config-schema key, or installer payload changes, and no new tool grant is required.
Prompt-surface size
Derived at
cc42fdf6d718015b43f3e5b371c8109d7812df02against merge-base5fc1f6591550c79ce108e44394bbeacf564130fe(origin/main). Covered: tracked*.mdunderskills/,agents/,.prflow/prompt-extensions/.skills/review/phases/phase-1-checklist.mdGenerated via /prflow:implement (v2.34.25, claude-opus-4-8, low)