Track active symlink expansions precisely

This commit is contained in:
2026-10-20 00:26:30 +00:00
parent 75da54150f
commit 7f8ad81065
4 changed files with 114 additions and 14 deletions

View File

@@ -1,6 +1,6 @@
# Import Discovery and Scheduling Review Findings
Status: in progress; issues 1–3 complete, three findings remain.
Status: in progress; issues 1–4 complete, two findings remain.
Reviewed implementation: `aa93aed..15943e2`, ending at
`15943e233ca3cd1286c03c0e7085871db344cd4b`, against the accepted
@@ -120,7 +120,7 @@ undergo their existing containment checks. Public directory/glob regressions
cover ordinary and aliased roots plus escaping links. All four valid cases
failed before the fix. The full everyday check passed.
## 4. [ ] P2 — Distinguish finite symlink reuse from actual cycles
## 4. [x] P2 — Distinguish finite symlink reuse from actual cycles
Owners: [resolveHostImportPath and resolveNativeImportPath](../../internal/engine/filesystem_links.go),
especially the `activeLinks` sets around lines 115–134 and 172–194.
@@ -143,6 +143,13 @@ separate active-path directory-cycle rule. Add finite-reuse and real-loop
regressions for host and link-aware native access; do not replace this defect
with an arbitrary new link or path-depth restriction.
Completed: host and native resolvers now release active links when each target
expansion completes, using explicit frames rather than retaining a whole-path
visited set. Added resolver regressions for finite reuse, self loops, and mutual
loops, plus public host/native directory/glob loading coverage. Finite cases
failed before the change; all pass now alongside existing traversal-cycle and
containment tests. The full everyday check passed; no new limit was added.
## 5. [ ] P2 — Validate the complete depth token before saturating its value
Owner: [parseImportDepth](../../internal/engine/import_spec.go), around lines