170-a-consumer-is-served-answers-not-access

A consumer is served answers, not access

Lifecycle draftImplementation pendingVerification unknownQualification unknown

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

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

  1. 170: A consumer is served answers, not access
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 3.1 Two tiers, split by whose version decides
  6. 3.2 One question, one path
  7. 3.3 No surface belongs to a consumer
  8. 3.4 A consumer contract is declared and tested
  9. 3.5 A binary states what it supports
  10. 3.6 Observable negative cases
  11. 4. Out of scope
  12. 5. Resolved decisions
  13. Verification

Frozen anchors

No frozen anchors declared.