144-a-repository-path-is-one-type

A repository path is one type

Lifecycle approvedImplementation completeVerification unknownQualification unknown

Paths the engine joins onto the repository root were checked key by key, or not at all. `derived_dir` refused `/`, `..`, `\` and `:` (spec 128); `specs_dir` and `standards_dir` accepted anything, so a corpus could be read from outside the repository; a compact plan refused a leading slash (WF-8) and let the drive-relative `C:foo` through; no key refused a Windows device-name segment; and a link inside the repository could point any governed read outside it. This spec gives one rule for a repository-relative path, applies it to every layout root and to compact plan paths, and refuses a run whose tree holds a link that resolves outside the repository, exit 2, while a repository reached through a link keeps working.

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-types/src/repo_path.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-core/tests/repo_path.rs"
    }
  • extends
    {
      "nature": "corrective",
      "spec": "128-a-derived-tree-stays-in-its-repository",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/config.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-core/src/shard.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "096-compaction-is-a-verb-not-a-session",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/compact.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "097-a-path-leaves-the-corpus-the-way-a-spec-does",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/tests/retire.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "004-codebase-index",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/pathutil.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/compile.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "004-codebase-index",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/index.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "129-a-json-config-obeys-the-loaders-rules",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/tests/config_facade.rs"
      }
    }

Source headings

  1. 144: A repository path is one type
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 3.1 One rule
  6. 3.2 Every layout root (amends 128)
  7. 3.3 Compact plan paths
  8. 3.4 No read leaves the repository through a link
  9. 4. Out of scope
  10. 5. Resolved decisions
  11. Verification

Frozen anchors

No frozen anchors declared.