106-obligations-are-declared-constraints

Obligations are declared constraints

Lifecycle approvedImplementation completeVerification unknownQualification unknown

A spec's normative content is prose, so nothing downstream can name a single requirement, cite it, or tell whether the sentence it cited has changed. This adds an optional `obligations` frontmatter key: three kinds, ids stable within a spec, an anchor validated against the spec's own headings, explicit inputs for a verification, and withdrawal in place rather than deletion. The registry gains a digest for every section of every spec, beside the spec's full content hash, and a read resolves a qualified `<spec-id>#<obligation-id>` reference. No gate reads any of it.

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-types/src/obligation.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-core/tests/obligations.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-cli/tests/obligations.rs"
    }
  • extends
    {
      "nature": "additive",
      "spec": "000-spec-spine-bootstrap",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/frontmatter.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/registry.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/lib.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/version.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/schemas/registry.schema.json"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "022-index-sharding",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/schemas/registry-spec-shard.schema.json"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/compile.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "020-keypath-section-anchors",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/sections.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "002-registry-query",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/query.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/lib.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "002-registry-query",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-cli/src/cmd_registry.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "088-the-template-teaches-the-whole-grammar",
      "unit": {
        "kind": "file",
        "path": "standards/spec/templates/spec-template.md"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "057-the-docs-name-what-adopters-derived",
      "unit": {
        "kind": "file",
        "path": "docs/schema-versioning.md"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "103-a-verifier-fixture-is-a-published-artifact",
      "unit": {
        "kind": "directory",
        "path": "crates/spec-spine-core/fixtures/verifier/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "074-a-governed-read-names-its-version",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/tests/read.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "057-the-docs-name-what-adopters-derived",
      "unit": {
        "kind": "file",
        "path": "docs/api.md"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "022-index-sharding",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/tests/dtos.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "082-an-amended-acceptance-is-the-one-that-runs",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-cli/tests/cli.rs"
      }
    }

Source headings

  1. 106: Obligations are declared constraints
  2. 1. Purpose
  3. 1.1 Why it is built now (design note 09, D-7)
  4. 2. Territory
  5. 3. Behavior
  6. 3.1 Declarations live in frontmatter
  7. 3.2 Three kinds and no fourth
  8. 3.3 Ids are stable within a spec, and withdrawal is in place
  9. 3.4 An anchor is validated, not asserted
  10. 3.5 Every section has a digest, beside the spec's identity
  11. 3.6 A reference is qualified, and a read resolves it
  12. 3.7 A verification declares its inputs
  13. 3.8 What an obligation establishes, and what it does not
  14. 3.9 Compatibility
  15. 3.10 Documentation
  16. 4. Out of scope
  17. 5. Resolved decisions
  18. Verification

Frozen anchors

No frozen anchors declared.