Skip to content

fix: a spelled dot component no longer opens dot directories above it - #1356

Merged
thekevinbot merged 11 commits into
mainfrom
claude/1351-dot-dirs
Oct 6, 2026
Merged

thekevinbot merged 11 commits into
mainfrom
claude/1351-dot-dirs

Conversation

@thekevinbot

@thekevinbot thekevinbot commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #1351

'./**/.*' returned dotfiles inside dot-named directories (.cache/.z). In bash, and per docs/reference/path-tables.md, ** never enters a dot-named directory; only a component that spells it at that depth does.

The fix: a Component::DotName for components spelled with a leading .. In the walk's state machine, neither ** nor a plain component consumes a dot-named entry, so the walk prunes a dot-named directory unless a dot component at that depth matches it.

E2E Verification

  • Ran e2e suites locally for every affected SDK
  • Python SDK e2e: pass -- full suite (tests/e2e/), 58 passed, after merging main (Test one-level glob listings at speed of light #1317)
  • TypeScript SDK e2e: pass
  • Rust core e2e: cargo test --workspace --features cli: pass, except the watcher tests that are flaky locally on main (server_*_directory_moved_*, get_events_streams_mutation_events, watch_*)
  • packages/python/e2e-attestations/<branch>.json written (just e2e-attest-python)
  • packages/ts/e2e-attestations/<branch>.json written (just e2e-attest-ts)
  • Command(s) run: just e2e-attest-python, just e2e-attest-ts, cargo test --workspace --features cli --no-fail-fast
  • Result summary: by hand, ./**/.* gives .x, a/.y; ./.cache/**/.* gives .cache/.z; ./**/.cache/*.md gives .cache/m.md, a/.cache/m.md. Each matches bash -O globstar.

@thekevinbot
thekevinbot enabled auto-merge October 6, 2026 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

'./**/.*' descends into dot-named directories; bash and the docs say it should not

2 participants