Skip to content

fix(rust): resolve Windows absolute path-table names - #1192

Merged
thekevinscott merged 5 commits into
mainfrom
claude/1185-win-abs-table-names
Oct 2, 2026
Merged

thekevinscott merged 5 commits into
mainfrom
claude/1185-win-abs-table-names

Conversation

@thekevinbot

@thekevinbot thekevinbot commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #1185

Path-table names are now parsed with typed-path instead of std::path plus a /-prefix check. The syntax is a type parameter, so the Windows rules run as unit tests on Linux.

On Windows these now resolve:

  • drive letter, with \ or / (C:\logs\*.log, C:/logs/*.log)
  • UNC (\\server\share\*.md)
  • ~\ as well as ~/
  • rooted, no drive (/var/log), as before

Absolute path-tables report path_prefix with / separators (C:/logs), so absolute tables match the /-separated relative paths from #1184. Verbatim (\\?\) paths keep \, because / is not a separator there. root (the directory walked) stays native.

Two smaller fixes:

  • A prefix component such as \\?\C: is no longer read as a glob because it contains ?.
  • normalize no longer pops a .. it kept on a relative path (../../a stayed ../a before).

Test changes. path_table_globs.rs and path_table_cli_e2e.rs built their expected path with format!("{dir}/docs/a.md") or join(..).display(). On Windows that yields mixed separators like C:\...\tmp/docs/a.md and C:\...\tmp\notes/n.md. Those strings only hold where the temp dir contains no \. No single reporting rule can satisfy all of them, so the tests now expect the /-separated form. On Linux nothing changes.

Based on main, independent of #1178. The Windows runs cited below were taken while this branch was on top of #1178. CI red: #1178's Windows run 35995035941.

Windows failure count: 99 before, 94 after (run 36437093101). The five path_table::tests unit failures are fixed. Every absolute, ../ and ~/ path-table now resolves on Windows. The path_table_globs.rs and path_table_cli_e2e.rs failures that remain have the right C:/... prefix, then a \ before the relative part (C:/.../docs\a.md). That comes from the vtab path join and relative paths, which #1184 owns.

E2E Verification

  • Ran e2e suites locally for every affected SDK
  • Python SDK e2e: pass (38 passed)
  • TypeScript SDK e2e: pass (18 passed)
  • Rust core e2e: pass (cargo test --workspace --features cli)
  • packages/python/e2e-attestations/claude-1185-win-abs-table-names.json receipt written (just e2e-attest-python)
  • packages/ts/e2e-attestations/claude-1185-win-abs-table-names.json receipt written (just e2e-attest-ts)
  • Command(s) run: just e2e-attest-python, just e2e-attest-ts, cargo test --workspace --features cli, just preflight
  • Result summary: all green on Linux. Manual: dirsql query "SELECT path FROM '/tmp/claude/1185-demo/sub/*.md'" returned /tmp/claude/1185-demo/sub/a.md, and '~/work/dotfiles/domains.md' returned the absolute home path.

Changelog / Migrations

  • Changelog fragment added under packages/rust/changelog.d/
  • Migration fragment added under packages/rust/migrations.d/. The changelog gate requires one, and absolute path values on Windows change from \ to /.

Drive-letter, UNC and ~\ names now resolve on Windows, and absolute
path-tables report a /-separated prefix. Path parsing goes through
typed-path so the Windows rules are unit-tested on any host.
@thekevinbot
thekevinbot force-pushed the claude/1185-win-abs-table-names branch from 8dab2e2 to ff2ceab Compare October 2, 2026 00:03
@thekevinbot
thekevinbot changed the base branch from claude/1175-windows-ci to main October 2, 2026 00:03
@thekevinbot thekevinbot closed this Oct 2, 2026
@thekevinbot thekevinbot reopened this Oct 2, 2026
@thekevinbot
thekevinbot force-pushed the claude/1185-win-abs-table-names branch from ff2ceab to 148951a Compare October 2, 2026 00:40
@thekevinscott
thekevinscott merged commit b4f1d86 into main Oct 2, 2026
83 checks passed
@thekevinscott
thekevinscott deleted the claude/1185-win-abs-table-names branch October 2, 2026 10:44
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.

Windows: absolute path-table names are not recognized

2 participants