test(ci): make the Windows path guard fixture polyglot so CI indexes Go end to end - #1961
Merged
DeusData merged 2 commits intoSep 1, 2026
Merged
Conversation
…ojects stats The guards read node/edge counts exclusively from list_projects, but that tool publishes its stats columns asynchronously — on some venues never within a one-shot MCP session. index_repository's own response carries the synchronous, authoritative counts, so a healthy index was misread as 'SETUP FAIL: ASCII baseline did not index ... nodes: None' (issue DeusData#1952 carries five such runs; reproduced deterministically on macOS where list_projects returns the project row with no stats fields at all while the index response reports nodes=12/edges=21 and definition queries work). - test_non_ascii_path: take counts from the index_repository summary; keep list_projects only as a polled fallback (wait_projects_with_stats in mcp_stdio) and for the no-project diagnostics, now in a helper. - Retry setup steps once (fresh cache) before declaring a precondition skip: the ASCII baseline, the CLI ASCII control (test_cli_non_ascii_arg), the hook-augment index and its permanent-daemon start — these are setup, not the surfaces under test, and a cold runner's daemon startup latency must not red the job through the all-skip gate. Signed-off-by: Ilya Brykau <ilya.brykau@orca.security>
…Go end to end The only CI venue that drives a repository through the shipped binary (MCP stdio -> supervisor -> pipeline -> SQLite) is the Windows guards harness, and every fixture it indexed was TypeScript-only. The Go/cgo extraction defect family (DeusData#1932: build-tag twins DeusData#1911, struct fields DeusData#1935, cgo DeusData#1929, channels DeusData#1930, cross-language bleed DeusData#1928) was invisible to that venue by construction. Add a dummy Go package to the test_non_ascii_path fixture covering those shapes: a struct with fields and a method, a //go:build linux/windows twin pair sharing one function name, a cgo file (C preamble, C. call, //export directive), and a channel producer/consumer pair. Count Go-file definitions per variant (Function/Method where file_path CONTAINS '.go'), require at least one in the ASCII baseline, and include the count in the cross-variant equality check - Go qualified names embed the containing directory, so non-ASCII paths reach the Go passes on their own route. Measured with the harness functions against a current binary: baseline nodes=28 edges=46 definitions=12 go=7, identical for the Latin-1 and Cyrillic variants. The go=7 includes exactly one FlushDisk - the twin collision on main is deterministic, and this guard will observe the second twin appear when the build-tag fix lands. Signed-off-by: Ilya Brykau <ilya.brykau@orca.security>
This was referenced Aug 31, 2026
|
Thanks for opening this — it has been seen, and it is queued. This note is automated, but it is not a brush-off: it exists so you know where your PR stands instead of having to guess from silence. Current review status: working through a backlog. What that means for this PR, concretely:
Things that will genuinely speed it up whenever review does happen:
If this fixes a bug, a reproduction we can run is worth more than a description of the symptom. Thanks for contributing, and sorry in advance for the wait. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The only CI venue that drives a repository through the shipped binary end to end (MCP stdio → supervisor → pipeline → SQLite) is the Windows guards harness — and every fixture it indexed was TypeScript-only. The Go/cgo extraction defect family (#1932: build-tag twins #1911, struct fields #1935, cgo #1929, channels #1930, cross-language bleed #1928) was invisible to that venue by construction.
This PR makes the
test_non_ascii_path.pyfixture polyglot. A small dummy Go package (written for this purpose, no real-world code) covers exactly the shapes that were broken:Store,Push,NewStore)//go:build linux///go:build windowstwin pair sharing one function name (FlushDisk)C.announce()call, an//export FixtureReadydirectiveevents <- "tick"/<-events)The harness now also counts Go-file definitions per variant (
MATCH (n:Function|Method) WHERE n.file_path CONTAINS '.go'), requires at least one in the ASCII baseline, and includes the count in the cross-variant equality check. Go qualified names embed the containing directory (cbm_lang_module_is_dir), so non-ASCII repository paths flow into the Go passes on their own route — which this guard was previously proving nothing about.RED / GREEN
go_definition_nodes = 0and exits with the setup-fail contract — the assertion is live, not vacuous. Equivalently: with the fixture but without Go extraction, the guard cannot pass.nodes=28 edges=46 definitions=12 go=7, byte-identical Latin-1 (café_repo) and Cyrillic (проект_repo) variants match exactly.go=7is itself informative: the fixture's build-tag twin pair yields only oneFlushDisktoday because the twin collision on main is deterministic — when the τ-suffix fix (#1946, #1911) lands, this guard will observe the second twin appear as an equality-preserved count change.Stacked on #1958 (the setup-retry/stats-source fix); only the last commit is new here.
Fixes #1959.