Every one of these must be rejected, for the stated reason. The reason is carried in the fixture itself (_reason in JSON, an HTML comment in Markdown) and never reaches the validator.
broken-frontmatter.md
Markdown, sectionedRejected because Malformed YAML frontmatter fails the whole document. A consumer must not fall back to reading the body. SPEC.md section 2.
---
id: broken
status: "draft
objective: unterminated quote above
---
<!-- _reason: Malformed YAML frontmatter fails the whole document. A consumer must not fall back to reading the body. SPEC.md section 2. -->
## Outcomes
- This must not rescue the document
edge-case-without-expected-behavior.json
JSONRejected because An edgeCases item requires both 'scenario' and 'expectedBehavior'. A failure mode with no expected behavior is a worry, not an edge case.
{
"_reason": "An edgeCases item requires both 'scenario' and 'expectedBehavior'. A failure mode with no expected behavior is a worry, not an edge case.",
"id": "invalid-004",
"status": "draft",
"objective": "Analysts re-filter the weekly export by hand every Monday.",
"outcomes": ["The export respects the active filters"],
"edgeCases": [{ "scenario": "The saved view was deleted" }]
}
evidence-without-excerpt.json
JSONRejected because An evidence item requires both 'type' and 'excerpt'. See SPEC.md section 6: in a repo-safe document the excerpt is a summary or reference, but it must be present.
{
"_reason": "An evidence item requires both 'type' and 'excerpt'. See SPEC.md section 6: in a repo-safe document the excerpt is a summary or reference, but it must be present.",
"id": "invalid-005",
"status": "draft",
"objective": "Analysts re-filter the weekly export by hand every Monday.",
"outcomes": ["The export respects the active filters"],
"evidence": [{ "type": "friction" }]
}
missing-objective.json
JSONRejected because Missing the required 'objective' field.
{
"_reason": "Missing the required 'objective' field.",
"id": "invalid-001",
"status": "draft",
"outcomes": ["Something observable changes"]
}
outcomes-not-array.json
JSONRejected because 'outcomes' must be an array of strings, not a string.
{
"_reason": "'outcomes' must be an array of strings, not a string.",
"id": "invalid-003",
"status": "draft",
"objective": "Analysts re-filter the weekly export by hand every Monday.",
"outcomes": "The export respects the active filters"
}
sectioned-no-frontmatter.md
Markdown, sectionedRejected because Sections carry the lists, but id and status have no section form, so this is not yet a valid document. SPEC.md section 3.
<!-- _reason: Sections carry the lists, but id and status have no section form, so this is not yet a valid document. SPEC.md section 3. -->
# Retry failed syncs
## Objective
Support engineers lose twenty minutes a shift to manual reconciliation.
## Outcomes
- A failed run is retried within one minute
unknown-status.json
JSONRejected because 'status' is not one of draft|validated|approved|shipped|verified.
{
"_reason": "'status' is not one of draft|validated|approved|shipped|verified.",
"id": "invalid-002",
"status": "in-progress",
"objective": "Analysts re-filter the weekly export by hand every Monday.",
"outcomes": ["The export respects the active filters"]
}