Reporter — Operational Protocol
Protocol
1. DISCOVER
- Read inputs from the orchestrator execution context:
reviewed_findings_path: path toreviewed-findings.jsonwritten by the reviewer step.output_path: path where the final validation report must be written (always{ROOT}/output/parity-test-h-validation-report.md).state_path: path topipeline-state.jsonfor status updates.run_id: current run identifier.root: resolved scope root.
- Verify
reviewed_findings_pathexists and is a readable file. If not: updatepipeline-state.jsonphases[2].status = "blocked"; emitBLOCKEDwith message: "Reviewed findings not found at{reviewed_findings_path}. The reviewer step may have failed." - Parse the reviewed findings JSON. If JSON is malformed: update
pipeline-state.jsonphases[2].status = "blocked"; emitBLOCKEDwith message: "Reviewed findings at{reviewed_findings_path}are not valid JSON. Re-run the reviewer step."
2. PROCESS
Step 2.1 — Partition findings by category and status:
From reviewed-findings.json, partition the findings into four groups:
confirmed_required_fields: findings wherecategory = "required_field"andreview_status = "confirmed".confirmed_type_mismatches: findings wherecategory = "type_mismatch"andreview_status = "confirmed".confirmed_deprecated_keys: findings wherecategory = "deprecated_key"andreview_status = "confirmed".dismissed: all findings wherereview_status = "dismissed", regardless of category.
Step 2.2 — Render the markdown report:
Format the markdown report using the following template:
# YAML Validation Report — parity-test-h
**Source file**: {source_path}
**Reviewed at**: {reviewed_at}
**Run ID**: {run_id}
**Total findings**: {total_findings} ({confirmed} confirmed, {dismissed} dismissed)
---
## Summary
| Category | Confirmed | Dismissed |
|---|---|---|
| Required field violations | {n} | {n} |
| Type mismatches | {n} | {n} |
| Deprecated keys | {n} | {n} |
| **Total** | **{confirmed}** | **{dismissed}** |
---
## Required Field Violations
{If no confirmed required-field findings: "_No required field violations confirmed._"}
{For each confirmed required-field finding:}
### {id}: {key}
- **Severity**: Error
- **Message**: {message}
---
## Type Mismatches
{If no confirmed type-mismatch findings: "_No type mismatches confirmed._"}
{For each confirmed type-mismatch finding:}
### {id}: {key}
- **Severity**: Error
- **Expected type**: `{expected_type}`
- **Actual type**: `{actual_type}`
- **Actual value**: `{actual_value}`
- **Message**: {message}
---
## Deprecated Keys
{If no confirmed deprecated-key findings: "_No deprecated keys confirmed._"}
{For each confirmed deprecated-key finding:}
### {id}: {key}
- **Severity**: Warning
- **Message**: {message}
---
## Dismissed Findings (False Positives)
{If no dismissed findings: "_No findings were dismissed._"}
{For each dismissed finding:}
### {id}: {key} ({category})
- **Original severity**: {severity}
- **Original message**: {message}
- **Dismissal rationale**: {review_note}
---
_Report generated by parity-test-h pipeline on Tier 2 (Cursor/Windsurf/Cline). Reviewer isolation is convention-only; review was performed within the same agent session as validation._
Step 2.3 — Handle zero-confirmed-findings edge case:
If confirmed = 0 (all findings dismissed, or zero findings from validator): the report still renders with all sections showing the "no findings" placeholder text. Emit DONE_WITH_CONCERNS with message: "Report written with zero confirmed findings. Either the YAML is fully valid or all findings were dismissed as false positives."
3. DELIVER
- Create the
{root}/output/directory if it does not exist. - Write the rendered markdown report to
output_pathusing the Write tool. - Update
pipeline-state.json:- Set
phases[2].status="completed"(or"completed_with_concerns"if zero confirmed findings). - Set
phases[2].outputs=[output_path]. - Set
phases[2].outputs_summary={ "confirmed_findings": N, "dismissed_findings": N }. - Set top-level
status="completed"(or"completed_with_concerns"as appropriate). - Set
completed_at= current ISO-8601 timestamp.
- Set
- Emit terminal status:
DONE— report written successfully with at least one confirmed finding.DONE_WITH_CONCERNS— report written but contained zero confirmed findings (note reason).BLOCKED— reviewed-findings file missing or malformed; output not written.