Repository navigation
fix(ci): refuse slow Linux sandbox setup before local preflight - #2372
Conversation
|
Ready run 39074969929 unit (1), job 117520549643, fails The changed local preflight caller no longer equals the binder's exact frozen producer hash. Correct refusal exposes the self-test's current-source fixture assumption. Scoped audit reproduces five failures across generated-theme-inputs, generated-build-inputs and inclusion-inputs. A control replacing only check-pr.ts with actual base bytes passes all 19 tests / 77 assertions; candidate restored byte-for-byte. #2373 owns frozen positive/current-drift negative fixture repair. No binder/hash/guard is weakened here. Remaining jobs are allowed to finish for diagnostics before final draft/handoff reconciliation; no blind retry or whole-candidate pass is claimed. |
|
Blocked handoff, updated scope: latest timing implementation replaces the original fixed-count candidate. Local Run 39074969929 is complete: 12 successful jobs, unit (1)/(2)/(3) plus proof fail. Unit (3) adds the already reproduced inclusion-fixture assertion; aggregate fails only because selected unit proof failed. #2373 records all five fixture assertions, actual immutable checkout identities and the 19-pass original-caller control. No new failure class, blind retry, hash refresh or waiver is selected. This PR stays draft with Refs #2370. Resume after #2373 with integrated fixture correction, affected preflight and complete fresh candidate confirmation, actual job checkout/review inspection, verified 0.44.0 milestones and matching-head squash/main reconciliation. Claim mount2370-20261018 is released; implementation is preserved on this PR's branch. |
Refs #2370
Candidate and correction
Candidate head
832ce522c6ac330c57b3d35649a5983344489689, tree8792710ff4caeb48ee2afebc54d1602f3270c64d, parentb8bfed6ef0ea0134892f10b2a41fd4e893548c87, integrated and tested base9a726820d52beb2e65c7c0c3da30312b7f676941. The whole contribution is four files, 194 insertions and 6 deletions. The latest correction is two files, 12 insertions and 7 deletions; no dependency, image, deadline or contract changes.The genuine hosted verify failure is retained: confirmation run 39363255089, attempt 1, verify job 118434388152, head
b8bfed6ef0ea0134892f10b2a41fd4e893548c87, base9a726820d52beb2e65c7c0c3da30312b7f676941, actual checkoutc86d8377d0cb2b3e7ddb8210696eb41dc13e9a62. Strict TypeScript reported TS2454 twice forfastestatscripts/check-pr.ts:91and TS7053 three times for indexing overloaded spawn arguments attests/local-checks.test.ts:49-51. That candidate failed verification; this is a source regression, with no waiver, rerun or replacement of its actual failed receipt.The timeout catch now explicitly returns the already-throwing
refusefunction, making termination definite before the normalfastestread. It does not initialize a fake measurement or assert away control flow. Both spawn interception sites normalizeArray.isArray(argv) ? argv : argv.cmdbefore indexing, including the embedded CLI preload. The whole file and contribution were searched for the same control-flow and overloaded-argument bug classes. No other instance remains. Independent R4 review reports no findings on the exact four-file contribution at this head/tree/base; this is source review, separate from command proof.The original guard remains local CLI only: three real normal bwrap setups, refusal at 250 ms, finite 5,000 ms probe and version budgets. The R2 timeout correction still uses the explicit timeout flag and dedicated class; its refusal reports an elapsed lower bound, bubblewrap version, mount count, dominant prefix and both remedies. It does not claim a completed fastest-of-three sample. Ordinary nonzero exits, signals and permission/spawn errors remain distinct. Hosted shared prerequisites retain their boundary.
Current local proof on the corrected candidate
bun run check:pr --base origin/mainexits 0 on its first execution in 118.41 seconds at the exact clean candidate head/tree/base above. Fast invariants: 969 tests / 6,401 assertions / 48 files, zero failures, 87.65 seconds. Import-graph feedback: 46 tests / 300 assertions / three files, zero failures, 18.03 seconds. Lint/leakage, environment documentation, pending package names and contribution changeset gates pass. No short outer cap, guard waiver or retry for green.tests/proof-reuse.test.ts,tests/local-checks.test.ts, andtests/hosted-proof.test.ts. They cover proof reuse/aggregate obligations, local timeout and ordinary-error distinctions, early refusal, inspection-only planning and hosted boundaries. Neithertests/workspace-lease.test.tsnortests/native-diagram-inputs.test.tswas selected. No real lease-container, frozen-positive, padded-native, browser or provider campaign ran. Pinned local image availability was checked read-only without pulling; no container was started.471294bbd60ab273739fed9f7ac0664f0dff7fbc078d182762ad9ec08f1081ed. Selection itself does not establish those hosted results. Actual ordered expanded default argv, complete selection, raw log and source hashes are retained.tests/local-checks.test.ts: 20 tests / 100 assertions, exit 0 in 10.0108 seconds. ONE actual strict rootbun run typecheck(tsc --noEmit) exits 0 in 53.3327 seconds. Both ran the corrected working bytes on pre-commit Git headb8bfed6ef0ea0134892f10b2a41fd4e893548c87/ tree64c789178f9292ab114729727f2387733166ab11; their recorded source hashes equal the subsequently committed832ce522bytes. They are not relabeled as commands whose Git HEAD was already832ce522. Root strict checking resolves source with the existing install; absent core/SDK/server dist outputs did not require a build. Neither command was repeated in this allocation.0c2758c046f2b69d5f33b66521baf3098db5f44256b73ec96961c98d381e6245. Lock SHA-256:5bbd5f6651f111db3fcfabeda512d44a21163cba54c58993f8878012d548cc14. Existing Bun 1.4.3 and Node executable hashes/resolution are verified. No install, build or extra type/focused command ran in this allocation.Default raw-log SHA-256:
036f7691108c2d0266bfd03062bf975dcb1b0e4a1312c60ae59e4ed10a8d61a3.Timeout finding and mutation attribution
R2's P2 was the generic failure before slow-host diagnostics when the 5,000 ms setup budget expired. Its dedicated explicit-timeout/lower-bound correction remains intact and was accepted by R3 review; R4 reviewed the subsequent TypeScript correction with no findings. No timing threshold, probe count, finite budget, namespace/security guard or version rule was weakened.
The retained R3 named mutation removes only the explicit timeout-result branch; the regression fails
TIMED_OUT_SANDBOX_MUST_REPORT_ACTIONABLE_LOWER_BOUNDon the expected lower-bound message versus the generic setup failure (one test / one assertion, exit 1 in 0.48 seconds), followed by exact restore and its original 20/100 focused pass. The original request/log/restore/source identities remain retained, not rewritten as executions on832ce522. Mutation raw-log SHA-256:6816df7f36444150f343915eba59d0b75d8d71b630a7cc4b80d503ba0ccdd1b7. This regression doubles the lowest shared spawn method; it is not real five-second child-kill or padded-host measurement proof. The latest explicit terminating return and command normalization preserve runtime guard semantics, so no duplicate mutation campaign was run.Remaining acceptance and custody
This advances #2370 partially under
Refs, without closing it. Complete hosted qualification for the final candidate remains pending: selected jobs, actual immutable checkouts, all required categories and aggregate must pass. Current local default, corrected-byte strict types and source review do not establish current hosted packaging, browser or native results. The failed old hosted verification is not waived. The separate main-base green audit does not qualify this combined candidate.Release milestone remains 0.44.0 on the issue and PR, sole assignment and parent claim
release044-2370-r2-20261019are retained. The existing root-owned confirmation and PR state were untouched. This body is an unposted artifact for root review; no push, body/state edit, reservation, confirmation request, watch or merge was performed by this allocation.Historical published body and receipts (not current candidate proof)
The following quoted body is the previously published
b8bfed6efbody, preserved with its original receipt identities and limits. Its headings saying “current”, draft-state instructions and pending-type statements describe that historical candidate only. Its default 969/6,401 + 46/300 in 128.35 seconds is historical, separate from the new 118.41-second execution. The older7322a0f/90a9default, all original native padded/unpadded receipts, mutation source identities, failed/cancelled run identities and missing-raw-log limitations remain as recorded below.