142-a-relocation-is-proven

A relocation is proven

Lifecycle approvedImplementation completeVerification unknownQualification unknown

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

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

  1. 142: A relocation is proven
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 3.1 A partial supersedes hands its unit over (amends 018 §4.3)
  6. 3.2 A relocation is declared
  7. 3.3 `delta` proves it against the merge base (amends 071)
  8. 3.4 `amends_sections` names real sections (L-017)
  9. 3.5 One live establisher per unit (L-018)
  10. 3.6 `amends` does not grant code ownership
  11. 4. Out of scope
  12. 5. Resolved decisions
  13. Verification

Frozen anchors

No frozen anchors declared.