700f59ef0d
Session 954da1a9 asked for an eight-view web UI and shipped a Vite starter page. Discovery settled all eight items in brief.scope; the analyst emitted four criteria, all part="Project Foundation"; the architect planned against that DoD, so the run scaffolded Vite, Tailwind and TanStack Query and stopped. The plan-compile gate and the final reviewer both graded the shrunken DoD, so a plan delivering 5% of the request passed clean. Each DoD criterion now carries `covers`: the 0-based indexes into discovery brief.scope it proves. A post-stage scope_coverage gate fails the analyst retryably when an index has no criterion, handing back the dropped items verbatim. Pure function of two recorded artifacts, so replay recomputes it and no verdict event is needed. Ceiling is index bookkeeping, not semantics: a criterion claiming covers:[3] without really proving scope[3] still passes. It catches the silent collapse, not a weak criterion. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013dVqqci5H5b3s6xzv6Lojq
30 lines
1.0 KiB
JSON
30 lines
1.0 KiB
JSON
{
|
|
"type": "object",
|
|
"properties": {
|
|
"summary": { "type": "string" },
|
|
"criteria": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": { "type": "string" },
|
|
"statement": { "type": "string" },
|
|
"part": { "type": "string" },
|
|
"verified_by": { "type": "string", "description": "one of: gate, reviewer" },
|
|
"covers": {
|
|
"type": "array",
|
|
"items": { "type": "integer" },
|
|
"description": "0-based indexes into the discovery brief's scope[] that this criterion proves. Every scope index must appear in at least one criterion or the scope-coverage gate fails the stage."
|
|
}
|
|
},
|
|
"required": ["id", "statement", "part", "verified_by", "covers"],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"out_of_scope": { "type": "array", "items": { "type": "string" } }
|
|
},
|
|
"required": ["summary", "criteria", "out_of_scope"],
|
|
"additionalProperties": false
|
|
}
|