Resolve absolute destinations inside the candidate checkout

This commit is contained in:
2026-10-07 20:29:16 +00:00
parent 9d2ca66a79
commit 1dfa774164
4 changed files with 117 additions and 9 deletions

View File

@@ -86,6 +86,11 @@ directories, missing paths, checkout boundaries, submodule paths, and symlink
cycles; the caller selects which observations fail validation or are reported
as out of scope.
Resolution walks committed components and symlink targets in order. Active
symlink expansion detects cycles, and traversal honors cancellation. Absolute
destinations and symlink targets within the repository directory map back to
candidate-relative paths; existence still comes from committed entries.
The Markdown capability will use PromptKit's current parser and anchor
conventions as its starting evidence. Supported link syntax, anchors,
diagnostics, and boundary policy belong to that feature's roadmap and

View File

@@ -1,6 +1,6 @@
# Shared validation foundation remediation
Status: Remediation in progress; findings 1–4 addressed, findings 5–6 pending.
Status: Remediation in progress; findings 1–5 addressed, finding 6 pending.
Reviewed committed implementation `f53354b`, covering the eight foundation
commits after `0c7129a`, against the [implementation plan](implementation.md),
@@ -175,6 +175,13 @@ complete message wording as a contract.
## 5. P2: Absolute paths inside the checkout are classified as outside
**Resolution:** Addressed. Absolute destinations and symlink targets within the
captured repository directory map to candidate paths before component
traversal. Absolute paths with similar external prefixes remain outside.
Regression tests also retain symlink-before-parent semantics and demonstrate
that removed committed files resolve while live-only files remain missing.
`go test ./internal/validation` passed.
**Owner:** [candidate destination resolver](../../internal/validation/tree.go),
the absolute-destination and absolute-symlink branches.