Repository navigation
Description
Out of scope
No product timer policy, relaxed cleanup assertion, timeout increase, skipped test, or claim that the historical six handles have been identified. This is a narrow verification repair within existing draft PR #2172, not a new feature or delivery branch.
Observation and reproduced boundary
The required preflight on Storage candidate 9c4419b2df85c9ef69fd91c768369d713954e743 failed a dirty failed mount discards its resources before the next independent case at packages/ui-server/tests/http-supported-mounts.test.ts:263: the observer counted six pending handles after pool disposal. Fast checks passed 956 tests; affected feedback passed 7,184, skipped four inverse empty vector placeholders, and failed this one assertion. The original failed receipt is retained.
observeMountTimers in packages/ui-server/tests/helpers/http-mount-timers.ts:4 exempts the Node HTTP agent's separately owned keepalive timer by matching two text frames in Error.stack. Native socket close is joined and asserted independently. Stack depth and formatting are not timer ownership.
A focused diagnostic with Error.stackTraceLimit = 1 deterministically fails the same real cleanup test at its first zero-timer assertion (one pending 5,000ms unref'ed handle). The shallow stack cannot contain the two required ownership frames. Normal isolated execution passes 106 tests / 929 assertions, and the preceding 20-file context passes 314 / 1,962. Those controls do not attribute the original six handles or replace the failed preflight.
Scope and acceptance
- Replace text-stack ownership inference with observation of the actual synchronous Node HTTP agent keepalive operation; only its timers receive the existing exemption. Preserve fixture-owned socket close/join assertions and count unknown-origin and active unref'ed application timers.
- Reproduce the stack-independent boundary using a real Node socket/agent and show it failing before the correction and passing after it. Demonstrate that suppressing application timers fails the guard.
- Restore every instrumented method/property after proof, including inherited method ownership.
- Execute the real dirty-mount scenario with shallow stacks, the complete mounted-handler suite, and required candidate preflight. Retain the original failure and separate all diagnostic source/runtime identities.
Supporting verification for #2172. No public contract or consumer artifact change is intended. Release 0.44.0.
Correction and proof — 2026-10-19
Existing PR #2172 carries correction 832c20879, integrated with current main and followed by a test type correction as 47e5032ed682d7d866930eb85566703d0a86a364. The helper observes the actual agent keepalive call rather than stack formatting. The new real socket/agent control fails before correction at HTTP_KEEPALIVE_OWNER_DOES_NOT_REQUIRE_STACK_FRAMES. Dropping application-timeout accounting makes ACTIVE_UNREF_TIMEOUT_REMAINS_OBSERVED and UNKNOWN_SOCKET_TIMER_REMAINS_OBSERVED fail. Restored controls pass; the final test shape has two passes / seven assertions and retains full property-descriptor restoration.
The real dirty-mount scenario also passes with shallow stacks (106 assertions). The integrated batch passes 282 tests / 53,530 assertions, including all 106 mounted handlers. Final strict types pass. The subsequent 47e5032e preflight passed 959 fast tests but failed the unrelated busy-reader WAL deadline, now corrected by #2439. The subsequent corrected candidate completed required preflight and selected hosted confirmation. Original main verification then exposed #2405; corrected-main verification follows its separate #2448 delivery, as recorded below. The original six uncaptured handles remain unattributed; no historical receipt is relabeled. No consumer changeset is needed for this test-helper-only repair.
Verified delivery — 2026-10-19
Delivered through #2172 as squash caae12da2e678dd4720bf112e93ef21812cfdc18, tree 0d0965b8c72bbe14644da018558ffc90ae2950fa, parent 0b46b9db7925ce2e52c85a56c6200a4e2f330bd7. The actual squash matches the inspected combined candidate exactly and is present on remote main. Release milestone: 0.44.0.
HTTP keepalive ownership follows the real agent operation without Error.stack matching. Shallow-stack native socket controls pass, application/unknown timers remain counted, and property descriptors restore completely. The dirty-mount and mounted-handler suite pass; the original six uncaptured handles remain unattributed.
Ready-PR confirmation 39299288116, attempt 1 passed all 17 selected jobs on actual checkout ad44bb6228c13770b54797039233319fd58f6e44. All checkout logs and 13 resource receipts agree on the verified head/base/tree; no domains were retained. Local preflight passed 959 fast and 7,198 affected tests with four expected inverse empty vector placeholders, zero failures, across all 548 selected files. All 77 Storage browser/story cases passed. Prior failing-first and restored mutation receipts retain their original identities.
The original #2172 automatic main run 39302987919, attempt 1 remains failed: 15 jobs passed, unit (1) encountered the #2405 vanishing maintenance.lock fixture-copy failure, and aggregate proof failed. All 77 Storage browser/story cases passed there. Its actual checkout was caae12da2e678dd4720bf112e93ef21812cfdc18; no failed receipt was rerun or relabelled.
The separate test-fixture correction #2448 merged as cea53611ddea4916ac323060bfef42ec18118fea, parent caae12da2e678dd4720bf112e93ef21812cfdc18, tree 4a826e90467b5874be85ff71d04e9ede01577486. Its automatic main-push run 39312029459, attempt 1 passed all 17 selected jobs. Every actual checkout log and all 13 resource receipts agree on that squash identity; integrated-cadence aggregate passed with an empty retention ledger. All 77 Storage browser/story cases and all eight Git-policy regressions passed freshly on corrected main. The correction changes only the test preload, its regression tests and testing documentation; Storage product source is unchanged. Both squash commits are present on remote main.
Separate follow-ups remain open: #2334 needs reproduction; #2380 and #2279 await maintainer decisions following their newer contention reproductions. This delivery does not change their scope or claim to explain the exact historical failures.
2026-10-19 correction: replaced superseded candidate/verification status with the verified delivery and resolved implementation dependencies. Historical failed receipts and their stated limits remain preserved in the issue/PR discussion.
Activity
schlessera commentedon Oct 19, 2026
Claim
storage-merge-20261019-t1: repair this reproduced proof boundary within existing PR #2172, branchfeat/2059-storage-history-ui-m4p6, as part of the requested draft-merge priority. Preserve the failed preflight and obtain failing/restored native ownership evidence.schlessera commentedon Oct 19, 2026
Delivered through #2172 as squash
caae12da2e678dd4720bf112e93ef21812cfdc18, tree0d0965b8c72bbe14644da018558ffc90ae2950fa, parent0b46b9db7925ce2e52c85a56c6200a4e2f330bd7. The actual squash matches the inspected combined candidate exactly and is present on remote main. Release milestone: 0.44.0.HTTP keepalive ownership follows the real agent operation without Error.stack matching. Shallow-stack native socket controls pass, application/unknown timers remain counted, and property descriptors restore completely. The dirty-mount and mounted-handler suite pass; the original six uncaptured handles remain unattributed.
Ready-PR confirmation 39299288116, attempt 1 passed all 17 selected jobs on actual checkout
ad44bb6228c13770b54797039233319fd58f6e44. All checkout logs and 13 resource receipts agree on the verified head/base/tree; no domains were retained. Local preflight passed 959 fast and 7,198 affected tests with four expected inverse empty vector placeholders, zero failures, across all 548 selected files. All 77 Storage browser/story cases passed. Prior failing-first and restored mutation receipts retain their original identities.The original #2172 automatic main run 39302987919, attempt 1 remains failed: 15 jobs passed, unit (1) encountered the #2405 vanishing
maintenance.lockfixture-copy failure, and aggregate proof failed. All 77 Storage browser/story cases passed there. Its actual checkout wascaae12da2e678dd4720bf112e93ef21812cfdc18; no failed receipt was rerun or relabelled.The separate test-fixture correction #2448 merged as
cea53611ddea4916ac323060bfef42ec18118fea, parentcaae12da2e678dd4720bf112e93ef21812cfdc18, tree4a826e90467b5874be85ff71d04e9ede01577486. Its automatic main-push run 39312029459, attempt 1 passed all 17 selected jobs. Every actual checkout log and all 13 resource receipts agree on that squash identity; integrated-cadence aggregate passed with an empty retention ledger. All 77 Storage browser/story cases and all eight Git-policy regressions passed freshly on corrected main. The correction changes only the test preload, its regression tests and testing documentation; Storage product source is unchanged. Both squash commits are present on remote main.Separate follow-ups remain open: #2334 needs reproduction; #2380 and #2279 await maintainer decisions following their newer contention reproductions. This delivery does not change their scope or claim to explain the exact historical failures.