Git ref of the previous approved version (for diff).
validationReport
string
no
Path to the validation report for this content.
stagingLinks
any
no
The staging preview of the work under review, as the request for feedback carried it, so the reviewer opens the changed pages rather than rebuilding links. Rule: cat-harness skills/sdlc/sdlc-core/staging-review.md §”The deep-link rule”.
What a review produces: findings, a decision about them, and the audit notes that justify it. A finding is an observation; a decision is an act about a set of findings; neither determines the other. Mirrors schemas/qa-review.ts — see skills/sdlc/sdlc-core/decision-audit.md.
Field
Type
Required
Description
findings
array
yes
One entry per observation. Immutable once raised: to disagree with one, overrule it in the decision.
decision
object
yes
notes
array
yes
Why the decision was made, and why each overruled finding was left.
stagingLinks
any
no
The staging preview of the work this output asks a person to look at: one deep link per changed page, with the same page on main. Required whenever a preview exists; when it does not, say so in missing. Rule: cat-harness skills/sdlc/sdlc-core/staging-review.md §”The deep-link rule”.
findings[]
Field
Type
Required
Description
id
string
yes
subject
string
yes
Block label, skill name or repo-relative path.
criterion
string
no
reviewer
object
yes
severity
"critical" | "major" | "minor"
no
Machine axis — what kind of breakage. Required of a script reviewer.
weight
"blocking" | "suggestion" | "praise"
no
Human axis — what the reviewer asks of the gate. Required of a human reviewer. praise has no image under the machine axis.
detail
string
yes
evidence
array
no
raised_at
string (date-time)
no
findings[].reviewer
Field
Type
Required
Description
kind
"script" | "agent" | "human"
yes
id
string
yes
version
string
no
decision
Field
Type
Required
Description
outcome
"approve" | "request-changes" | "reject"
yes
role
string
yes
Role id from schemas/role-graph.ts — the lane this was decided in.
by
object
yes
considered
array
yes
Finding ids weighed, overruled or not.
overrules
array
no
Findings the decision went against. The finding stays on the record; the note says why.
notes
array
yes
Audit-note ids. At least one.
decided_at
string (date-time)
no
decision.by
Field
Type
Required
Description
kind
"script" | "agent" | "human"
yes
id
string
yes
decision.overrules[]
Field
Type
Required
Description
finding
string
yes
note
string
yes
notes[]
Field
Type
Required
Description
id
string
yes
author
object
yes
rationale
string
yes
cites
array
yes
A rationale with no citation is an assertion.
proposed_by
string
no
The agent that assembled the citations. Never the author — searching the corpus is clerical work.