Deliverable Self-Loop
Runs the final quality gate for a reader-facing deliverable and always writes a PASS/FAIL report.
Inputs
Primary input depends on the active pipeline contract:
- brief deliverable
- paper-review deliverable
- evidence-review deliverable
- idea memo bundle
- tutorial deliverable
Output
output/DELIVERABLE_SELFLOOP_TODO.md- for
research-brief:output/BRIEF_SCORECARD.mdandoutput/BRIEF_SCORECARD.json - for
paper-review:output/REVIEW_SCORECARD.mdandoutput/REVIEW_SCORECARD.json - for
idea-brainstorm:output/IDEA_SCORECARD.mdandoutput/IDEA_SCORECARD.json - for
evidence-review:output/EVIDENCE_SCORECARD.mdandoutput/EVIDENCE_SCORECARD.json
Dispatch rule
The gate should dispatch by pipeline contract first:
quality_contract.deliverable_kind
Only fall back to legacy profile-name checks when contract metadata is missing.
Script boundary
scripts/run.py should:
- detect the active deliverable contract
- run the matching evaluator
- always write a report
It should not mutate the deliverable itself.
Acceptance
- report exists
- report contains
- Status: PASSor- Status: FAIL - PASS only when the active deliverable satisfies its minimum section / artifact contract
research-briefadditionally requires valid core-set pointers and the configured score thresholdpaper-reviewadditionally requires the configured score threshold and all critical rubric dimensionsidea-brainstormadditionally requires traceable anchors, actionable lead directions, and the configured score thresholdevidence-reviewadditionally requires clause-linked screening, complete extraction rows, synthesis pointers, and the configured score threshold
Non-goals
- rewriting the deliverable
- choosing upstream fixes beyond pointing to the missing contract items