Parent: #1059
Depends on: #1064, #1065
Goal
pdd checkup --review-loop must report and gate claim evidence. A clean reviewer report is not enough when material claims are unproven.
Problem
Current checkup_review_loop.py can render issue_aligned: true when no remaining findings exist. It has no structured knowledge of claim evidence or UNPROVEN_CLAIM markers.
Required change
Extend review-loop state, parsing, prompts, and final report to include:
### Claim Evidence Map
### Unproven Claims
- machine-readable unproven claim data in final state
issue_aligned: false when any material claim is pending or unproven
Reviewers must explicitly inspect:
- what user claim could still fail in production
- what edge case would make the PR look correct but still be wrong
- whether tests prove user-visible behavior rather than implementation plumbing
- multi-step, repeated-call, async, concurrent, aggregation paths when relevant
Parser/gate requirement
Do not rely only on markdown headings. The final report can render markdown, but the review-loop state/final JSON must carry structured unproven-claim information.
Acceptance criteria
- Final report includes claim evidence and unproven claims.
- Any material
UNPROVEN_CLAIM forces issue_aligned: false.
- Adapter-facing markdown still exposes enough information for downstream systems.
- Tests cover parsing/rendering/gating of unproven claims.
Parent: #1059
Depends on: #1064, #1065
Goal
pdd checkup --review-loopmust report and gate claim evidence. A clean reviewer report is not enough when material claims are unproven.Problem
Current
checkup_review_loop.pycan renderissue_aligned: truewhen no remaining findings exist. It has no structured knowledge of claim evidence orUNPROVEN_CLAIMmarkers.Required change
Extend review-loop state, parsing, prompts, and final report to include:
### Claim Evidence Map### Unproven Claimsissue_aligned: falsewhen any material claim ispendingorunprovenReviewers must explicitly inspect:
Parser/gate requirement
Do not rely only on markdown headings. The final report can render markdown, but the review-loop state/final JSON must carry structured unproven-claim information.
Acceptance criteria
UNPROVEN_CLAIMforcesissue_aligned: false.