spec-report-formatlisted
Install: claude install-skill AppVerk/av-marketplace
# Spec-Review Report & Sidecar Format
## Reviewer finding shape (agent output, one JSON object)
```json
{
"findings": [
{
"severity": "critical|major|minor|nit",
"location": "<verbatim ## heading text, or empty when locationless>",
"description": "<the defect, citing the text>",
"proposed_fix": "<concrete edit instruction or replacement text>",
"needs_decision": false
}
],
"rejected": ["<one line per self-falsified candidate>"]
}
```
Reviewers never emit SR ids or fingerprints — identity is orchestrator-owned.
## Challenger verdict shape
```json
{"sr_id": "SR-007", "verdict": "uphold|refute", "justification": "<one paragraph>"}
```
## Fixer output shape (no writes — edit pairs only)
```json
{"edits": [{"sr_id": "SR-007", "old": "<exact current text>", "new": "<replacement>"}],
"obsolete": [{"sr_id": "SR-009", "evidence": "<current text proving the defect is already gone>"}],
"notes": "<per-SR reasons when no unique pair could be produced — orchestrator marks those fix-failed>"}
```
`obsolete` is the **only** channel for "this defect no longer exists"; it is not
`notes`. "I could not produce a unique pair" belongs in `notes` and yields
`fix-failed`. Conflating them retires real, unfixed defects.
## SR ids and registry identity
- SR ids are assigned once per issue, in discovery order (panel order as
logged, then each reviewer's own output order), reused on reappearance;
a later run continues at max+1.
- Location anchor