Repository navigation
issues: audit batch 0 against 6f4d8dbdb - #981
Conversation
Review r1: PR #981, head
|
Personal paths must not be in committed files. The three records outside batch 0 that carried one keep their meaning: the actuator-gate record's worktree name, which is its whole point, stays as `<parent>/toyos-heartbeat`; the mutual-kill panic's path keeps the checkout and file; the no-log boot's stick log is named without its scratch location. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A one-off accuracy audit of 117 open defect records (batch 0 of 4). Each claim was checked against origin/main at 6f4d8db and the owner's uncommitted planning in the primary checkout, then brought onto db0cf63 (#971, #978, #980) and the records whose cited code #971 removed checked again there. The per-record classification, with file:line evidence, is in the PR. Deleted as fixed. For each, which halves of the exit were met, and which were judged unnecessary and why: - a-file-server-killed-mid-sync-leaves-a-half-written-btree: met whole. 3adcf42 made DATA's commit shadow paging, the superblock written last after a flush, and its host test, lib/bcachefs/tests/crash.rs, stops a commit at every block write, torn sectors and a lost block 0 included, and mounts what is left: the exit's own test. The residual defects are owned by a-write-over-a-files-committed-page-is-not-shadowed and a-crash-leaks-the-blocks-of-its-last-commit. - a-long-name-entry-whose-write-was-refused-is-on-the-volume-and-the-create-erases-nothing: the QEMU half is met by a cheaper test, the T14 half judged unnecessary. 0d73b99 removed erase_inserted; write_entry_at queues the old bytes as a repair before every write, so an entry write refused after it landed is written back. lib/fat32/tests/refused_writes.rs models the device the exit asked QEMU to stage, a write that lands and is answered with an error, as a host test: `cargo test -p toyos-fat32 --test refused_writes every_refused_write_of_a_long_name_create_is_undone` exit 0 at 6f4d8db, 24 refused and landed cases on the record's own file name, each checked by toyos-fat32-check. The T14 fat check of a usb-transport-break boot was not run: the mechanism is the crate's and the host model reaches every write, and since #971 that actuator no longer exists, so the arm cannot be staged. - a-replacement-netstack-reuses-its-predecessors-ports: met. Since 4b96de0 netstack runs ToyOS's own stack, whose TCP ephemeral ports are RFC 6056 keyed draws from keys each process takes from the system's randomness, the remedy the record named; NetDaemon's fixed 49152 is gone. Its citation in netstack-ends-for-the-boot-on-a-nic-it-cannot-drive-on.md goes with it. - a-disk-whose-port-went-away-panics-the-boot-at-roots-hold was fixed by 602cff0: its exit's code half is met, and its "green on a nightly" half by that commit's three local `--nightly` runs of usb_transport_break with a reverted negative control, not by a CI nightly. #971 deleted the record on main first, so this change no longer carries the deletion. Deleted as superseded: - a-deliberate-wedge-inside-a-driver-panics-every-other-cpu-that-wants-its-lock: the usb-wedge-* actuators it was about went in 29e1006, and 13ed7b4 (#971) took the kernel's USB driver out and its restoration out of stage E of the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md. The one staged wedge left, wedge-before-reset, holds no lock when it stops. Corrected where the text no longer matched the code, the defect kept: renamed programs (init, netd, logd, fsd, soundd), moved functions and files, line numbers that drifted, guest tests cut since, citations of deleted files, and statements the tree refutes (the console's blocking read, the DMA address window's arithmetic, the mio half of the TCP_NODELAY record, the firmware-call record's account of when AML writes first reached the kernel, d2006cc, and its widening, 15536e2). On the new base the console-watch and disk-offline records are main's text, the console's carrying the residual correction to its blocking read; held-disk, the NVMe boot wait and reset-stops-xHCI are main's deletions, and the job-list record's citation of the kernel's xHCI stop now names pcidev::stop_before_reset. Left untouched because the owner's uncommitted planning edits them: a-driver-that-reflashes-its-device-escapes-its-isolation, a-file-held-across-a-file-servers-restart-answers-gone, a-machine-without-an-iommu-refuses-every-claim, and a-memory-overwrite-request-ubuntu-left-set-stays-set-under-toyos, which the owner deleted locally as superseded (claude-questions.md, item 12) together with its citation in the loader-wipe issue. Also removes a home-directory path from a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
f22dc14 to
bb81e19
Compare
Review r2: PR #981, head
|
#978 (the descriptor table) and this PR both edited a-stream-cannot-move-between-processes. The merged text is this PR's account of the refusals stage 3 landed, written in #978's descriptor terms: the spawn refusal now runs through `toyos::fd::copy` and `sdk/std/sys/pal/mod.rs`. #978 also changed std's panic for a served file's raw fd to "has no descriptor", so a-served-file-panics-when-asked-its-raw-fd quotes it and asks for a descriptor. Batch 0 (#981) edited no record this PR touches. The remaining #978-adjacent citations hold at a8ea09d: the kernel's `SYS_SPAWN` argv filter, the supervisor's `serve_launch` filter, test-runner's `SysCap::duplicate` endowment, libc's `open` through `syscall::open`, and fds 1 and 2 through `toyos::log::stdio`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A one-off accuracy audit of 117 open defect records. Each was read against the code it cites at origin/main db0cf63, with the owner's uncommitted requirements/ and claude-questions.md beside it. After rebasing onto a8ea09d (#978, #981), each record whose cited code #978 changed was read again. Deleted, fixed: - netstack-watches-both-pipes-of-every-connection-on-every-pass: c91e72b gave a pipe end's leaving its own watch (kernel/src/pipe.rs) and made netstack submit only a changed or answered watch (watches.rs `Armed`). The commit named the record and left it. - shell-c-discards-the-cwd-its-launch-carried: `shell -c` runs in its launch's directory since b3770cf. - std-answers-every-spawn-refusal-but-notfound-as-other: std's spawn maps each refusal by name, and every SyscallError through to_io_error, since 61a283a. Deleted, superseded (the subject's code or test no longer exists): - os-toyos-io-traits-keep-a-posix-name: #978 makes a RawFd a number in the process's one descriptor table, as on unix, and gives the kernel handle its own word, std::os::toyos::io::AsRawHandle. - kernel_stack_addr-names-an-offset-not-an-address: #583 merged without the rename; the rename is a step of the-loader-does-only-what-must-precede-the-handover.md. - log-flush-retry-deadman-arm: the kernel's fsync deadman went with the durability ledger (80a1f1c), its kernel USB with usbd (13ed7b4), and the test with 9ebf080. - metal-device-probe-usbread-answered-iofailed-once-beside-other-guests: one sighting through the kernel's usb-storage, gone with 13ed7b4; test deleted 24aa318. - netstack-refused-accept-hung-waiting-for-a-wake-that-never-came: netd and its listen.rs are gone, the test was deleted (7967fba), and so is netcase_against_host. - process-stats-exits-101-beside-other-guests: both recorded reds were the test's own premise; the test is deleted (4a5b228). - screen-diag-boot-leaves-no-i8042-line-on-the-panel: the kernel's i8042 and its health line left for ps2server (febfd21); test deleted. Corrected and kept, each with what remains: - io-uring-enter-trips-the-one-queue-invariant becomes a-wait-was-registered-while-its-task-still-read-waiting: the assertion is now Watch::register's; every recorded route is gone; the cause never was found. - libc-loses-the-kernels-word-on-three-write-paths becomes ...-two-...: send's stream arm answers through stream_errno; sendto's datagram arm and stdio's sys_write still drop the kernel's word. - logkeeper-flushes-the-records-its-own-refused-flush-made becomes logkeeper-flushes-the-records-its-own-flush-made: the measured kernel retry is gone; whether any flush now makes records is unmeasured. - std-calls-undated-what-it-did-not-stat becomes std-set-times-answers-ok-and-sets-nothing: the mtime half is fixed. - remove-dir-all-empties-a-directory-and-leaves-it: std's is fixed; pkg's remove_tree still gives that as its reason. - netstack-holds-a-pending-request-for-a-client-that-left: the connect half is gone; the waiting receive is still unwatched. - netstack-keeps-receiving-for-a-client-that-closed-its-receive-end, netstack-socket-ids-are-ambient, netstack-lookup-slots-have-no-per-client-share, netstacks-places-are-one-number-for-every-client, most-t14-leases-land-one-dhcp-retry-late: restated for regions, badges and netstack. - smp-ap-hole-and-log-reserve-window-red-under-a-loaded-host: the ROOT read half is gone; the first spawn's WouldBlock is kept. - soundserver-past-due-wake-max-1: only the null sink's wait still does it. - std-says-a-launch-moves-its-handles-...: the std comment moved into toyos::spawn, where it is right; provide's doc is still wrong. - std-maps-a-device-error-to-other-not-uncategorized: the consumers that kept Other load-bearing are gone. - sharedmemory-slices-rest-on-a-size-nobody-checks: a peer's region maps through `lent`, which checks it; `adopt` does not. - sshserver-authorized-keys-unprotected: installed packages no longer see /state; every shipped program still does. - libc-munmap-refuses-part-of-a-mapping: the owner's 2026-10-21 memory checkpoint revises the refusal, so the "rule it final" exit goes. - libc-refuses-what-toyos-cannot-yet-answer: after #978 F_DUPFD_CLOEXEC, F_DUPFD's lowest free and F_GETFD's EBADF hold; the fcntl bullet keeps record locks and F_GETFL, F_SETFL, F_GETOWN, F_SETOWN. - Sites, names and paths moved for: kernel-text-is-writable..., libc-answers-einval..., libc-answers-epipe..., libc-host-tests..., listing-home..., logkeeper-ends..., map-mmio..., metalprobes-usb-read..., mio-deregister..., no-console..., one-diskserver-session..., one-write-far-past..., probe-mounts-on-a-checksum, sshserver-holds-one-channel..., sshserver-still-speaks-rsa, std-lookup-host..., null-sink-applies-one-connect (annotated, not re-seen). parallel-tests-red-under-other-suites.md loses its pointer to a deleted record. no-physical-memory-fairness is owner-held and untouched; 58 records are still valid and 9 uncertain, both unchanged; four were already deleted on main (#971, #980, #978). The per-record table with file and line evidence is in the pull request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A one-off accuracy audit of 117 open defect records. Each was read against the code it cites at origin/main db0cf63, with the owner's uncommitted requirements/ and claude-questions.md beside it. After rebasing onto a8ea09d (#978, #981), each record whose cited code #978 changed was read again. Deleted, fixed: - netstack-watches-both-pipes-of-every-connection-on-every-pass: c91e72b gave a pipe end's leaving its own watch (kernel/src/pipe.rs) and made netstack submit only a changed or answered watch (watches.rs `Armed`). The commit named the record and left it. - shell-c-discards-the-cwd-its-launch-carried: `shell -c` runs in its launch's directory since b3770cf. - std-answers-every-spawn-refusal-but-notfound-as-other: std's spawn maps each refusal by name, and every SyscallError through to_io_error, since 61a283a. Deleted, superseded: - kernel_stack_addr-names-an-offset-not-an-address: the field is still `kernel_stack_addr` (sdk/abi/src/boot.rs:9), and #583, its named owner, merged without the rename. The rename is a stated step of the-loader-does-only-what-must-precede-the-handover.md, which carries it. - os-toyos-io-traits-keep-a-posix-name: the traits still exist, and now name a real descriptor. The owner's 2026-10-21 answers supersede the 2026-08-19 "fds belong only in libc jargon" ruling (64f806d) the record rested on: keep C numbering and dup2 conventions in userland, including Rust/C descriptor interoperability; Rust std's C-style descriptor interoperation uses the same userland adaptation; one descriptor-inheritance rule honored by both libc spawning and Rust Command. #978 implements that, and the kernel handle has its own word, std::os::toyos::io::AsRawHandle. - logkeeper-flushes-the-records-its-own-refused-flush-made: the measured loop was the kernel's retry of a budget-refused fsync, whose four records made logd's next round flush again. That retry and its records went with the durability ledger (80a1f1c) and the kernel's USB storage (13ed7b4). logkeeper ends its volume on a refused append or flush (system/logkeeper/src/main.rs:625-632) and warns of a slow round once, behind its `degraded` latch (:633-643); the file server logs only an operation that failed (system/fileserver/src/data.rs:136, 461), and a failed flush ends the volume. No current route is known. The rest have code or a test that no longer exists: - log-flush-retry-deadman-arm: the kernel's fsync deadman went with the durability ledger (80a1f1c), its kernel USB with usbd (13ed7b4), and the test with 9ebf080. - metal-device-probe-usbread-answered-iofailed-once-beside-other-guests: one sighting through the kernel's usb-storage, gone with 13ed7b4; test deleted 24aa318. - netstack-refused-accept-hung-waiting-for-a-wake-that-never-came: netd and its listen.rs are gone, the test was deleted (7967fba), and so is netcase_against_host. - process-stats-exits-101-beside-other-guests: both recorded reds were the test's own premise; the test is deleted (4a5b228). - screen-diag-boot-leaves-no-i8042-line-on-the-panel: the kernel's i8042 and its health line left for ps2server (febfd21); test deleted. Corrected and kept, each with what remains: - io-uring-enter-trips-the-one-queue-invariant becomes a-wait-was-registered-while-its-task-still-read-waiting: the assertion is now Watch::register's; every recorded route is gone; the cause never was found. - libc-loses-the-kernels-word-on-three-write-paths becomes ...-two-...: send's stream arm answers through stream_errno; sendto's datagram arm and stdio's sys_write and sys_read still drop the kernel's word. - std-calls-undated-what-it-did-not-stat becomes std-set-times-answers-ok-and-sets-nothing: the mtime half is fixed. - remove-dir-all-empties-a-directory-and-leaves-it: std's is fixed; pkg's remove_tree still gives that as its reason. - netstack-holds-a-pending-request-for-a-client-that-left: the connect half is gone; the waiting receive is still unwatched. - netstack-keeps-receiving-for-a-client-that-closed-its-receive-end, netstack-socket-ids-are-ambient, netstack-lookup-slots-have-no-per-client-share, netstacks-places-are-one-number-for-every-client, most-t14-leases-land-one-dhcp-retry-late: restated for regions, badges and netstack. - smp-ap-hole-and-log-reserve-window-red-under-a-loaded-host: the ROOT read half is gone; the first spawn's WouldBlock is kept. - soundserver-past-due-wake-max-1: only the null sink's wait still does it. - std-says-a-launch-moves-its-handles-...: the std comment moved into toyos::spawn, where it is right; provide's doc is still wrong. - std-maps-a-device-error-to-other-not-uncategorized: the consumers that kept Other load-bearing are gone. - sharedmemory-slices-rest-on-a-size-nobody-checks: a peer's region maps through `lent`, which checks it; `adopt` does not. - sshserver-authorized-keys-unprotected: installed packages no longer see /state; every shipped program still does. - libc-munmap-refuses-part-of-a-mapping: the owner ruled on 2026-10-21 that whole-mapping-only unmap is not the final contract and the refusal is to be revised, so the "rule it final" exit goes. - libc-refuses-what-toyos-cannot-yet-answer: after #978 F_DUPFD_CLOEXEC, F_DUPFD's lowest free and F_GETFD's EBADF hold; the fcntl bullet keeps record locks and F_GETFL, F_SETFL, F_GETOWN, F_SETOWN. - Sites, names and paths moved for: kernel-text-is-writable..., libc-answers-einval..., libc-answers-epipe..., libc-host-tests..., listing-home..., logkeeper-ends..., map-mmio..., metalprobes-usb-read..., mio-deregister..., no-console..., one-diskserver-session..., one-write-far-past..., probe-mounts-on-a-checksum, sshserver-holds-one-channel..., sshserver-still-speaks-rsa, std-lookup-host..., null-sink-applies-one-connect (annotated, not re-seen). parallel-tests-red-under-other-suites.md loses its pointer to a deleted record. no-physical-memory-fairness is owner-held and untouched; 58 records are still valid and 9 uncertain (stdio-buffering's deleted-file citation now names its deleting commit), both unchanged; four were already deleted on main (#971, #980, #978). The per-record table with file and line evidence is in the pull request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each open defect record of batch 3 was checked against origin/main at db0cf63, and every record whose cited code changed up to a8ea09d (#978's descriptor table, #981) was read again there. Seven of the batch were already deleted by 13ed7b4, and tearing-is-what-gop-cannot-give-back carries uncommitted owner edits, so it is untouched. Deleted as fixed, each exit met: - the-ack-delay-abi-doc-names-one-cpu: debug_action::TLB_ACK_DELAY_ARM's doc names each other CPU in turn, the smallest wait answered and the two-second window, as kernel/src/arch/x86_64/tlb.rs does. - the-running-slots-volume-is-claimable: 13ed7b4 deleted the kernel's USB storage path; the kernel serves no partition claim (Claimed holds a class, a PCI function, an ISA row or the ACPI row) and hold_source is gone. What remains, the block service not refusing the running ROOT, is issues/the-block-service-does-not-refuse-the-running-root.md, rejected. - the-sysroots-core-and-alloc-carry-the-compiler-profiles-debug-assertions: 5f73215 set debug-assertions-std = false on its own line in std_config and re-ran the link-time no-panic proof against the built sysroot. - thread-exits-completion-post-is-the-second-one: fa1e325 deleted publish_released, so process::thread_exit's post is the only one. - the-socket2-forks-ownedfd-holds-a-table-key-not-a-handle: #978 gave the process one descriptor table, and socket2 at 2aa6b00, which the lock now pins, installs each socket as a descriptor in it and releases the socket when the last descriptor goes; std's OwnedFd closes through toyos::fd::close. The number OwnedFd holds is the socket's descriptor. Deleted as superseded: - t14-keyboard-will-not-report-its-scancode-set: ps2server (#899) replaced the kernel driver; its probe resets the keyboard with translation on, asks no scancode set and has no firmware-bit fallback, and names undecoded runs. The T14 passed ps2server_arms at a42489c. - the-memory-map-buffer-is-the-unreported-pointer: the framebuffer lies in the boot map's scanout regions now, and the margin is MAP_MARGIN, 64. The memory map's report and the T14 reading it needs are folded into the-boot-map-reaches-4-gib-and-firmware-decides-what-lands-in-it, whose exit already asked for the report. - the-supervisors-claim-of-a-pci-function-the-t14-lacks-holds-preemption- off-for-3-8-ms: #926 removed the measured claim path, as the record itself said. The preemption-off windows it read are syscall-preemption-is-incidental's, whose 131 us mask_windows bound on the T14 covers the inventory read that replaced the claim. - watch-window-spins-out-a-hold-its-poster-is-queued-behind: dc62efc deleted the hold with its actuator. Its one durable fact, that the hold returns with git revert dc62efc, moves into the reference in a-wake-to-a-busy-cpu-waits-for-its-next-pass-and-no-idle-cpu-can-take-it. Renamed, the old slug refuted, no inbound reference: - the-panel-seeds-the-loaders-own-file-so-the-gcd-map-is-logged-nowhere -> the-gcd-maps-held-mmio-descriptors-are-logged-nowhere: the console seeds from logkeeper's stream, not /log's files. - the-kernel-depends-on-toyos-fat32-and-uses-none-of-it -> three-comments-say-the-kernel-uses-toyos-fat32: 13ed7b4 removed the dependency; three comments remain. - two-std-maps-still-answer-other-for-a-dead-peer -> std-net-maps-every-other-syscall-error-to-other: TcpStream moved to toyos::net::stream; one map remains, on UdpSocket and the listener. Corrected and kept, each residual defect stated: suite-rows (a guest binary deleted), t14-desktop-froze-at-64s (the drop line's wording), t14-lost-every-integrated-input (ps2server's counters and decoder test), the-t14-mouse-may-be-another-defect (usbd's HID path, no T14 reading), t14-rows (Bench::blocks), test-runner-holds-logread (metalcase alone), the EC record (mediated access, WR_EC for AML), the compiler workspace's toyos-abi lock, the compositor's unknown message, the deadline header's call sites, the pipe lock (user_ptr pins runs; names and lines), the boot map's report_reach list, the VFS's function name, the black box's foreign-record test, the power-off seal (kernel xHCI gone), the copy-out test, the reset word, both shell records, the shared-object cache's exit, the SSH key exchange (toyos-crypto has ML-KEM-768 and its NIST answers), the roster readers, toyos-dns, toybox's row (power is a connector), the click fold, the I219 hang, the lendable region, x2APIC's declaration, the volatile composite site and the file-size ledger. The SO_BROADCAST record's pin is 2aa6b00, where the setter is still a no-op. Inbound references fixed in the-t14-touchpad-is-i2c-hid-and-unbuilt, a-shared-boot-stopped-answering-and-no-capture-says-why, the-diary-computes-no-lateness-and-records-no-slow-system-call and a-wake-to-a-busy-cpu-waits-for-its-next-pass-and-no-idle-cpu-can-take-it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each open defect record of batch 3 was checked against origin/main at db0cf63, and every record whose cited code changed up to a8ea09d (#978's descriptor table, #981) was read again there. Seven of the batch were already deleted by 13ed7b4, and tearing-is-what-gop-cannot-give-back carries uncommitted owner edits, so it is untouched. Deleted as fixed, each exit met: - the-ack-delay-abi-doc-names-one-cpu: debug_action::TLB_ACK_DELAY_ARM's doc names each other CPU in turn, the smallest wait answered and the two-second window, as kernel/src/arch/x86_64/tlb.rs does. - the-running-slots-volume-is-claimable: 13ed7b4 deleted the kernel's USB storage path; the kernel serves no partition claim (Claimed holds a class, a PCI function, an ISA row or the ACPI row) and hold_source is gone. What remains, the block service not refusing the running ROOT, is issues/the-block-service-does-not-refuse-the-running-root.md, rejected. - the-sysroots-core-and-alloc-carry-the-compiler-profiles-debug-assertions: 5f73215 set debug-assertions-std = false on its own line in std_config and re-ran the link-time no-panic proof against the built sysroot. - thread-exits-completion-post-is-the-second-one: fa1e325 deleted publish_released, so process::thread_exit's post is the only one. - the-socket2-forks-ownedfd-holds-a-table-key-not-a-handle: #978 gave the process one descriptor table, and socket2 at 2aa6b00, which the lock now pins, installs each socket as a descriptor in it and releases the socket when the last descriptor goes; std's OwnedFd closes through toyos::fd::close. The number OwnedFd holds is the socket's descriptor. Deleted as superseded: - t14-keyboard-will-not-report-its-scancode-set: ps2server (#899) replaced the kernel driver; its probe resets the keyboard with translation on, asks no scancode set and has no firmware-bit fallback, and names undecoded runs. The T14 passed ps2server_arms at a42489c. - the-memory-map-buffer-is-the-unreported-pointer: the framebuffer lies in the boot map's scanout regions now, and the margin is MAP_MARGIN, 64. The memory map's report and the T14 reading it needs are folded into the-boot-map-reaches-4-gib-and-firmware-decides-what-lands-in-it, whose exit already asked for the report. - the-supervisors-claim-of-a-pci-function-the-t14-lacks-holds-preemption- off-for-3-8-ms: #926 removed the measured claim path, as the record itself said. The preemption-off windows it read are syscall-preemption-is-incidental's, whose 131 us mask_windows bound on the T14 covers the inventory read that replaced the claim. - watch-window-spins-out-a-hold-its-poster-is-queued-behind: dc62efc deleted the hold with its actuator. The record's one inbound reference was in a-wake-to-a-busy-cpu-waits-for-its-next-pass-and-no-idle-cpu-can- take-it, which audit batch 1 (#982) deleted, so no reference remains. blocking-read-window-reds-beside-other-guests keeps the pointer that git revert dc62efc restores the hold. The hold's own defect, a 50 ms spin with the task that would post queued behind it on the same CPU, is recorded only here. Renamed, the old slug refuted, no inbound reference: - the-panel-seeds-the-loaders-own-file-so-the-gcd-map-is-logged-nowhere -> the-gcd-maps-held-mmio-descriptors-are-logged-nowhere: the console seeds from logkeeper's stream, not /log's files. - the-kernel-depends-on-toyos-fat32-and-uses-none-of-it -> three-comments-say-the-kernel-uses-toyos-fat32: 13ed7b4 removed the dependency; three comments remain. - two-std-maps-still-answer-other-for-a-dead-peer -> std-net-maps-every-other-syscall-error-to-other: TcpStream moved to toyos::net::stream; one map remains, on UdpSocket and the listener. Corrected and kept, each residual defect stated: suite-rows (a guest binary deleted), t14-desktop-froze-at-64s (the drop line's wording), t14-lost-every-integrated-input (ps2server's counters and decoder test), the-t14-mouse-may-be-another-defect (usbd's HID path, no T14 reading), t14-rows (Bench::blocks), test-runner-holds-logread (metalcase alone), the EC record (mediated access, WR_EC for AML), the compiler workspace's toyos-abi lock, the compositor's unknown message, the deadline header's call sites, the pipe lock (user_ptr pins runs; names and lines), the boot map's report_reach list, the VFS's function name, the black box's foreign-record test, the power-off seal (kernel xHCI gone), the copy-out test, the reset word, both shell records, the shared-object cache's exit, the SSH key exchange (toyos-crypto has ML-KEM-768 and its NIST answers), the roster readers, toyos-dns, toybox's row (power is a connector), the click fold, the I219 hang, the lendable region, x2APIC's declaration, the volatile composite site and the file-size ledger. The SO_BROADCAST record's pin is 2aa6b00, where the setter is still a no-op. Inbound references fixed in the-t14-touchpad-is-i2c-hid-and-unbuilt, a-shared-boot-stopped-answering-and-no-capture-says-why and the-diary-computes-no-lateness-and-records-no-slow-system-call. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Problem
Open defect records carry claims about the code that later commits made stale
(the trigger was
issues/std-calloc-overflow-writes-past-a-fifteen-byte-block.md,retired by #980). Stale records misdirect planning and review. This is a
bounded one-off audit of batch 0 of 4: 117 open
kind: defectrecords, everyconcrete claim checked against
origin/mainat6f4d8dbdbca1452c0faa3eead53104d9d0d47fa4and against the owner's uncommittedplanning in the primary checkout (
requirements/,claude-questions.md), readand not edited. Documentation only; no code changes.
Base: rebased onto
db0cf636d16d265ac400ab5f32658ed81f5cd632(#971, #978,#980). The records whose cited code #971 removed were checked again there.
The classifications below are as of
6f4d8dbdb; "On the new base" says whatchanged.
Result (at
6f4d8dbdb)Fixed:
a-file-server-killed-mid-sync-leaves-a-half-written-btree(3adcf424e). Exit met bylib/bcachefs/tests/crash.rs. Its residual defects are owned bya-write-over-a-files-committed-page-is-not-shadowedanda-crash-leaks-the-blocks-of-its-last-commit.a-long-name-entry-whose-write-was-refused-is-on-the-volume-and-the-create-erases-nothing(0d73b9957). The QEMU half is met by the host model inlib/fat32/tests/refused_writes.rs(run below). The T14 half was judged unnecessary: the mechanism is the crate's, and since usbd drives every xHCI controller; the kernel drives no USB #971 theusb-transport-breakactuator no longer exists.a-replacement-netstack-reuses-its-predecessors-ports(4b96de015, RFC 6056 keyed ports with per-process keys). Its citation inissues/netstack-ends-for-the-boot-on-a-nic-it-cannot-drive-on.md(batch 2) is removed.a-disk-whose-port-went-away-panics-the-boot-at-roots-hold(602cff0e2). The code half is met. The nightly half was met by that commit's three local--nightlyruns with a negative control, not by a CI nightly. usbd drives every xHCI controller; the kernel drives no USB #971 deleted the record on main first.On the new base
a-deliberate-wedge-inside-a-driver-panics-every-other-cpu-that-wants-its-lock. usbd drives every xHCI controller; the kernel drives no USB #971 (13ed7b4f4) took the restoration of theusb-wedge-*arms out of stage E, and the kernel drives no USB. The one staged wedge left holds no lock.a-console-watch-waits-on-the-keyboard-not-the-serial-line(with the residual correction to its blocking read reapplied: it repolls every 10 ms, and its exit asks for no repoll) anda-disk-taken-offline-is-never-brought-back.a-held-disk-waits-for-a-pass-no-cpu-takes-when-every-cpu-is-in-a-call-on-it,a-machine-that-boots-off-nvme-looks-1500-ms-for-a-usb-boot-disk,a-reset-stops-xhci-and-leaves-every-claimed-pci-function-armed. Main also deleted the unchangeda-bind-whose-device-left-...,a-device-swapped-into-its-port-...,a-disk-refused-while-one-is-held-...,a-hid-interface-outside-the-boot-subclass-...anda-poll-that-leaves-a-port-outstanding-....a-job-list-hangs-...now citespcidev::stop_before_resetin place of the deletedxhci/stop.rs.a-megabyte-...anda-120000-ms-...merge with main's text. Two citations of files that were already deleted at the base, missed in r0, are fixed:a-driver-that-lends-...now citeslib/blockserve/src/sessions.rs, anda-counters-read-...now names the closed last-word record by its commit.d2006cc65as the first AML write to reach the kernel and15536e2e0as its widening.launch_pathsits besideis_canonical.Uncertain (left open):
a-double-fault-on-cpu-1-under-a-wide-suite,a-double-panic-at-boots-edge-says-nothing-but-its-name,a-function-refused-under-translation-faults-read-permission-after-the-hand-over,a-guest-close-after-a-refused-handshake-can-leave-its-peer-waiting,a-lane-reader-counted-one-refusal-fewer-than-its-writer-made,a-megabyte-written-to-the-stick-starves-a-tone-beside-it,a-netcase-boot-under-host-load-said-nothing-past-the-firmwares-screen-clears,a-reallocated-extent-on-data-keeps-the-deleted-files-bytes,a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-itanda-firmware-call-does-what-its-handler-chooses-and-the-kernel-bounds-only-the-call. That last one is a question for the owner: its exit said the slice passing AML's writes to the kernel would not land without a ruling.d2006cc65landed it (a byte toSMI_CMDand firmware-memory writes),15536e2e0widened it to every port, and no ruling is recorded. Whether the 2026-10 trust model answers the exit's first arm is the owner's call.Held for the owner (untouched, so the local planning edits apply cleanly):
a-driver-that-reflashes-its-device-escapes-its-isolation,a-file-held-across-a-file-servers-restart-answers-gone,a-machine-without-an-iommu-refuses-every-claimanda-memory-overwrite-request-ubuntu-left-set-stays-set-under-toyos. The owner has deleted that last one locally, together with its citation inthe-loader-never-sets-the-firmwares-memory-overwrite-request.md(claude-questions.mditem 12).Checks
CARGO_TARGET_DIR=<scratch>/target cargo test -p toyos-fat32 --test refused_writes every_refused_write_of_a_long_name_create_is_undone -- --nocaptureat6f4d8dbdb, host (macOS arm64): exit 0. The rebase changes nothing underlib/fat32.6f4d8dbdb, or atdb0cf636dfor the re-checked records. The table below gives the evidence.git grep /Users/ -- issuesfinds nothing.Privacy fix outside the batch
This PR also removes home-directory paths from three records outside batch 0.
Each record's meaning is kept:
issues/the-shipping-kernel-actuator-gate-reads-the-checkouts-own-path.md: the worktree path is now<parent>/toyos-heartbeat.issues/mutual-kill-panicked-on-the-t14-with-stdio-slot-1-not-a-log-ring.md: the quoted panic path is now<parent>/toyos-phdr/....issues/a-boot-with-no-kernel-log-is-not-no-boot-complete.md: the stick log is named without its scratch location.Noticed outside this batch (not changed)
issues/toyos-has-its-own-network-stack.mdstill lists the mio fork as owed forTCP_NODELAY. mio836d14fdelegates to std's stream now.Classification
117 records, as of 6f4d8db: file, class, evidence, action
fs_large_filetest cut in ff1a11d; caller is now the file server (system/fileserver/src/data.rs:545), not a kernel VFS flushiommu-domain-narrowremoved in 29e1006netstack_streamscut in ff1a11d; lan_swap still deleted, so the exit's restore is still owedsettle(lib/fat32/src/repair.rs:97,151); fsd→fileserver, logged in system/fileserver/src/fat.rs:134, CorruptChain→fs::Error::Iocargo test -p toyos-fat32 --test refused_writes every_refused_write_of_a_long_name_create_is_undoneexit 0 at 6f4d8db (24 cases, Refused and Landed, the record's own file name), log fat32-longname.log. T14 fat check of a usb-transport-break boot not rerunprovided; init→supervisor build_namespace (:2869); test_rs_window_child gone, shell build_command (:737) still provides for every child🤖 Generated with Claude Code