043-verify-declared-acceptance
`spec-spine verify <id>`: run a spec's declared acceptance
A spec's `## Verification` section states what would make its claims true, and nothing runs it. Three adopters independently wrote the same 78-line `scripts/verify-spec.sh` to close that gap, and spec 093 added a fourth copy to this repository, so the kit now ships the workaround it exists to retire. Spec 040 4 named this "the most substantial thing the adoption invented and the one most worth having" and deferred filing it. This is that filing. `spec-spine verify <id>` reads the spec's `## Verification` section, runs each line of its `verify:cli` fences from the repository root in order, and stops at the first failure. Two things make it a spec-spine verb rather than a script: the parse becomes a typed, tested read of authored markdown that the library owns, and the outcome becomes a spec 034 verdict envelope instead of a sentence a caller must string-match. The engine never spawns a process. Core returns a `VerifyPlan`, the commands it found and the fence tags it declined, and the CLI executes it, which is the same seam `couple` already uses for `git`. Two behaviours diverge deliberately from the ported script, both to keep an older contract intact: a missing spec exits 1, not the script's 2, because 2 means stale; and a failing command exits 1 with its own code carried in the payload, rather than propagating a code the exit contract does not define. `not-declared` stays an honest zero and is distinguishable from a pass in the payload, never by parsing prose.
Read the full pinned specification ↗Relationships
depended on by
- 067-a-short-id-names-the-same-spec-at-every-verb
- 071-a-change-is-classified-under-the-bases-rules
- 082-an-amended-acceptance-is-the-one-that-runs
- 088-the-template-teaches-the-whole-grammar
- 089-nothing-reruns-a-merged-acceptance
- 090-the-verdict-is-the-only-thing-on-stdout
- 093-the-harness-this-repository-runs
- 099-a-merged-acceptance-is-asked-again
- 136-the-legacy-ledger-is-paid-registry-and-grammar
- 137-the-legacy-ledger-is-paid-index-and-lint
- 138-the-legacy-ledger-is-paid-coupling-and-freshness
- 139-the-legacy-ledger-is-paid-verdicts-and-lifecycle
- 140-a-prose-only-example-stays-prose-only
- 158-the-affected-selection-is-a-governed-read
Claimed units
- establishes
{ "kind": "file", "path": "crates/spec-spine-types/src/verify.rs" } - establishes
{ "kind": "file", "path": "crates/spec-spine-core/src/verify.rs" } - establishes
{ "kind": "file", "path": "crates/spec-spine-core/tests/verify.rs" } - establishes
{ "kind": "file", "path": "crates/spec-spine-cli/src/cmd_verify.rs" } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-cli/src/main.rs" } } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-cli/tests/cli.rs" } } - extends
{ "nature": "additive", "spec": "000-spec-spine-bootstrap", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "034-machine-readable-verdicts", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/verdict.rs" } } - extends
{ "nature": "additive", "spec": "000-spec-spine-bootstrap", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/version.rs" } } - extends
{ "nature": "additive", "spec": "000-spec-spine-bootstrap", "unit": { "kind": "file", "path": "crates/spec-spine-types/tests/dtos.rs" } }
Source headings
- 043: `spec-spine verify <id>`
- 1. Purpose
- 1.1 The adopters closed the gap, four times
- 1.2 What a verb buys that a script does not
- 2. Territory
- 3. Behavior
- 3.1 The seam: core parses, the CLI executes
- 3.2 The grammar
- 3.3 Outcomes and exit codes
- 3.4 The report
- 3.5 Execution
- 3.6 `verify` executes what the corpus declares
- 3.7 A spec that verifies itself is refused, not run
- 3.8 `--plan` reads without running
- 3.9 The hand-written runner is retired, not kept beside the verb
- 4. Out of scope
- 5. Verification
Frozen anchors
No frozen anchors declared.