142-a-relocation-is-proven
A relocation is proven
Splitting an approved spec had no honest path. A partial `supersedes` added the new spec as an owner of a unit and left the old one owning it too, so an edit to either spec cleared a change to the code. Moving a section of text out of an approved spec read as a requirement change, whatever the text said, because a section's digest is keyed by its spec's path. `amends_sections` accepted any string, and nothing said whether `amends` grants code ownership. This spec makes a partial `supersedes` an exclusive hand-off of its unit; adds a `relocates` declaration that `delta` proves against the merge base, classing a proven move `relocation` instead of `requirement`; validates `amends_sections` against the amended specs' headings (L-017); warns when two live specs establish one unit (L-018); and states the rule that `amends` changes what a spec requires and never who owns its code.
Read the full pinned specification ↗Relationships
depends on
depended on by
Claimed units
- establishes
{ "kind": "file", "path": "crates/spec-spine-core/src/relocation.rs" } - establishes
{ "kind": "file", "path": "crates/spec-spine-types/src/relocation.rs" } - establishes
{ "kind": "file", "path": "crates/spec-spine-core/tests/relocation.rs" } - extends
{ "nature": "additive", "spec": "004-codebase-index", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/index.rs" } } - extends
{ "nature": "additive", "spec": "111-a-move-is-a-reviewed-mapping", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/frontmatter.rs" } } - extends
{ "nature": "additive", "spec": "022-index-sharding", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/registry.rs" } } - extends
{ "nature": "additive", "spec": "022-index-sharding", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "022-index-sharding", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/version.rs" } } - extends
{ "nature": "additive", "spec": "022-index-sharding", "unit": { "kind": "file", "path": "crates/spec-spine-types/tests/dtos.rs" } } - extends
{ "nature": "additive", "spec": "106-obligations-are-declared-constraints", "unit": { "kind": "file", "path": "crates/spec-spine-types/schemas/registry-spec-shard.schema.json" } } - extends
{ "nature": "additive", "spec": "106-obligations-are-declared-constraints", "unit": { "kind": "file", "path": "crates/spec-spine-types/schemas/registry.schema.json" } } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/compile.rs" } } - extends
{ "nature": "additive", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "071-a-change-is-classified-under-the-bases-rules", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/delta.rs" } } - extends
{ "nature": "additive", "spec": "071-a-change-is-classified-under-the-bases-rules", "unit": { "kind": "file", "path": "crates/spec-spine-types/src/delta.rs" } } - extends
{ "nature": "additive", "spec": "020-keypath-section-anchors", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/sections.rs" } } - extends
{ "nature": "additive", "spec": "003-conformance-lint", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/lint.rs" } } - extends
{ "nature": "additive", "spec": "045-couple-names-the-crossing", "unit": { "kind": "file", "path": "crates/spec-spine-cli/src/cmd_couple.rs" } } - extends
{ "nature": "additive", "spec": "109-impact-and-conflict-are-declared", "unit": { "kind": "file", "path": "crates/spec-spine-core/tests/impacts.rs" } } - extends
{ "nature": "additive", "spec": "106-obligations-are-declared-constraints", "unit": { "kind": "file", "path": "crates/spec-spine-core/tests/obligations.rs" } } - extends
{ "nature": "additive", "spec": "111-a-move-is-a-reviewed-mapping", "unit": { "kind": "file", "path": "crates/spec-spine-core/tests/moves.rs" } } - extends
{ "nature": "additive", "spec": "103-a-verifier-fixture-is-a-published-artifact", "unit": { "kind": "directory", "path": "crates/spec-spine-core/fixtures/verifier/" } } - 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": "055-a-version-pin-the-cli-can-check", "unit": { "kind": "file", "path": "docs/schema-versioning.md" } }
Source headings
- 142: A relocation is proven
- 1. Purpose
- 2. Territory
- 3. Behavior
- 3.1 A partial supersedes hands its unit over (amends 018 §4.3)
- 3.2 A relocation is declared
- 3.3 `delta` proves it against the merge base (amends 071)
- 3.4 `amends_sections` names real sections (L-017)
- 3.5 One live establisher per unit (L-018)
- 3.6 `amends` does not grant code ownership
- 4. Out of scope
- 5. Resolved decisions
- Verification
Frozen anchors
No frozen anchors declared.