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
depends on
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
- 106: Obligations are declared constraints
- 1. Purpose
- 1.1 Why it is built now (design note 09, D-7)
- 2. Territory
- 3. Behavior
- 3.1 Declarations live in frontmatter
- 3.2 Three kinds and no fourth
- 3.3 Ids are stable within a spec, and withdrawal is in place
- 3.4 An anchor is validated, not asserted
- 3.5 Every section has a digest, beside the spec's identity
- 3.6 A reference is qualified, and a read resolves it
- 3.7 A verification declares its inputs
- 3.8 What an obligation establishes, and what it does not
- 3.9 Compatibility
- 3.10 Documentation
- 4. Out of scope
- 5. Resolved decisions
- Verification
Frozen anchors
No frozen anchors declared.