031-references-non-owning-paths

`references` seeds no implementing path: closing the C-001 ownership leak

Lifecycle approvedImplementation completeVerification unknownQualification unknown

The contract says `references` is the only non-owning edge and that the coupling gate ignores it. The indexer did not implement that. It seeded a spec's `implementingPaths` from every resolved unit location, owning or not, so a file a spec merely cited became a file it claimed. Every consumer reads that field as a claim: `couple.rs` treats a listed path as whole-file ownership, the indexer's own `owners_of_unit` does the same, and `orphaned_specs` and coverage read a non-empty list as "this spec claims something". One wrong seed made all of them wrong together. The observable defect is that a spec could not edit its own `spec.md` without a waiver once any other spec referenced it: on this corpus, changing `specs/094-one-gate-and-the-boundaries-it-holds/spec.md` was refused as `C-001` with `022-index-sharding`, which only cites it, named as the sole owner. This spec filters the seed by the `ownership` flag the loop already holds, at the single source rather than at each consumer. The citation is not lost: it stays in `resolvedUnits` with `ownership: false`, so provenance is preserved and only the ownership view changes. No DTO or schema shape changes.

Read the full pinned specification ↗

Relationships

Claimed units

  • extends
    {
      "nature": "additive",
      "spec": "004-codebase-index",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/index.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "004-codebase-index",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/tests/index.rs"
      }
    }

Source headings

  1. 031: `references` seeds no implementing path
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 3.1 The rule
  6. 3.2 Fix at the source, not at the consumers
  7. 3.3 Provenance is preserved
  8. 3.4 Shape and compatibility
  9. 3.5 Tests (minimum)
  10. 4. Out of scope

Frozen anchors

No frozen anchors declared.