Repository navigation
fix(ci): isolate local preflight CLI planning in a Git fixture - #2451
Merged
Merged
Conversation
schlessera
marked this pull request as ready for review
October 20, 2026 05:10
This was referenced Oct 20, 2026
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.
Refs #2370
What changed
The local preflight guard regression test now runs all three real CLI modes in a tiny owned Git fixture. It copies the actual CLI byte-for-byte, forwards its static imports to the real helpers, and supplies an immutable fixture base with one controlled manifest change. Real Git planning, refusal before downstream proof, plan-only inspection, stream draining and child-exit assertions remain exercised. Production guards and all deadlines are unchanged.
Why this shape
Automatic main run 39369165918, unit (4), job 118453057783 failed this whole test after 30,000.49 ms on
9203e85966b409bfb4d645d48cc37344186d68e3. Both refusal modes completed six assertions; timeout cleanup killed one dangling child, followed by the late plan assertion expecting 0 and receiving 143. The original test launched its children against the whole worker checkout, so Git refs and unrelated planning inputs preceded the guard being tested.The passing candidate run 39367301854 used the same source tree and worker partition; this case took 8.156 seconds. The internal slow phase of the failed execution was not recorded. This fixture removes the test's dependence on unrelated owner-checkout planning inputs in every mode; its passing duration is not proof of the historical cause.
A second occurrence in paused PR #2056's run 39370921892, unit (3), job 118458753640 hit the same 30-second whole-case limit (30,000.76 ms), killed one dangling child, and later failed the executing-mode setup-error assertion with empty stderr. Which executing mode and internal phase were slow were not recorded. This does not establish a plan-only failure. Root found no additional diagnostic assertion failure in that log; its integration lease is released, with no merge pending.
Proof
Reviewed head:
076cb020b80261f4ee82b3fd9cfb28f834cf41b8; tree:c37eb2051b2bfb873c3ee7c7271286f823d02523; sole parent and tested base:9203e85966b409bfb4d645d48cc37344186d68e3. Onlytests/local-checks.test.tschanged. Independent R1 review reported no findings at these exact identities.EXPECTED_FIXTURE_ROOT_BEFORE_SCANassertion before entry imports or discovery (calls=[]), rather than a module-load error. Exact byte restoration then passed the full focused file: 20 tests, 134 assertions.bun run typecheckpassed once after the clean commit in 48.0 seconds. No build was needed.bun run check:pr --base origin/main --planpassed. Its plan selects all 19 workspaces and every hosted proof category; inspection does not execute those categories.bun run check:pr --base origin/mainpassed in 99.29 seconds, including lint/leakage, metadata and contribution gates: 969 fast tests / 6,435 assertions across 48 files, then 20 import-graph feedback tests / 134 assertions in the repaired file. The log confirms all 20 cases in both batches, including all three CLI children; the CLI case took 706.43 ms and 601.61 ms respectively. No separate focused, types or plan repeat was added to that allocation.Local proof used the unchanged frozen lock and privately audited install, actual Bun 1.4.3 / Node 26.7.0, ordinary UID with normal HOME and zero capabilities, loopback-only namespaces, private temporary/cache/ledger paths, resource guards and the repository output lease. Hosted Bun 1.4.2 remains unchanged. No standalone runtime or browser campaign ran; no pinned-container test was selected by this default preflight. Owned children, fixtures, ledger entries, output and capacity locks were released.
The failed verification run 39363255089 at the historical timeout-diagnostic revision remains failed. PR #2372 delivered the type-corrected
832ce522c6ac330c57b3d35649a5983344489689candidate as squash9203; its passing confirmation does not replace failed main proof. Earlier native, mutation, failed/cancelled and qualification-identity receipts retain their original scope on #2370.Checklist
Anything left open
Keep #2370 open under its existing campaign claim and milestone 0.44.0. Complete current-candidate hosted confirmation for the actual selected categories, exact-candidate integration, and actual squash/main-push verification remain required. Main remains failed in hosted evidence until the repair is delivered and actual main proof passes. PR #2056 remains paused.
The historical internal slow phase remains unknown. The fixture deliberately bounds inputs; it does not simulate the historical host. Cleanup covers rejected stream/exit waits; independent test-deadline cancellation coverage was not added. No production guard, three-probe/250-ms threshold, 5-second probe budget, 30-second test deadline, network mask, image or qualification pin changed.