Repository navigation
test(ui-server): own inherited-pipe descendant cleanup - #2067
Conversation
|
Focused native ownership receipts for head Each parent was already absent when observed, each descendant remained live with both matching original socket endpoints, and its
The original relative-marker mutation fails only the named Claude publication assertion (one pass / one fail / 31 assertions). Both deliberately failed original tests still execute positive endpoint-checked cleanup (zero pass / two intended failures / 38 assertions). Restored selections each pass two cases / 36 assertions. The clean final complete file passes thirteen / 89. The observer forwards original stderr read results and restores the spawn property descriptor in finally; no observation patch ships. The earlier redirection-observer error is separate and is not a behavioral mutation receipt. #1310 and all original helper-start requirements remain separate. |
…7-owned-descendant-pid-0113361e
|
Prior-source proof and CI-policy integration — 2026-10-16 Run 38885956669, attempt 1, completed successfully: all 13 selected jobs passed. All executed checkout logs and eleven independently downloaded/hash-verified archives identify This prior run costs 6,118 executed job-seconds / 1,483 event-to-completion seconds, excluding separate workflows and local work. It qualifies only its recorded source and is not current candidate confirmation. Main advanced through #1862, squash Fresh committed preflight passes 53 cases / 1,371 expectations and strict types pass after integration. The old passing run is preserved, not relabeled for the new combined tree. After the cheap draft transition, a fresh ready event requests explicit candidate confirmation, including separately mandatory endurance. PR, completed #1937 and advanced #1939 retain milestone 0.44.0 (58).
|
…7-owned-descendant-pid-0113361e
|
Stale candidate cancellation and new integration — 2026-10-16 Confirmation run 38888843410 tested checkout The cancelled run retains six successful jobs (metadata, types and all four unit shards); the other selected categories and aggregate are cancelled, so this is not complete proof. Twelve independently hash-verified archives are retained, including partial cancellation evidence. Reported executed job-wall cost is 4,933 seconds. Prior completed run 38885956669 remains a separate 6,118-job-second historical pass; neither source receipt is relabeled as the new candidate. Cheap draft transition events and contract workflows are separate from those totals. The clean branch now integrates main as
|
…7-owned-descendant-pid-0113361e
|
Second stale-base cancellation — 2026-10-16 Confirmation 38890455780 tested checkout Eleven selected jobs completed successfully, including all 4,255 unit cases (zero skips/failures), target 13 cases / 89 assertions, both ordinary layout shards, browser shard 2, native runtime, captures and types. Browser shard 1, endurance and the aggregate were cancelled. Twelve archives retain independently verified hashes and checkout receipts. Cost: 6,039 executed job-wall seconds. The native log's nested Head
|
|
Current exact-candidate qualification — 2026-10-16 Confirmation 38892499685, attempt 1, passes all 14 selected jobs. Every executed checkout log and all twelve independently downloaded/hash-verified archives identify The aggregate emitted Current qualification costs 6,258 executed job-wall seconds / 1,281 event-to-completion seconds, excluding separate workflows/local work. Historical old-policy pass and stale cancellations remain separate: 6,118 + 4,933 + 6,039 job-seconds, none relabeled as current proof. The stale runs were cancelled only after verified live-base advancement; no spontaneous failed test was retried. Superseded draft check rows from run 38892435441 are cancelled placeholders with zero test steps; they are not selected execution or evidence of passing this candidate. Current selected checks above are complete. The native-tested test blob is unchanged across the integrations. Scope remains the one fixture/teardown file; every original case, native deadline/warning/elapsed assertion and #1310 hung-helper block remains. PR #2067, completed #1937 and advanced #1939 retain milestone 0.44.0 (58). Actual squash and automatic main verification follow merge.
|
|
Merged outcome and automatic main proof — 2026-10-16 #2067 merged as Automatic push CI 38895593468, attempt 1, passes all 14 selected jobs. Every executed checkout log and all twelve independently downloaded/hash-verified archives identify the actual squash and its expected parent/tree; no prior execution was substituted. Packaging is intentionally unselected for this one-file test-only change. Main passes 4,255 unit cases with zero failures/skips, including all 13 original boot-probe cases / 89 assertions in 66.502 reported seconds. Browser passes 8,808 cases with ten existing fine-pointer exclusions for coarse-only scenarios. Ordinary layout passes 1,098; the original separate native ten-minute endurance/full-decode/cleanup case passes in 603.4835 seconds. Native runtime, captures, strict types and integrated aggregate pass. The deliberate native retained-namespace negative remains separate from healthy-cell qualification. Current candidate confirmation costs 6,258 job-seconds / 1,281 event seconds; actual-main proof costs 6,452 / 1,009. These total 12,710 executed job-wall seconds. Historical old-policy success and two verified stale-base cancellations add 6,118 + 4,933 + 6,039 = 17,090, for 29,800 across these five CI events. Separate draft/contract/project events, local work and engineering time are excluded. These are validation costs, not a speedup claim. No spontaneous failed test was retried, and no merged branch was pushed. The correction preserves all thirteen original cases, original warning/elapsed/default/native-pipe assertions and #1310's unchanged helper-PID/liveness blocks. Original relative-marker and deliberate assertion failures reach their intended checks while the independently identified descendants are terminated and observed absent. Restored controls and the clean complete file pass. No production behavior, seam, clock, package or contract changed. PR, closed #1937 and advanced #1939 retain milestone 0.44.0 (58). #1939's only declared prerequisite is now delivered; its current anchors/body and
|
Closes #1937. Refs #1939 and #1849.
What changed
Both inherited-pipe fixtures publish descendant PIDs to absolute paths inside their own temporary directories. They now prove that the original parent exited and its live descendant still holds both original native stdout/stderr endpoints. Teardown identifies that descendant, sends SIGKILL and asserts its process entry disappears, including after an assertion failure. Missing marker publication fails visibly. A separate absolute cleanup receipt ensures the marker assertion itself cannot strand its child.
Why this shape
Claude deliberately probes from
/; the old relativedescendant.pidwrite fails there as an ordinary user, while teardown only searched the fixture directory. The production probe cwd, five-second deadline, 250/200 ms cleanup defaults, original warning/elapsed assertions and native readers/signals remain unchanged. The ownership checks use Linux/proc, matching the required native offline verification environment. Non-child disappearance is observed; it is not described as an awaited direct-child reap. Existing hung-helper checks for #1310 remain byte-identical.Proof
Base
ab0e9fb77a236cefbe5a0b19424836acf9205bde, Bun 1.4.2, an isolated frozen copyfile install with a private cache. Every native run usedunshare --user --map-current-user --keep-caps --net, only loopback up, no route, uid 1000 and all capability sets zero beforebun run test; the repository preload remained active. No production source, package, dependency, contract, case name or deadline changed.bun run test packages/ui-server/tests/boot-probe-deadline.test.ts bun run typecheck bun run check:pr --base origin/maincannot create descendant.pid: Permission deniedTemporary read forwarding observed stderr without consuming/replacing the original native chunks. The spawn descriptor was restored in finally. Endpoint receipts show the original parent absent and both descendant socket identities matching the parent's independently recorded identities. All eight descendants across the four fault/restoration runs were absent afterward. Temporary observation/mutation sources are restored; the final full-file run has no diagnostic patches. AST comparison retains all 21 authored original expect expressions; the original 61 runtime assertions gain 28 ownership/cleanup assertions. Original hung-helper PID/liveness blocks are byte-identical.
The first endpoint-observer prototype recorded its own shell redirection destination and failed the endpoint assertion; it is retained as a diagnostic implementation error, not mutation evidence. The corrected fixture captures endpoint identities before writing receipts. No failed hosted test was retried.
Final integrated head
dd8290f350dc3f054e33efd178b04ec9cddf87eapasses strict types and committed local preflight (53 cases / 1,371 expectations). Exact-candidate confirmation 38892499685 passes all 14 selected jobs and emits the matching live head/base/tree receipt: checkout7b488a8386835e717a71d789fdf0248f0484e9ab, base9506026705425653a40608395aa756cae2a344b2, tree1b131e660f24920d6b6e5564ec4c5765fbd8a001. All executed checkout logs and twelve archive hashes/source receipts are independently verified. Complete units pass 4,255 / zero skips/failures, including target 13 / 89; browser, ordinary layout, separate native endurance, runtime, captures and types pass. The focused native test blob remains identical after base integrations. Historical/stale receipts and cancellation costs retain their own identities in the comments.Current confirmation costs 6,258 job-seconds / 1,281 event-to-completion seconds. The native full-file command costs 67.02 GNU wall seconds / 0.70 terminated-process CPU seconds; no speedup or complete process-tree CPU claim. Shared-host activity was uncontrolled. No spontaneous failing test was retried.
Checklist
docs/reflect the change, or nothing documented moved.Anything left open
Current exact-candidate proof passes; actual squash/main verification follows merge. No implementation gap remains for #1937. #1939's controlled-deadline implementation and #1310's separate historical helper-start investigation remain open. This test-only fix changes no consumer-visible behavior or documented product surface, so no changeset or documentation update is needed. PR and completed/advanced issues target 0.44.0 (58), confirmed against registry 0.43.1; the unfinished epic remains unscheduled.