170-a-consumer-is-served-answers-not-access
A consumer is served answers, not access
Fixes how spec-spine serves a programmatic consumer, the Statecraft CLI first. There are two tiers, split by whose pinned version decides the answer rather than by who is asking: a judging tier (the CLI's JSON envelopes and the family exit contract, answered by the binary the judged repository's own pin admits) and a producer tier (pure library functions whose output the caller owns). No surface is shaped for, gated to, or named after one consumer. A consumer's depth comes from a declared consumer contract instead: the verbs, schema axes, envelope members and exit codes it relies on, asserted by this repository's own suite, plus one public `capabilities` verb that states what a binary supports so no consumer has to probe `--help`.
Read the full pinned specification ↗Relationships
depends on
depended on by
Claimed units
- establishes
{ "kind": "file", "path": "crates/spec-spine-types/src/capabilities.rs", "planned": true } - establishes
{ "kind": "file", "path": "crates/spec-spine-cli/src/cmd_capabilities.rs", "planned": true } - establishes
{ "kind": "file", "path": "crates/spec-spine-cli/tests/capabilities.rs", "planned": true } - establishes
{ "kind": "file", "path": "crates/spec-spine-cli/tests/consumer_contract.rs", "planned": true } - establishes
{ "kind": "directory", "path": "crates/spec-spine-cli/tests/consumers/", "planned": true } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "074-a-governed-read-names-its-version", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/version.rs" } } - extends
{ "nature": "additive", "spec": "002-registry-query", "unit": { "kind": "file", "path": "crates/spec-spine-cli/src/main.rs" } } - extends
{ "nature": "additive", "spec": "057-the-docs-name-what-adopters-derived", "unit": { "anchor": "cli-reference", "file": "docs/cli-reference.md", "kind": "section" } } - extends
{ "nature": "additive", "spec": "057-the-docs-name-what-adopters-derived", "unit": { "kind": "file", "path": "docs/schema-versioning.md" } }
Source headings
- 170: A consumer is served answers, not access
- 1. Purpose
- 2. Territory
- 3. Behavior
- 3.1 Two tiers, split by whose version decides
- 3.2 One question, one path
- 3.3 No surface belongs to a consumer
- 3.4 A consumer contract is declared and tested
- 3.5 A binary states what it supports
- 3.6 Observable negative cases
- 4. Out of scope
- 5. Resolved decisions
- Verification
Frozen anchors
No frozen anchors declared.