Skip to content

Release 0.1.11 - #1951

Merged
swapnilpaliwal-sd merged 4 commits into
mainfrom
dev
Oct 14, 2026
Merged

swapnilpaliwal-sd merged 4 commits into
mainfrom
dev

Conversation

@swapnilpaliwal-sd

Copy link
Copy Markdown
Contributor

Fixing reported Windows issues.

swapnilpaliwal-sd and others added 4 commits October 13, 2026 21:41
…s them

0.1.10 passed its release e2e on Windows while 43 of the query cases' 1,844 checks
failed there: the e2e is one case per language. Every cause is how Windows writes
paths and command lines, or how it holds files; none is platform-specific code.

Paths: repository-relative paths are written with `/`, as the graph stores them.
- parser: the Python and C# analyzers recorded `pkg\changed.py` in the IR, so rules
  joining a module's directory to a string (importlib's SourceFileLoader, Django's
  include()) matched nothing, and C# derived test attributes were missed.
- query scripts: os.path joined and normalised graph paths with `\` (runner
  setupFiles/globalSetup, spawned scripts, the JS/TS import resolver, the freshness
  snapshot), so tests reached through a file were not linked. posixpath now, the
  idiom axiomcode-test-impact already used.
- path/impact: an absolute file:line under the repository was refused as outside it
  (a `root + '/'` prefix test); commonpath on normcased paths.

Arguments: a native program cannot hand Git Bash an argument holding ' or ": msys
parses the command line by its own rules, so `context "the user's cart"` lost every
argument after the apostrophe and a quoted string arrived as \Key\. On Windows the
CLI, the MCP server and every build Python starts pass them in AXIOMCODE_ARGV
(ax_exec.bash_argv); the bash entry points turn them back into "$@". Elsewhere the
command line is used as before.

Build lock: on Windows it locked nothing (Git Bash's fd 9 is not a descriptor in a
native python), so a refresh and a second build of one repository could run at once.
A helper (ax_fresh.py hold) now holds a real lock for the build's lifetime; building()
sees it and a second build waits. POSIX keeps flock.

Tests and the gate:
- tests/run.py starts the CLI as the product does (Git Bash found by find-bash.js,
  MSYS=noglob, arguments via bash_argv), reads and prints UTF-8, uses the sqlite3
  module, and waits for a case's background refresh before removing its graph.
- tests/windows_argv.py: the argument hand-over through both entry points, with the
  command line as control.
- no_symlink / no_exec start Git Bash and UTF-8 Python as the product does.
- the release e2e on win32-x64 now runs every query case against the installed
  packages, and the Windows-only tests (.github/scripts/e2e-cases.sh).

Verified: Windows VM, every language's query cases (1,844 checks), the Windows-only
tests and the gate script; repeated asserted-links runs 25/25. Linux: the five engine
suites, the query cases and the standalone tests identical to dev (51 of 51 results).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er keeps its own version)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Windows: the query cases answer as on Linux, and the release gate runs them
@swapnilpaliwal-sd
swapnilpaliwal-sd merged commit 1890519 into main Oct 14, 2026
21 checks passed
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.

1 participant