Repository navigation
test(ci): isolate dispatcher tools and complete selection metadata - #7621
Conversation
Quest-Claim: 76e769060888851d
Verify the fixture emits no selector diagnostics and isolate shell startup from its stub tools. Current dispatch already runs tooling tests on every diff and propagates their failures. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
The fixture inherited the caller PATH, so CI could use its installed zizmor when the stub was missing. Keep only explicit fixture commands and cover a host tool hiding a missing stub. Preserve selector diagnostics on failure. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 86bf7cd
No actionable bugs found. Restricting the dispatcher fixture to explicit tools addresses the host-dependent false pass without changing production selection. The missing-stub regression, BASH_ENV isolation, and complete io_uring metadata with stderr assertions are focused improvements; adding selection rules or weakening the metadata reader would be less direct.
Verification: static review of the changed tests and surrounding dispatcher, environment helper, selector, and CI recipe. I did not run tests or independently reproduce the reported validation.
(Written by OpenAI)
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Isolated dispatcher fixture PATH (
sh/dispatch-query.test.py:260) —stub_cino longer appends the caller's PATH, symlinks the shell utilities the dispatcher needs (cat sed tr xargs sleep), addsccto the stub list, and setsBASH_ENV=/dev/null. - Host-tool regression test (
sh/dispatch-query.test.py:276) — a missingzizmorstub must still fail strict CI, with the caller's PATH simulated during fixture setup so re-introducing host-PATH inheritance instub_citrips the test. - Completed io_uring metadata (
sh/rs/uring.test.py:21) — fillsworkspace_rootand packagetargets, asserts empty stderr, and preserves stdout/stderr on a nonzero exit. - Quest removal (
quest/m0/ci/) — deletes the completeddispatch-selection-gaps.mdand its README index line; no dangling references remain.
I ran both changed suites on the head (sh/dispatch-query.test.py: 31 tests OK, sh/rs/uring.test.py: 1 test OK) and confirmed .github/justfile's test recipe already wires both into CI, so the quest's wiring goal is met without workflow changes. No production, wire, or public API impact.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
|
No actionable comments were generated in the recent review.
|

Problem
The dispatcher fixture appended the caller's PATH. When
zizmorwas added to the dispatcher without a stub, CI's installedzizmorhid the missing fixture command, while hosts without it failed. Separately, the io_uring selector fixture passed while emitting four jq errors because its Cargo metadata omittedworkspace_rootand packagetargets.Approach
Keep the dispatcher fixture's PATH restricted to explicit stubs and required shell utilities. Clear
BASH_ENVso shell startup cannot replace it. Add a regression where a tool exists on the caller's PATH but its fixture stub is missing: strict CI must refuse it.Complete the io_uring metadata fields the selector reads, assert zero stderr, and include captured diagnostics in a nonzero-exit failure. Remove the completed quest and its index link.
Selection itself works in the current refactored dispatcher: dispatcher, recipe, and unrelated quest changes all select
gh test, and its failure propagates as exit 3..github/justfileruns the dispatcher suite, and the queue calls the samejust cientry point. Fix the fixture's host dependency rather than adding a path rule or changing workflows.Impact
Alternatives
Making the selector tolerate absent Cargo fields would mask malformed metadata. Additional selection rules would duplicate an unconditional test path. Deriving stubs automatically from the dispatcher would hide missing fixture support for new tools.
Decisions
Kept production selection unchanged after reproducing failure propagation. Isolated both fixtures from shell startup, following the existing Rust selector-test convention. PR Check workflow behavior remains with moq-dev/moq#7623; no Kotlin/JS or upstream mbx work is included.
Validation
zizmorstub removed, the inherited host PATH lets CI pass; an isolated PATH makesCI_STRICTfail. The new regression fails when the old PATH assignment is restored.quest check --base origin/main: 604 documents pass.86bf7cd9472199385bae8693df97ba37f1bacc37:quest gate nix develop --ignore-environment --keep HOME --keep USER --keep PATH --command python3 .tmp/run-ci.pypassed in 39 s. The local launcher deduplicates PATH before executingjust ci origin/main, avoiding the existing environment issue owned by moq-dev/moq#7594. All selected modules passed, including the completeghtooling suite. No module filter was used.Review
Claude Code,
claude-opus-5-5, medium effort, round 2 reviewed86bf7cd9472199385bae8693df97ba37f1bacc37againstorigin/main(f8c608a24bbad5c51b1ffa2ad7a4996e9405ac0c): no findings.Round 1 findings fixed:
Follow-ups
None new. moq-dev/moq#7598 also changes
sh/dispatch-query.test.pysetup and the CI quest index. A synthetic merge of its current branch with this head succeeded without conflicts; its KVM fix stays with its owner.(Written by GPT-6.1 Sol)