When to use
- Wrapping up a long / multi-stage task, or any task that produces user-visible artifacts (runs, dashboards, reports, exports).
Procedure
- Enumerate the touched files / user-visible surfaces this task changed.
- Reconcile: compare the plan/objective against expectations expressed in the thread (not just what's written in the plan). Differences are surfaced, never silently dropped.
- Map each touched surface to a check in the protected
acceptance_manifest.yaml(read-only). Any user-visible surface with no check → record inreview_queue.yamland mark blocked. - Gather real evidence paths (actual artifacts/configs), not
run_stateassertions. - Write
completion_candidate.yaml(your proposal; status =candidate_complete). - Invoke the external gate:
check_acceptance.py --manifest ... --inventory ... --candidate ... --repo .
Outputs
completion_candidate.yaml(proposal only)review_queue.yaml(blocking open items)- gate result (PASS → an external verifier may grant
complete; FAIL/any review item →blocked)
Do not
- Do not set
completeyourself — you may only reachcandidate_completeorblocked. Only the external gate/verifier writescomplete. - Do not reclassify a real regression as "subjective" to skip it —
needs-review == blocked. - Do not feed the gate your
run_stateas evidence — the gate must read real artifacts.