Four T14 bench issues filed, and three standing ones corrected by the same readback - #462
Merged
Merged
Conversation
A read-only investigation into why the T14 does not come back after lancase-family boots (runs 36, 49, 52, 54, 55) turned up four things worth tracking, none of them explained by the tree under suspicion (6276fc8..4d604c8 is a no-op on the shipping boot but for two argv scans that return false, and run 36 hung on a tip that predates it entirely). `issues/build/a-hung-boots-log-partition-is-wiped-by-the-next-runs-flash.md` — `src/metal.rs`'s `flash` wipes and reflashes the stick at the *start* of every run, before that run's own `read_log` can run. A run that hangs never reaches `read_log` itself, and the next run's `flash` overwrites the partition before anything else does. No hung boot's own `/log` has ever been read as a result. `issues/kernel/eiac-and-ivar-are-msi-x-registers-on-an-msi-only-i219.md` — `toyos-i219` cites the 82574 datasheet throughout and writes `EIAC`/`IVAR` unconditionally in `open`, though the datasheet states `IVAR` is only valid in MSI-X mode. The T14's I219 has been measured (on a sibling branch, not yet in this tree) to be an MSI part, and separately, two runs on that branch show the write going through anyway — evidence only that some word landed where the driver looked, not that the register does anything documented. `issues/panic-path/no-watchdog-outlives-exitbootservices-and-a-hang-seals-nothing.md` — the firmware's own boot watchdog is disabled once `ExitBootServices` runs (the loader's own log line says so), and `halt_all_cpus` unconditionally disarms the kernel's own boot-progress deadline and hard-lockup NMI before it holds the panel — which are also the only two callers of the black-box `seal_wedge` path. A machine whose FADT names no reset register, or whose reset has never been observed to fire, is left with no bound on a panic at all and no record of one either. `issues/isolation/a-reboot-quiesces-xhci-and-leaves-a-claimed-i219-armed.md` — the reboot/shutdown path quiesces xHCI only; a claimed PCI function's own teardown (`pcidev::release`) is reached from exactly one place, a claim's `Drop`, which only runs when its holding process exits. `netd` never exits on a `lancase` boot, so the I219 warm-resets with bus mastering, MSI and both rings still armed. Every citation was verified with `sed -n`/`git show` against this worktree; where a fact was measured only on a sibling, unmerged branch, the finding says so and cites the commit rather than presenting it as merged. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
Japabu
marked this pull request as ready for review
September 14, 2026 21:37
`issues/panic-path/no-watchdog-outlives-exitbootservices-and-a-hang-seals-nothing.md` claimed the T14 has no bound past `ExitBootServices` that this tree has verified to fire. Measurement refutes it: the FADT reset register at 0xCF9 (`kernel/src/drivers/acpi.rs:282`), the 120 s boot deadline, and the 60 s hard-lockup NMI and panic-reboot bounds (`toyos_tco::PANIC_BOUND_MS`, `toyos-tco/src/lib.rs:122`) all exist, and in run 55/56 the deadline fired, the reset path ran, the black box sealed, and the next loader pass printed it — `t14-run56/lancase-repeat.log` line 26, "Black box: the record below is from the boot armed at 2026-09-14-205457", is that print. No citation of the file remained anywhere in the tree, so nothing else needs to move. That same black box is itself new evidence, and it says something the deleted file did not: the deadline fired 132859 ms past the 120000 ms bound it was armed with, while cpu0 spent the run's first several seconds deep in the xHCI mass-storage recovery loop (`lancase-repeat.log` line 28's "reached at 252859 ms", and lines 210-211's `Stopped, recovering` / `Set TR Dequeue timed out` two seconds apart). Filed as `issues/kernel/a-boot-deadline-of-120000-ms-fired-132859-ms-late-behind-an-xhci-storm-on-cpu0.md`. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
…g, and the reset graph is the tree's Round 2 of the review of this branch: every CODE finding upheld, and each answered in the file it was found in. `issues/build/a-hung-boots-log-partition-is-wiped-by-the-next-runs-flash.md` claimed no hung boot's partition had ever been read. Run 55's was: copied whole from `/dev/sda3` at 21:15:16Z, after its loop refused at 21:02:01Z and before run 56 flashed at 21:29:39Z. The copy held `loader.log` (the loader's first pass alone) and `attempts`, and no file logd wrote — that boot's ring tail carries `exit: logd pid=4 code=-1` at 3.471 s, so for the one hung partition ever captured the flash would have destroyed nothing logd wrote. The file now says what the tree shows: the loop's own sequence flashes (`src/metal.rs:1471`) before it reads (`:1489`, `:1496`), so a hung boot's partition survives only if something outside the loop read it first; and the loop cannot read a wedged stick at all — `read_log` and `raw_log` refuse (`:1131-1162`, `:1184-1190`) — so the remedy is a pre-flash save that records rather than refuses when the stick does not answer. Every citation is an exact line; the "-area" hedge is gone. The deadline issue is renamed to `issues/kernel/a-120000-ms-boot-deadline-fired-132859-ms-late-on-the-t14.md`. "Behind an xHCI storm on cpu0" was a cause the file's own census refutes: cpu4 took 215 timer interrupts in the 3.47 s in which cpu0 took 9, and `poll` runs on every CPU's timer entry. The census is quoted whole, both blocks. The hard-lockup bound armed off the same parameter at 60000 ms (`kernel/src/deadline.rs:182`, `toyos-tco/src/lib.rs:154-156`) was silent on the same boot, and the file says so. The instrument that measures this — `deadline_lateness_ms` (`src/metal.rs:1591`), priced at ceiling 10000 in `tests/metal-profile.toml:409-414` and judged in `tests/common/metal.rs:895-919` — is cited instead of a second one proposed: 132859 is 13x that ceiling on a boot (`lancase`) the profile does not name and this tree does not have. The record was run 55's boot's (armed 20:54:57Z, the unmerged `i219-delivery` at 4d604c8, whose deadline, hardlockup and acpi sources are byte-identical to this tree's), read by run 56's loader pass, which printed it and ended the chain without booting a kernel (`bootloader/src/main.rs:857-860`). Run 56 came back — to Ubuntu, after 100 s, having booted no kernel. `issues/kernel/a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it.md` is closed. Its exit condition was "a `loader.log` from a T14 boot that ran to its deadline, with the ring tail naming what the machine was doing when it stopped", and run 56's readback is that: the tail names the boot stick's READ(10) transport breaking at 3.47 s, logd and netd dying on faults over file bytes the device would not read, the test runner failing to load, and the disk going offline at 5.556 s, after which nothing was written until the expiry at 252.859 s. Its durable line — a deadline that fires is a machine on which some CPU took a timer interrupt — is already `deadline.rs:86-87`'s, so no header line is owed; what this record adds, that it can fire 133 s after the bound, is the successor's subject. Its one citation, in `issues/kernel/an-xhci-storm-starves-the-cpu-that-takes-it.md`, moves to the successor; no other pointer at the slug or the path exists in the tree. `issues/hardware/a-t14-boot-wedges-after-a-jobs-exit-and-nothing-said-why.md` waits for a record of a different shape and is not closed by this one; the successor cites it and says why. The tree-checkable defect the deadline file obscured is filed on its own: `issues/kernel/the-deadline-header-promises-any-interrupt-and-only-the-timer-entry-polls.md`. `deadline.rs:11-13` says "some CPU still takes an interrupt"; `poll`'s two call sites are the timer entry's (`kernel/src/arch/idt/timer.rs:71,96`) and `:185-186` says so; `hardlockup/mod.rs:4-5` repeats the wide claim. Filed, not fixed: this branch touches `issues/` only. `issues/kernel/eiac-and-ivar-are-msi-x-registers-on-an-msi-only-i219.md` is folded into `issues/kernel/a-claimed-function-must-have-msi-x-and-the-i219-may-not.md` and deleted: that finding already carried the claim, the §10.2.4.9 argument and an exit condition asking for exactly the mode reading the new file supplied. This is that finding's next review, so it is promoted to a defect and assigned to PR #442 (`lan-metal`), whose `pcidev` arms MSI where MSI-X is absent. The fold keeps IVAR only — nothing cited says EIAC is MSI-X-only — quotes `toyos-i219/src/lib.rs:496-503` whole, comment included, and says in so many words that the write is unreachable in this tree (`kernel/src/pcidev/mod.rs:544` refuses the function before `open` runs) and that runs 42 and 51, which armed MSI, were of unmerged branches (tips 4204e09 and 6276fc8, both carrying the same write and readback). The "citation policy violated" paragraph is dropped: both offsets are in the datasheet, and the policy is about the number. `issues/isolation/a-reboot-quiesces-xhci-and-leaves-a-claimed-i219-armed.md` is renamed to `issues/isolation/a-reset-stops-xhci-and-leaves-every-claimed-pci-function-armed.md` and rewritten around the call graph the tree has: `deadline::expire` (`deadline.rs:224`) and `hardlockup::locked_up` (`hardlockup/mod.rs:326`) call `acpi::reset_now` directly, and `panic_reboot::reboot_now` reaches `acpi::reboot` without `quiesce` — five paths, not two. The claim that the function's armed state survives the 0xCF9 write is stated as unmeasured, with what would measure it, and nothing rests on it. The general defect is this tree's today: `netd` holds a virtio-net function (`system.toml:70-72`) and nothing between `SYS_REBOOT` and the port write asks it to let go. The I219 is the instance the tree reaches when PR #442 lands — `lancase` is that branch's — and on run 55's boot the function had already been released by netd's death before the reset. Every number in the issue files is quoted from the bench transcripts into the file itself; the private paths those transcripts live under are cited nowhere. Every file:line was read in this worktree with `sed -n`. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
…ement, quote the MSI-X reading that bears on :544, and restore the ccorpus hang Round 3 of the review of this branch. The `irq: cpu0 total=103171 timer=10 xhci=103161` census in `a-120000-ms-boot-deadline-fired-132859-ms-late-on-the-t14.md` traced to no run: `t14-run20/metaldevicecase.log:401` carries it, whose transcript line 1 reads `boot=metaldevicecase tip=f46f91eb`, and `t14-run25-metal.log` has no such line. Both this file and the pre-existing `an-xhci-storm-starves-the-cpu-that-takes-it.md`, which the new file cites, called it run 25's; both now attribute it to run 20's `metaldevicecase` boot at tip `f46f91eb` and quote the log line whole instead of citing a private path. `the-deadline-header-promises-any-interrupt-and-only-the-timer-entry-polls.md` called `:96` `timer_handler`'s first statement. `sed -n 90,98p kernel/src/arch/idt/timer.rs` shows the function opens at `:92`, its first statement is `crate::irq_census::irq_took!(Timer);` at `:93`, and `crate::deadline::poll()` at `:96` is the second. `a-claimed-function-must-have-msi-x-and-the-i219-may-not.md` read Ubuntu's `mode=msi` as evidence the I219 lacks MSI-X, but the file's own paragraph above says `e1000e` never sets `FLAG_HAS_MSIX` for this family, so Linux picks MSI whether or not the capability exists — the reading is a delivery mode, not a capability read. The line that does bear on `pcidev/mod.rs:544` is quoted instead: `git show 0a5717f:issues/hardware/the-t14-answers-only- through-a-usb-stick.md` line 63, "`pcidev` armed MSI-X alone and refused it" — a reading against this kernel's own `enable_msix`. The same file's exit condition has two halves — PR #442's MSI arm landing, and the bench measurement of the IVAR write in MSI mode — and PR #442 holds only the first; nobody holds the second. `status: assigned` over-reported what is held, so it is `open`, with the body now saying which half #442 holds and which half is unclaimed. `a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it.md` was closed on run 56's readback of run 55's `lancase` boot, but run 55 ran no job list at all (its tail records `spawn: /system/bin/test-runner: ELF: fewer bytes than a file header`) — its subject is a storage transport dying, not a job list hanging with interrupts on, so the file's exit condition — a `loader.log` from a boot of the tracked shape — is still unmet. It was `kind: defect`, not `kind: finding`, so the finding-folding rule does not reach it; restored, per the branch's choice, rather than handing the successor file a second exit condition. Its `ccorpus` evidence (118 C cases, 187 s) is unchanged; a line naming why run 55 does not close it is added. PR body: `rg -n 'pcidev::release' kernel/src` prints one line (`kernel/src/device.rs:75`) and not a definition — `pub fn release(slot: usize)` does not contain the string `pcidev::release`, since it is written from inside the module it defines. The body now states the command's real output and the definition's location separately. "The sealed census is quoted whole; it refutes any cause on cpu0" is replaced with the issue file's own sentence, "cpu0's state explains nothing about the bound" — the census is a 3.47 s/3.479 s snapshot 249 s before the expiry and cannot speak for the 249 s after it. Title changed to name what the merge does instead of calling it four findings, when none of the four added files is `kind: finding`. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
Japabu
enabled auto-merge
September 18, 2026 14:50
github-merge-queue
Bot
removed this pull request from the merge queue due to no response for status checks
Sep 18, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Sep 21, 2026
Japabu
enabled auto-merge
September 21, 2026 15:42
Japabu
added a commit
that referenced
this pull request
Sep 21, 2026
main's #462 rewrote issues/kernel/a-claimed-function-must-have-msi-x-and-the-i219-may-not.md while this branch deletes it, because this branch is the first half of its exit condition: pcidev arms MSI where a function has no MSI-X. Every hunk of main's side is accounted for: - kind finding -> defect, the `:544` citation, and the paragraphs saying this tree refuses the I219 at `:544`: made false by this branch, gone with the file. - the bench reading that the part took the IVAR write on MSI-arming boots, and the second half of the exit condition: carried into issues/hardware/toyos-i219-refuses-a-part-outside-msi-x-mode-at-ivar.md, which owns the IVAR question. - the one citation of the deleted file, which arrived with #462 in issues/isolation/a-reset-stops-xhci-and-leaves-every-claimed-pci-function-armed.md, is removed with the sentence this branch makes false. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
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.
What this changes
issues/only; no code. What the branch as a whole does to the tracker, after the round-1 review's findings were answered in the files they were found in:issues/build/a-hung-boots-log-partition-is-wiped-by-the-next-runs-flash.md(kind: tooling):src/metal.rs's loop flashes (:1000-1002, called at:1471) before it reads (read_logat:1489,raw_logat:1496), so a hung boot's partition survives only if something outside the loop read it between two invocations; and the loop cannot read a wedged stick at all (read_logandraw_logrefuse,:1131-1162,:1184-1190). Run 55's partition was read from outside the loop before run 56 flashed over it, and held no filelogdwrote. Exit condition: a pre-flash save that records, not refuses, when the stick does not answer.issues/kernel/a-120000-ms-boot-deadline-fired-132859-ms-late-on-the-t14.md(kind: defect): run 55's boot, armedboot-deadline=120000, expired at 252859 ms; the 60000 ms hard-lockup bound armed off the same parameter (kernel/src/deadline.rs:182,toyos-tco/src/lib.rs:154-156) was silent on the same boot. The sealed census is quoted whole; cpu0's state explains nothing about the bound (cpu4 took 215 timer interrupts in the 3.47 s cpu0 took 9). The instrument that measures the lateness exists —deadline_lateness_ms(src/metal.rs:1591), priced at ceiling 10000 intests/metal-profile.toml:409-414, judged intests/common/metal.rs:895-919— and 132859 is 13x that ceiling on a boot the profile does not name. The record was read by run 56's loader pass, which printed it and ended the chain without booting a kernel (bootloader/src/main.rs:857-860).issues/kernel/the-deadline-header-promises-any-interrupt-and-only-the-timer-entry-polls.md(kind: defect):kernel/src/deadline.rs:11-13claims "some CPU still takes an interrupt" keeps the bound alive;poll's only call sites are the timer entry's (kernel/src/arch/idt/timer.rs:71,79,96) and:185-186says so. Filed, not fixed.issues/isolation/a-reset-stops-xhci-and-leaves-every-claimed-pci-function-armed.md(kind: defect): five paths reach the two register writes —sys_rebootandsys_shutdownthroughquiesce,deadline::expire(deadline.rs:224) andhardlockup::locked_up(hardlockup/mod.rs:326) straight toacpi::reset_now,panic_reboot::reboot_nowtoacpi::reboot— and none tears down a live process's PCI function;pcidev::release's one caller isClaim'sDrop(kernel/src/device.rs:75). True today fornetd's virtio-net function (system.toml:70-72); the I219 is the instance this tree reaches when PR The cable: netd takes its address from the network, and the T14 answers a ping on it #442 lands. What the 0xCF9 write does to the function is stated as unmeasured, with what would measure it.issues/kernel/a-claimed-function-must-have-msi-x-and-the-i219-may-not.mdfromfindingtodefect,status: assignedto PR The cable: netd takes its address from the network, and the T14 answers a ping on it #442 (lan-metal, whosepcidevarms MSI where MSI-X is absent), and folds into it the I219's measured interrupt mode (mode=msi, recorded on that branch atgit show 0a5717f5:issues/hardware/the-t14-answers-only-through-a-usb-stick.mdlines 61-63), theIVARwrite and readback quoted whole fromtoyos-i219/src/lib.rs:496-503, the fact that the write is unreachable in this tree (kernel/src/pcidev/mod.rs:544refuses the function beforeopenruns), and that the boots which armed MSI (runs 42 and 51, tips4204e090and6276fc87) were of unmerged branches. IVAR only; nothing cited says EIAC is MSI-X-only.issues/kernel/a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it.md: its exit condition was aloader.logfrom a T14 boot that ran to its deadline with the ring tail naming what the machine was doing, and run 56's readback is that. Its one citation, inissues/kernel/an-xhci-storm-starves-the-cpu-that-takes-it.md, moves to the deadline file.issues/kernel/eiac-and-ivar-are-msi-x-registers-on-an-msi-only-i219.md(folded, above) andissues/panic-path/no-watchdog-outlives-exitbootservices-and-a-hang-seals-nothing.md, both filed on earlier pushes of this branch and never onmain. The panic-path file claimed a fatal event reachingapic::halt_all_cpusdisarms both kernel bounds and reaches no black-box seal, so that nothing pastExitBootServicesis timed by a bound this tree has verified to fire and no hung boot's record has ever been captured. Refuted twice: in the tree, the black box's own contract (kernel/src/blackbox.rs:5-7) is that the panic path seals what the panel rendered,record_panic, called atkernel/src/drivers/panic_console/mod.rs:582; and on the machine, run 55's boot — adeadline::expirewedge, which never reacheshalt_all_cpus— sealed aWEDGEDrecord that the next loader pass printed, the record the deadline file quotes.Why
The round-1 review (verdict SEND BACK) found, and the orchestrator upheld: the build file asserted no hung partition had ever been read when run 55's had been, and proposed a pre-flash
read_logthat refuses on exactly the wedged stick it would be for; the deadline file's slug named a cause its own census refutes, omitted the silent hard-lockup bound, proposed an instrument that exists, and cited neither of the two files already on the subject; the EIAC/IVAR file duplicated an openfindingwithout citing it, asserted EIAC's mode without a source, and never said the scenario is unreachable in this tree; the isolation file's "every reset goes throughacpi::reboot/acpi::shutdown" is false in the tree and its load-bearing claim about the function surviving the reset was unmeasured; and the PR body's numbers pointed at files no reader of the tree can open.Evidence
Every number in the issue files is quoted from the bench transcripts into the file itself — run 55's loop refusal at 21:02:01Z and the copied partition's
loader.logline 20 (Black box: 0x8000000 armed at 2026-09-14-205457 …); run 56's transcript line 1 and its loader pass (the boot deadline expired: a bound of 120000 ms, reached at 252859 ms, with this machine in \complete`.), theirq:` census whole, and the tail's last records; runs 42 and 51's hand-over records. The transcripts live under the orchestrator's job directory, which no reader of the tree can open, so no path there is a citation.tests/metal-profile.toml:412).git diff --stat 4d604c86 HEAD -- kernel/src/deadline.rs kernel/src/hardlockup/mod.rs kernel/src/drivers/acpi.rs→ empty: the branch run 55 booted matches this tree on the files the deadline issue cites.git branch -a --contains 4d604c86→i219-deliveryonly.git grep -n 'regs::IVAR' 4204e090 6276fc87 -- toyos-i219/src/lib.rs→ both tips carry the write and readback at:502-503;git branch -a --containson either tip →bar-placement,i219-delivery,i219-phy, nevermain.git grep -l lancase origin/lan-metal→src/lan.rs,tests/toyos.rs,tests/metal-profile.tomland five more;git grep -n lancase HEAD→ only the issue files.rg -n 'deadline::poll' kernel/src→kernel/src/arch/idt/timer.rs:79and:96only.rg -n 'pcidev::release' kernel/src→ one line, the caller atkernel/src/device.rs:75; the definition,pub fn release(slot: usize), is atkernel/src/pcidev/mod.rs:782.file:linein the six changed issue files was read in this worktree at2a8cb4e7withsed -n.Gates
cargo test --lib(this worktree,2a8cb4e7)git grep --cached -nfor the five deleted or renamed slugs (a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it,eiac-and-ivar-are-msi-x-registers-on-an-msi-only-i219,a-boot-deadline-of-120000-ms-fired-132859-ms-late-behind-an-xhci-storm-on-cpu0,a-reboot-quiesces-xhci-and-leaves-a-claimed-i219-armed,no-watchdog-outlives-exitbootservices-and-a-hang-seals-nothing)rg -n --hidden -g '!.git'for the same fiverg -n -- '-area'over the six changed issue filesissues/*/*.md(the README's value sets, its status/kind pairing table, the date form)issues/<area>/<slug>.mdthe six changed files cite, tested with[ -f ]cargo test --workspace --exclude toyos-buildissues/src/rg -n -i 'frontmatter' --glob '!issues/**' .is empty; the tree-side readers ofissues/paths aresrc/redlist.rs'ssource:rows andsrc/tiers.rs, and none names a file this branch movesAnything a reader of
mainmust not mississues/kernel/a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it.md. Its durable line — a deadline that fires is a machine on which some CPU took a timer interrupt — is alreadykernel/src/deadline.rs:86-87's, so no header line is owed.issues/kernel/a-claimed-function-must-have-msi-x-and-the-i219-may-not.mdis nowkind: defect,status: assignedto PR The cable: netd takes its address from the network, and the T14 answers a ping on it #442.issues/hardware/a-t14-boot-wedges-after-a-jobs-exit-and-nothing-said-why.mdis not closed: its exit condition is aWEDGEDrecord of a different shape, and the deadline file says why.kernel/src/arch/syscall/machine.rs:97,kernel/src/drivers/xhci/stop.rs:449andissues/kernel/quiesce-runs-while-userland-still-does-io.mdeach say every reset goes throughacpi::reboot/acpi::shutdown, anddeadline.rs:224andhardlockup/mod.rs:326reachreset_nowdirectly. The isolation file states the true graph beside them.🤖 Generated with Claude Code
https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK