Repository navigation
feat(libkernel): cancel blocked POSIX reads with owned operations - #12682
Felipebmaitan wants to merge 72 commits into
Conversation
|
Published The main conflict was its new Windows exception-delivery drain coverage versus our existing test split; both are retained as separately registered scenarios. All four Apple empty-iovec guards, deterministic stream-close coverage and underscore context restoration remain. The composed accept tree Accept Windows failure audit, fixture change and leak control: UDP is confirmed passing in the next parent run, while four accept count failures require new Windows confirmation after warming the separate transfer waker. Refreshed overlap/source triage and proposed composition orders. Uncomparable PRs remain unresolved; no clean-overlap claim or new dependency solely from shared files. Archive #11625 remains separately owned. The Windows 22621 intermittent sigjump hang remains unresolved; accept stays draft. Immediate-path costs remain unmeasured, with no speed claim or paired trace_digest evidence. Native 22621 validation, maintainer scene bench and admin-only full-build dispatch remain external requirements. |
|
Head-specific follow-up: the passing notification applies to Read the overlap comment at its latest The existing dispositions remain: #5021's getdirentries export flag does not establish a second runtime implementation; the broader ARM64 composition remains unqualified. #11831's same-named stream-close fixture has distinct coverage; future composition must retain both suites, the deterministic hooks/barriers/content assertions, descriptor cleanup and stream/descriptor lock order. The recvfrom/getdirentries flags identify existing main exports; current incremental source does not introduce duplicate declarations/implementations for those flags. Current main No new source change, push, dependency or repeated runtime test is indicated by this notification. Exact-head conventions and the composed-stack Linux evidence remain documented in the body. The Windows 22621 intermittent context hang remains unresolved; the separate accept layer stays draft. Existing watches continue while fresh CI and external validation remain outstanding. |
|
@CnRJay Fresh exact-head CI is green at reads The native Windows job built successfully and scheduled 3,206 CTests: 2,252 passed, 954 explicitly skipped, zero failed (151.41 s). Skips are not passes. The scheduled Both macOS arm64 write-watch and macOS Intel write-watch, both edge-watch jobs, relinker/register-context jobs, library portability and current conventions succeeded. The API records 20 successful check runs plus two retained cancelled convention reruns and one skipped full Linux job. The green notification does not represent a full Linux runtime CI pass. GitHub reports the PR mergeable/clean. #12149 remains open at Immediate-path locking costs remain unmeasured; no speed claim or paired same-scene trace_digest evidence. Native Windows 22621 diagnosis/validation, maintainer title-scene bench and admin-only full-build validation remain external requirements. Accept remains draft. The PR body now records these exact-head results; no source change or push is needed for this passing notification. |
|
Reviewed the changed overlap snapshot, updated The compared rows are now #12605, #13950 and #13953, all at debt-text intersections. Selected current source checks:
The newly uncomparable #13486 is pinned at There are two merge bases against current main; a plain triple-dot diff warns and selects one, yielding a broad historical file list. Recursive merge-tree against main Main advanced from the integrated b28bb77 baseline to a4eca2a. Fresh fetches and merge-tree checks show all four owned heads merge cleanly with a4eca2a; no conflict-driven branch update is required for this notification. Those merge results were not built/run in this read-only audit. The published exact-head CI evidence remains explicitly tied to the earlier integrated baseline, not newly qualified as an a4eca2a composition.
|
|
Prerequisite-head audit after the refreshed overlap reports: #12149 remains open, now at The new commit has parents 03c2195 and main The stack already contains the older prerequisite's topic implementation; reads' existing offset-92 context save/restore repair for Fresh remote fetches retain reads The transport overlap report's compared PR heads are unchanged; its changed row text replaces only main-source link hashes with b2627ce, with no new uncomparable PR/file rows. Existing selected-source dispositions remain, and the broader uncomparable table is still unqualified. PR bodies will distinguish the embedded prerequisite revision from its current live head. No additional runtime repetition or dependency change is indicated; the unresolved Windows 22621 issue and accept validation remain separate. |
|
Reviewed the reads overlap snapshot, updated
No current implementation dependency is established by these rows; no other branch was modified. The existing #12605/#13950/#13953 heads are unchanged and their prior pinned dispositions remain. Other uncomparable branches remain unresolved; this selected-source audit is not a full review, clean-overlap claim or successful pairwise integration. #12149 remains open at the already-audited pure-main-merge head |
✅ AMD GPU test: passedPR head
Unstable on main (2, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (13, not counted against this PR)Passed on retry (3, failed in the parallel run, passed when re-run with a 360 s timeout; not counted against this PR)Validation IDs already present on main (4 IDs in 754 tests)Skipped (59)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
|
@CnRJay refreshed reads at Actual-ancestor 42-file reads comparison; main-based Files changed remains cumulative. Full-template body/dependency lines and historical evidence are refreshed. The reported workflow approval failure at previous b0b8c21 was not reproducible: GitHub exposes 29 successful / 3 cancelled / 1 skipped check runs, 19 completed success/cancelled suites, no approval-required run among the 19 upstream workflow runs, no fork run/status context, and GraphQL rollup SUCCESS. Its actual merge state was DIRTY, as were all four PRs; those conflicts are now integrated. No unspecified run was approved. Main's checked context copies and cpuset limits coexist with the stack's opaque I/O identity and cancellation debt. The checked local context retains Current composed accept code The overlap scan covers 1,724 open PRs and fails closed for uncomparable branches. #9938 at db41fa3 already declares #12682 first; its later caller-stack integration must retain I/O retirement before cleanup/TSD and native-stack restoration. #13390 at 3992904 adds independent logging preservation around freopen; retain both its calls/declarations and the FILE-before-descriptor close ordering. No combined runtime pass with either is claimed. #13950/#14885/#9242 are now retained through main, not new prerequisites. Other updated source pins and limits are in the body. New-head checks/native qualification remain pending. Review is COMMENTED, not approval. Accept remains draft: the Windows 22621 intermittent sigjump hang is unresolved; one Server 2025 sample and Linux repetitions do not settle it. Admission/mode-lock costs are unmeasured, and no speed/CPU/title-performance or title-unblock claim is made. Maintainer bench and ordered admin-only full-build validation remain outstanding. Existing explicit dispatch was denied HTTP 403/admin rights. AI-assisted: yes. |
|
Recorded the new exact-head green evidence for 32169af, selected and merged onto main 4f41f4c:
The overlap report updated 2026-11-03 17:18:12 UTC leaves all four compared PR heads unchanged and adds #8497 096bf08 and #10749 dae55d9 to the uncomparable table. Their manual composition audit applies: reads and accept have identical Signals.cpp. Preserve locked signal/code consumption, wait/notify and checked-copy ordering, RegisteredForJumps when removing only RegisterSignalsOnLoad, I/O context/cancellation paths, and both signal test targets. Neither supplies a helper required by reads, so no import/new dependency is warranted; Depends on remains #12149 (still open). No order agreement or combined runtime pass is inferred. 76 branches remain uncomparable; no full overlap clearance. #14085 disappeared from the report without implying it merged. Updated the full PR template. The branch is mergeable/CLEAN; review remains COMMENTED, not approval. No source change or push; Windows 22621 diagnosis and maintainer/admin validation requirements remain external/outstanding. |
XairRrR
left a comment
There was a problem hiding this comment.
Reviewed — approved
The merged tree builds and every test in its suite passes. Two production-only negative controls make the new read-cancel and close tests fail. I found nothing blocking. The non-blocking notes below cover the per-read cost of the signal layer and how scePthreadCancel waits on I/O.
What I ran
Head 32169af1dc395b182370cdf973687d313d33bfc4, main 1e658521a0a599872612bb91949311e2956b5283, merged tree 9efdf6fa7f958f4c65380ddb06c776629a3058fd, all in a clean worktree. Release, GCC 14.2.0, Ninja, on Debian 13 (32 vCPU Xeon Gold 6136).
git diff --check 1e658521a0a599872612bb91949311e2956b5283...32169af1dc395b182370cdf973687d313d33bfc4
python3 tools/check_conventions.py --base 1e658521a0a599872612bb91949311e2956b5283
ctest --test-dir build -j8 --test-load 32 --output-on-failure -R "guest_io_|guest_underscore_jumps|guest_raise_exception|guest_stream_close|guest_socket_read_write|net_dont_wait|guest_user_context|guest_signal_sets|host_thread_local"
ctest --test-dir build --repeat until-fail:20 -j8 --test-load 32 -R "^guest_io_(read_pipe_read_cancel|descriptor_close_before_native|context_sigjump|descriptor_registry_lifetime)$"
# negative controls (see below), each followed by
ninja -C build -j32 -l32 guest_io_read_cancel_tests guest_io_descriptor_access_tests libkernel libs
ctest --test-dir build -j8 --test-load 32 -R "^guest_io_(close_|descriptor_|read_pipe)"
git status --porcelain
Results
| Check | Result |
|---|---|
Merge into main |
clean |
git diff --check |
clean |
check_conventions.py |
All conventions checks passed |
Configure / build / libs (build job) |
ok |
| Selected tests (build job) | 4071 run, 0 new failures, 0 timeouts. The 9 known failures (agc_driver_* denormal/division, guest_interfaces, guest_socket_options_multicast, unwrap_self_…, vector_constant_factor_tininess) also fail on main. |
check_skips.py |
guest_net_ctl skipped unexpectedly, which also happens on main |
| Focused tests touched by the PR | 334/334 passed, 22.7 s wall. Each test runs well under its 15–25 s limit. |
20 repeats of four of the new cancel/context tests (incl. guest_io_context_sigjump) |
4/4 passed |
| Vulkan validation | not applicable: no AGC, shader recompiler or VideoOut file changed |
Focused run tail
332/334 Test #3511: guest_io_read_pending_preadv .............................. Passed 0.01 sec
333/334 Test #3301: guest_io_signal_fault_signal_unregistered_jump ............ Passed 0.01 sec
334/334 Test #3513: guest_io_read_zero_recvmsg_empty_complete ................. Passed 0.01 sec
100% tests passed, 0 tests failed out of 334
Negative control
The new tests call new APIs (GuestDescriptorAccess, JumpBuffer::GuestContext*), so restoring every production file from main would only break the build. I made two targeted production-only reverts instead:
- No interruptible native read. In
core/libs/prx/libkernel/File/src/Open.cpp:156, I replacedThreadCancel::Native([&] { return ::read(fd, buf, n); })with a plain::read. Thenguest_io_read_pipe_read_cancel,guest_io_read_pipe_read_complete,guest_io_read_pipe_alias_cancelandguest_io_read_pipe_alias_completefailed, each in about 2 s. Thependinganddisabledcases still passed, as they should. - No close admission. In
core/libs/prx/libkernel/File/src/Stdio.cpp:971, I removed theGuestDescriptorAccess … Mode::Closeguard inclose_nid_postfix. Thenguest_io_close_readers_0,guest_io_close_0_0_0andguest_io_descriptor_close_before_nativefailed. The socket variants close through other paths and passed.
After both controls I restored the merged files from 9efdf6fa… and rebuilt. All 60 guest_io_(close_|descriptor_|read_pipe) tests passed again, and git status --porcelain was empty. The author also reports a negative control on _longjmp's restore call; I did not repeat it.
Findings
Blocking
None.
Non-blocking
-
A process-wide mutex and about 14 extra signal-mask syscalls on every POSIX read on Linux. This is new evidence for point 1 of CnRJay's review. The descriptor registry is now sharded, but the signal layer still serialises every POSIX read/recv in the process:
BeginIoSignalspushes ontomanager.entriesunder the singleSignalManager::mutex(core/libs/prx/libkernel/Pthread/src/IoSignals.cpp:260-263).EndIoSignalsrunsstd::eraseover that vector under the same lock (IoSignals.cpp:288-291).- The manager thread holds that lock while it scans every entry (
IoSignals.cpp:188-194).
Counting from the source, each such read also pays for a large number of signal-mask syscalls:
SetupBlockruns in theIoRestartconstructor and destructor, inBeginIoSignals, and twice inEndIoSignals: 10pthread_sigmaskcalls.NativeIo::Stateadds an unblock, a block, asigpendingand a final setmask (core/libs/prx/libkernel/Pthread/src/NativeIo.cpp:57-60,82-88).- On top of that come three heap allocations (
IoRestart::State,SignalState,NativeIo::State).
The description says this cost is unmeasured and makes no speed claim, so no rule is broken. Still, this path is hotter than the descriptor admission it was asked about. Suggested fix:
- Register the thread's
SignalStateonce per guest thread rather than per call. - Skip the
SetupBlockpairs when no deferred delivery is pending. - Or show a
trace_digestcomparison on a read-heavy scene before this lands.
-
scePthreadCancelwaits on a target's I/O with no time limit, re-signalling it on every pass of a yield loop. In the mergedcore/libs/prx/libkernel/Pthread/src/Thread.cpp:1450-1460, the canceller loops whilethread->cancelIois set, callingcancelIo->Wake()(pthread_kill(SIGUSR2)/CancelSynchronousIo) andscePthreadYield()each time.mainalready loops like this for condition waits (Thread.cpp:1406-1414at1e658521), but those always wake. A read stuck in a host call that ignores the interrupt keeps the calling thread spinning at full CPU, andpthread_cancelnever returns. POSIXpthread_cancelonly queues the request.The debt entry says that cancellation and close "may delay … indefinitely", but not that the caller of
pthread_cancelblocks. Suggested fix: back off as the close path does (1–16 ms), or return after the request is queued and leave re-waking to a retry owner. At least state in the debt entry that the caller waits. -
Scope. The PR carries #12149's
_setjmp/_longjmp(declared underDepends on: #12149, which is still open). It also splitsguest_raise_exceptioninto per-case tests, adds descriptor admission todup/dup2/fcntl/stdio close, and adds deferred async-signal delivery. Each piece is tied to read cancellation, but together they make a +4.2k-line review unit. If maintainers prefer smaller units, the deferred-delivery layer (IoSignals.cpp,Signals.cpp/Exception.cpphooks, context identity) could stand on its own.
Not verified
- Windows and macOS: not built or run here. That includes
_longjmp'sGuestStackSwitch_nid_no_patchpath, theCancelSynchronousIopath, and the Windows-only tests (deferred_drain,close_progress,position_cancel,append_*). - On macOS,
FileStream::Closenow callsstd::fclosewhile the same thread holdsflockfile(core/libs/prx/libc/include/FileStream.hpp:131-139,493-501). This is fine on glibc. I did not check Apple libc, which releases and reinitialises the FILE lock insidefclose. - The intermittent Windows 22621 sigjump hang the author mentions.
- Any performance effect: I had no
strace/perf, so the syscall count above comes from reading the source, not from a trace. - Console behaviour of close interrupting an admitted read. The debt entry records that it differs from the reported console behaviour.
- Combined behaviour with the overlapping PRs listed by the overlap bot.
|
@XairRrR read the full approval at 32169af and the non-blocking notes. The source-derived signal-mask count remains an estimate, not measured trace evidence; no speed claim. Your native Debian results and production-only negative controls are independent evidence for that reviewed head. I prepared local follow-ups: sharded signal-registration ownership with direct unlinking; queued I/O cancellation whose existing worker owns 1–16 ms retries; explicit remaining mask/allocation and condition-wait caller debt. A gated cancellation test checks requester return while the target ignores interrupts, independent retry, and exactly-once cleanup/TSD. Production-only controls fail as intended: old caller loop blocks the requester; dropping worker notification loses retries; restored code passes. These changes are not pushed. The wider translated Linux selection gives 252/334 passes and 82 failures (79 native-syscall observation failures, three starting fault-signal delivery failures); rebuilding published production sources produces the same 82 failing names. Those cases remain unqualified here. The final composed rebuild was interrupted twice by Docker daemon loss, so I cannot report its success. Conventions pass on all four local candidates (reads clean; upper layers only inherited SSL debt warning); whitespace/main composition pass, and overlap scan of 1,757 PRs fails closed. Windows syntax checks cover IoSignals and the fixture; Thread.cpp hits unchanged SDK declarations. No fresh Windows/macOS runtime or Windows 22621 resolution is claimed. The approval and published heads remain unchanged while verification is incomplete. Local candidates are retained for continuation; I have not marked the new follow-ups published/addressed or requested a merge. No branch base/history replacement or archive-owner branch changes. |
✅ AMD GPU test: passedPR head
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (15, not counted against this PR)Validation IDs already present on main (4 IDs in 769 tests)Skipped (61)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
What
Head
32169af1dc395b182370cdf973687d313d33bfc4. Implement deferred cancellation of blocked POSIX reads/receives, retaining descriptor/native ownership through interruption and releasing it before cleanup/TSD or deferred delivery. Completed/partial results win; SCE/libSceNet gain no cancellation points.42-file incremental comparison uses actual ancestor
97a5bb60799e85d8fff1cbbce061c15619c6ce12. Main-based Files changed remains cumulative while open prerequisites await merge. Source-neutral ancestry commits retain the small incremental comparisons while preserving published history.All four layers integrate upstream main
4f41f4c375f5abb487dbd184fbc150f31994d762through ordinary merges and preserve their previously published heads and maintainer commits. The manual debt resolutions retain main's checked getcontext/setcontext copy behavior and updated cpuset limits, plus the stack's opaque context identity and read/write cancellation limits.mc_spareidentity survives checked context copies; restoration still retires abandoned I/O before switching contexts. SCE contracts, all four Apple empty-iovec guards, synchronous-write completion and deterministic stream-close hooks/barriers/exact data assertions remain. The previous macOS duplicate test-registration repair is retained.#10552/#10817/#10755 are merged upstream, honoring #10552-first. #13950's checked-context-copy fix, #14885 affinity behavior and #9242 tcgetsid are now in main and retained. #12149 remains open at 88f89fc; embedded prerequisite 03c2195 and its current pure-integration head have identical JumpBuffer.cpp/GuestUnderscoreJumps.cpp. The underscore context repair still avoids guest signal-mask saving/restoring. Writes/accept retain exact #9019 1e6b694 under the maintainer-approved #9019-first order: IoWrite and WithIoDescriptor live inside the shared PosixPwrite_nid_no_patch body, with SCE separate and fixed-size clamps/metadata/offsets preserved.
Ownership lookup uses 64 shards and matching-entry final erasure, avoiding its former global mutex/full-map sweep. Per-descriptor admission and other metadata/mode locks remain; immediate-path cost is unmeasured. Close interrupt/predicate retries back off 1–16 ms and receive completion notifications. A single interrupt still misses the previously demonstrated pre-native-call gap; non-interruptible host calls have no total drain-time bound. Registry retries sleep with backoff instead of yielding in a tight scan. No speed, CPU-use or title-performance claim or paired same-scene trace_digest evidence.
The active-owner Windows callback-drain guard prevents a concrete pop/reinsert cycle, but has not established the cause or resolution of the intermittent Windows 22621 guest_io_context_sigjump hang. Accept stays draft. PR bases and archive #11625 were not changed; no merge/replacement is requested.
Tested
Current-head native CI selects
32169af1dc395b182370cdf973687d313d33bfc4and merges it onto main4f41f4c375f5abb487dbd184fbc150f31994d762. Windows Server 2025/GNU 15.2: 2,387 passed / 976 skipped / 0 failures, 3,363 scheduled, 125.46 s. Deferred-drain, underscore/manual-underscore context restoration, adopted/adopted-exit and swap/jump/signal/manual cases pass. One guest_io_context_sigjump sample passes in 0.03 s; this is Server 2025, not qualification or resolution of the Windows 22621 intermittent hang.macOS x86-64 relinker CI, Apple Clang 21.0.0, passes 669/669 in 271.02 s, including guest_none_relocations in 16.01 s. The native-arm64 relinker, both macOS write-watch/edge-watch jobs, Debug/Release register-context jobs, other relinkers, portability and conventions are also successful. API check runs are 21 successful / 1 skipped (including repeated metadata runs); the full Linux job is skipped, not passed. These jobs do not qualify full macOS libkernel runtime. Different runners' timings neither establish the cause of writes/accept's guest_none_relocations timeouts nor provide paired same-machine/scene performance evidence.
Current composed accept code at
1574087191a4ec15cad31be7df32a521c0561280: Ubuntu 24.04.5 x86-64/GCC 13.3 Release through Apple Silicon translation. Production libraries and 17 focused executables explicitly rebuild after integration. 660/660 CTests pass (68.29 s), selected by executable: guest_kernel_sys_pwrite_tests, guest_io_write_cancel_tests, guest_io_write_sync_cancel_tests, guest_io_shared_write_cancel_tests, guest_io_context_tests, guest_accept_cancel_tests, guest_io_read_cancel_tests, guest_io_descriptor_access_tests, guest_pthread_cancel_tests, guest_user_context_tests, guest_stream_close_tests, guest_udp_tests, guest_raise_exception_tests, guest_file_vector_tests, guest_file_vector_memory_tests, guest_kernel_sys_aio_tests and guest_aio_tests. This covers checked context copies/nonlocal restoration, read/write/accept cancellation, descriptor ownership, stream close, UDP, vector writes and AIO.Six additional composition CTests pass 6/6 (1.72 s), selected by guest_sce_net_tests, guest_socket_read_write_tests, guest_shm_open_tests, guest_dup_tests, guest_kernel_fcntl_tests and guest_append_writes_tests after rebuilding. These exercise main's socket forwarding alongside the stack, shared-memory and duplicate/status/append behavior. Production/context/stream-close/accept fixture hashes match the final committed code; the final debt shortening and comparison-ancestry commits change no runtime code. These are composed-stack results, not separate fresh local executions at every lower head.
Public-header audit: 406 libraries / 28,304 exports, unique declarations and umbrella coverage; no full compiler-batch run claimed. All four final heads pass python3 tools/check_conventions.py --base origin/main --head , using an isolated Git context with origin/main pinned to actual upstream
4f41f4c375f5abb487dbd184fbc150f31994d762. Reads has no findings; upper layers retain only the inherited SSL debt-length warning, zero errors. Whitespace checks against current upstream main pass. Fresh overlap scanning covers 1,724 open PRs and fails closed for uncomparable branches; selected source triage is not full overlap or combined-runtime clearance.The reported workflow-approval failure at the previous reads head b0b8c21 was not reproducible in GitHub: 29 successful / 3 cancelled / 1 skipped check runs, 19 completed success/cancelled suites, 19 upstream workflow runs with no approval-required/failing/pending run, no fork run, no legacy status context, and GraphQL rollup SUCCESS. The actual live blocker was DIRTY main integration on all four PRs; this refresh resolves the conflict while retaining both sides. No unspecified run was approved. Full builds still require collaborator/admin dispatch when not provided by CI; the previous explicit dispatch attempt returned HTTP 403/admin rights. Current-head successful CI evidence and its limits are recorded above; previous green checks remain tied to their old heads. These checks do not qualify the unresolved Windows 22621 hang or full macOS libkernel runtime.
Selected overlap updates: #9938 at db41fa3 already declares reads-first; caller-stack/exit-jump integration must retain I/O retirement before cleanup/TSD and native stack restoration, with no combined run claimed. #13390 at 3992904 adds independent host-log preservation around freopen; keep its declarations/calls with FILE-before-descriptor locking and both stream-close controls. #13730 at 9056177 remains separately owned; shared-provider extraction is retained via #9019, but no combined #13730 runtime pass is claimed. #13953 at 99b413e adds semaphore failure/post-success tests; #15219 at bf4f7b7 merges main into the setter follow-up. Their debt/registration additions supply no helper used by this stack. Other prior compared pins are unchanged; broader branches remain unqualified.
Overlap report updated 2026-11-03 17:18:12 UTC: all four compared PR heads are unchanged. Its uncomparable table adds #8497 at 096bf08 and #10749 at dae55d9. Their manual patch audit applies here: Signals.cpp is identical across these stack heads. Preserve pending-signal/code consumption under pending.lock, wait/notify and checked-copy ordering; retain RegisteredForJumps when removing only RegisterSignalsOnLoad for the siginterrupt provider move; retain I/O context/cancellation paths and both existing signal test targets. Neither supplies a helper required by reads; no import, new dependency, merge-order agreement or combined runtime pass is inferred. Depends on stays #12149, which remains open. There are still 76 uncomparable branches, so selected patch review is not full overlap clearance. #14085 is no longer listed; its earlier source audit does not establish it merged.
Historical sys-provider misplaced-wrapper and accept leak/late-disposal negative controls remain documented in the write follow-up and accept follow-up. The previous accept native Server 2025 job at selected db09379 merged onto a4eca2a passed 2,651 tests / 957 skipped; its 15 accept cases and one sigjump sample pass. Those results do not qualify this refresh or Windows 22621, exclude earlier setup leaks or identify the four handles in the older failed fixture. Historical runtime totals and contributor AMD reports remain tied to their original head/base/machine, not fresh qualification here.
The Windows 22621 intermittent hang remains unresolved. Windows 22621 diagnosis/validation, remaining stack checks, maintainer title-scene bench and admin-only ordered full-build validation remain outstanding. Review remains COMMENTED, not approval. No fresh title/console, GPU, full macOS libkernel runtime or paired same-scene trace_digest qualification is claimed. Unblocks: none is intentional; no title cancellation unblock is claimed.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)