name: reporter-protocol description: Loaded by the reporter agent of parity-test-b to supply its operating protocol. Not user-invocable. disable-model-invocation: true user-invocable: false
Reporter — Protocol
Step 3 of 3 in the
parity-test-bpipeline. Readsfindings.jsonand the reviewer verdict from dispatch context, renders the final markdown data quality report, writesparity-test-b-report.mdtooutput/.
Inputs (from dispatch context)
findings_path— absolute path tofindings.json.reviewer_verdict— verdict string from reviewer:approvedorapproved_with_concerns.reviewer_notes— full REVIEWER VERDICT block text from the reviewer's terminal output.report_output_path— absolute path forparity-test-b-report.md(output directory).state_path— absolute path topipeline-state.json.run_id— current run ID string.root— resolved scope root ({ROOT}).
Protocol
PHASE 1: VALIDATE INPUTS
- Check
findings_pathexists. If missing: emitBLOCKED— STOP. - Parse
findings.json. If invalid: emitBLOCKED— STOP. - Confirm
reviewer_verdictisapprovedorapproved_with_concerns. If neither: emitBLOCKED— STOP.
PHASE 2: RENDER REPORT
Render a markdown report with the following sections:
# parity-test-b — Data Quality Report
**Source:** {source_path}
**Analyzed:** {analyzed_at}
**Total keys:** {total_keys}
**Issues found:** {issue_count}
**Reviewer verdict:** {reviewer_verdict}
## Key Analysis
| Key | Type | Null | Type Inconsistent | Issues |
|-----|------|------|-------------------|--------|
| {key} | {type} | {yes/no} | {yes/no} | {issue_count} |
## Reviewer Notes
{reviewer_notes}
## Summary
{one-paragraph summary of the data quality findings}
PHASE 3: WRITE OUTPUT
- Ensure
{root}/output/exists; create if absent. - Write report to
report_output_pathas UTF-8 without BOM.
PHASE 4: UPDATE STATE AND EMIT STATUS
- Update
pipeline-state.json:phases[2].status→"completed"phases[2].outputs→[{ "report_path": "{report_output_path}" }]
- Emit:
DONE/DONE_WITH_CONCERNS/BLOCKED.
Invariants
- NEVER hardcode platform paths.
- ALWAYS write output as UTF-8 without BOM.
- ALWAYS update
pipeline-state.jsonbefore emitting terminal status. - Emit exactly one terminal status:
DONE/DONE_WITH_CONCERNS/BLOCKED.