144-a-repository-path-is-one-type
A repository path is one type
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
depends on
depended on by
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
- 144: A repository path is one type
- 1. Purpose
- 2. Territory
- 3. Behavior
- 3.1 One rule
- 3.2 Every layout root (amends 128)
- 3.3 Compact plan paths
- 3.4 No read leaves the repository through a link
- 4. Out of scope
- 5. Resolved decisions
- Verification
Frozen anchors
No frozen anchors declared.