Skip to content

issues: records name the programs and files the tree has - #1222

Merged
Japabu merged 1 commit into
mainfrom
hygiene-stale-text
Nov 11, 2026
Merged

Japabu merged 1 commit into
mainfrom
hygiene-stale-text

Conversation

@Japabu

@Japabu Japabu commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

Records still named programs and files by what they were called before 55d1afd19 renamed the system programs and 443a316de moved them to system/, and a few described code that has since moved. This corrects the text where the defect is real. Records only; no record is added, deleted or renamed, and no code changes.

record action evidence
46 records (list below) old program names and userland/ paths replaced by the current ones; each changed line then read with its neighbours, one name per sentence or paragraph 55d1afd19: init, netd, logd, soundd, blockd, fsd, sshd became supervisor, netstack, logkeeper, soundserver, diskserver, fileserver, sshserver. A path is rewritten only if the new path exists at origin/main
userlands-wall-clock-has-whole-seconds-and-an-mtime-has-nanoseconds stale citation corrected It cited clock::mtime_now in the kernel, which is gone. Files are stamped by now_nanos (system/fileserver/src/volume.rs) at nanosecond resolution; sdk/std/sys/time.rs and sdk/libc/src/time.rs still read SYS_CLOCK_EPOCH's whole seconds, so the defect stands
an-unlinked-open-file-answers-stale shrunk to what is left DATA and MEMORY keep an unlinked open file (unlink_and_replacement_keep_live_inode_identity, unlink_and_replacement_keep_open_inode_identity, persistent_unlink_preserves_dirty_bytes_until_the_last_holder), and crash orphans are released (namespace_operations_survive_a_crash_at_every_request). FAT still answers Stale (fat.rs, orphan) and the guest test of a mapping waits for file mappings. The exit is FAT keeping an unlinked open file, with no exemption clause: the owner's 2026-10-21 ruling in the record and the manual's Files rule have no FAT exception
the-update-rig-the-guest-cut-deleted-is-still-cited count and list corrected The record's own git grep finds four lines in the loader track, not six; Rig:: and updatecase as a boot are no longer cited
a-device-function-is-driven-from-its-arrival-to-its-end dangling pointer and its clause removed It cited a-cargo-run-boot-claims-every-pcidev-slot, deleted by 8a47c46e8, which also removed the four-slot table the clause was about
placement-has-no-migration-cost-or-wake-affinity dangling pointer removed It cited a-spawned-thread-starts-in-any-llc-not-its-spawners, which exists only on the unmerged branch issue-spawn-llc

Records: 752 on main at 34cb4c918, 752 on this branch.

How the sweep was bounded

The sweep was scripted and every changed line was then read. It changes a backticked logd, fsd, blockd, soundd or netd, /system/bin/<old>, an existing userland/<old>/… path, and those five words in prose. It does not touch:

  • fenced or indented blocks, tables, and lines quoting a log, so quoted output keeps the names it was printed with;
  • a line that already has a new name, or says "now", "renamed", "predecessor", "branch" or "smoltcp";
  • test names such as netd_hostile_peer;
  • bare init and sshd, which also name other things. They were changed by hand in the logging track (seven uses of init, each the program) and in two lists of programs;
  • paths that carry line numbers, since the numbers are the old file's (five remain, listed in the handoff);
  • eight records left whole: two that are about the old names (a-renamed-services-state-stays-under-its-old-name-unread, the-supervisor-is-host-tested-and-owns-the-stop), what-is-owed-on-file-size (history), and five where the old name means something the new one may not (toyos-has-its-own-network-stack, a-connect-between-two-accepts-is-reset, most-t14-leases-land-one-dhcp-retry-late, netstack-resolver-asks-a-dead-primary-first-on-every-lookup, there-is-no-network-gate describe the smoltcp daemon; diskserver-drives-nvme-apst and first-match-selection-that-remains say blockd drives NVMe, which system/nvme does now);
  • records open pull requests or other agents' work own.

A per-line rule misses a sentence that continues onto the next line, so every changed line was afterwards read beside any unchanged neighbour holding an old name or one of the words above (23 pairs). That pass removed soundservers-mix-pass-has-no-host-test's clause calling netstack's protocol layer stock smoltcp (false: the stack is ToyOS's own, and the exclusion is obsolete), kept netd in two sentences that quote a netd log, and moved six paragraphs to one name throughout, init and sshd included.

So old names remain in the tracker after this: about 140 uses of the five words, in the lines and records above.

Decisions a reviewer may want to question

  • Four headings change (for example "A client cannot tell soundd it paused" becomes "…soundserver…"). None of their slugs carries an old name, so no slug or citation moves and opened is kept.
  • Dated sightings name the program by its current name in prose, except where the sentence quotes a log printed with the old name. Quoted log lines were left as printed, and a sentence quoting one keeps that name throughout: "In the 650 run netd started at 4.905 s … with neither of netd's lines before it" stays as it was. Elsewhere a paragraph uses the current names throughout ("the supervisor's words on netstack ending at accepted").
  • The unlinked-file track's exit is rewritten to the two things left: the guest test of a mapping, and FAT keeping an unlinked open file.

Checks

No code or instruction file changes, so no host check applies.

The 46 swept records

a-120000-ms-boot-deadline-fired-132859-ms-late-on-the-t14, a-boot-with-no-kernel-log-is-not-no-boot-complete, a-claims-own-refusals-are-read-by-nothing, a-client-cannot-tell-soundserver-it-paused, a-hung-boots-log-partition-is-wiped-by-the-next-runs-flash, a-machine-without-an-iommu-refuses-every-claim, a-metal-session-runs-a-pre-flash-gate-first, a-package-is-a-directory-under-apps-and-the-installer-is-a-program, a-stream-write-spins-on-a-lock-its-own-panic-can-hold, a-t14-boot-said-rebooting-and-the-host-never-came-back, a-t14-boot-wedges-after-a-jobs-exit-and-nothing-said-why, a-wait-was-registered-while-its-task-still-read-waiting, both-boots-of-the-manageability-read-image-found-the-t14-powered-off, client-ring-depth-is-the-devices-pipeline-depth, deferred-release-outlives-its-syscall, desktop-session-put-26ms-of-silence, desktop-window-child-freeze, dns-resolver-refuses-a-truncated-answer, every-program-sees-only-the-files-it-was-given, hda-ring-fix-unverified-on-metal, logging-records-from-every-producer-and-a-kernel-that-waits-on-nobody, nothing-reopens-a-diskserver-session-over-a-used-page, null-sink-applies-one-connect, one-manifest-row-grants-every-applet-and-one-is-compared, parallel-tests-red-under-other-suites, process-start-skew-on-a-runner, redesign-the-log-subsystem, soundserver-past-due-wake-max-1, soundservers-mix-pass-has-no-host-test, spawned-process-never-starts, stop-the-device-voice-keep-the-wake, tco2-sts-clearing-is-verified-on-qemu-only, the-guest-suite-runs-only-what-no-cheaper-tier-reaches, the-internet-clients-work-unchanged, the-kernel-keeps-nothing-it-enumerates, the-lan-is-not-yet-production-grade, the-logs-server-ending-under-logkeepers-append-is-unmeasured, the-metal-loop-cannot-judge-a-boot-that-panics, the-t14-answers-only-through-what-ubuntu-reads-off-its-disk, the-t14-hung-after-rebooting-with-its-i219-faulted, the-t14-reboots-through-ubuntu-for-every-test, the-tone-client-waits-a-flat-200-ms-for-its-tail, timing-verdicts-ruled-off-qemu-have-no-metal-arm, toyos-runs-on-arm64, two-processes-started-at-an-entry-point-nothing-had-mapped, userland-programs-are-never-linted

🤖 Generated with Claude Code

@Japabu

Japabu commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

Review of #1222 at bf1872136 (base 34cb4c918)

Assessment. Records only: 52 files, +156/−156. I read the whole diff, which covers all 47 swept records and the 5 corrected by hand. The rename map matches 55d1afd19, and every rewritten system/… path exists at origin/main. Quoted log lines and fenced blocks were left as printed. All 5 hand corrections hold against the tree. The per-line rules produced one false statement and one split sentence.

Findings

BLOCKER: soundservers-mix-pass-has-no-host-test.md:59-60 now reads "netstack's protocol layer (stock smoltcp — conformance tests there test upstream)".

  • This is false. netstack is ToyOS's own stack, and smoltcp is in no manifest (issues/toyos-has-its-own-network-stack.md).
  • The "skip lines that say smoltcp" rule missed it because the word is on the next line.
  • Fix: restore netd's as a historical name, or delete the clause, which is now obsolete.

BLOCKER: a-test-asserts-a-daemons-line-off-a-boot-log-that-ends-before-it.md:17-18 now reads "In the 650 run netd started at 4.905 s … with neither of netstack's lines before it".

  • One program has two names in one sentence, which reads as two programs.
  • The PR body gives "netstack started at 4.905 s" as the example of its dated-sighting decision, but the branch does not contain it. Correcting the body is the orchestrator's job.
  • Fix: one name throughout the sentence.

BLOCKER: an-unlinked-open-file-answers-stale.md:33-34. The new exit closes on "FAT … recorded as refusing to by design".

  • The owner's 2026-10-21 ruling in the same record, and the manual's Files section ("Deleting a name keeps existing handles and mappings working until their last release"), state the rule with no FAT exception.
  • An exit that any agent can meet by recording an exemption pre-authorizes a carve-out to an owner ruling.
  • Fix: "FAT keeping an unlinked open file, or the owner exempting FAT".

SUGGESTION: the sweep left these stale beside renamed text in the same record:

  • hda-ring-fix-unverified-on-metal.md:22 cites userland/soundd/src/mix.rs a line after citing system/soundserver/….
  • one-manifest-row-grants-every-applet-and-one-is-compared.md:48 quotes the toybox row as receives = ["soundd"], but tests/images/testcases.toml:89 has ["soundserver"].
  • client-ring-depth-is-the-devices-pipeline-depth.md:21 still has "with soundd clamping" in prose.

SUGGESTION: some mixed names fall within the PR's stated rules. One is the mixed init / supervisor / netstack paragraph in deferred-release-outlives-its-syscall.md (around lines 283-297). Another is logd beside logkeeper at timing-verdicts-ruled-off-qemu-have-no-metal-arm.md:53-56. Each is readable, but each record should use one name per paragraph.

Checked and accepted:

  • The 5 hand corrections.
    • now_nanos (system/fileserver/src/volume.rs:401) stamps nanoseconds from a whole-second anchor, while std and libc still read whole seconds through SYS_CLOCK_EPOCH.
    • The four tests the unlinked-file record names exist, and FAT's orphan still sets gone (fat.rs:204), which then answers Stale.
    • The record's own git grep finds four lines in the loader track.
    • 8a47c46e8 removed a-cargo-run-boot-claims-every-pcidev-slot.
    • issue-spawn-llc was issues: a spawned thread starts in any LLC, not its spawner's #1151, which was closed unmerged.
  • Swept records in context. I checked a-boot-with-no-kernel-log…, a-client-cannot-tell-soundserver…, a-hung-boots-log-partition…, a-stream-write-spins…, a-t14-boot-wedges…, both-boots-of-the-manageability…, deferred-release…, desktop-session-put…, desktop-window-child-freeze, dns-resolver…, every-program-sees…, logging-records… (the supervisor makes and names each ring: system/supervisor/src/main.rs:327-402), nothing-reopens-a-diskserver-session…, null-sink…, parallel-tests…, redesign-the-log-subsystem, soundserver-past-due-wake-max-1, stop-the-device-voice…, the-guest-suite…, the-internet-clients…, the-kernel-keeps-nothing…, the-lan-is-not-yet…, the-logs-server-ending…, the-t14-answers-only…, the-t14-reboots-through-ubuntu…, timing-verdicts…, toyos-runs-on-arm64 and two-processes-started…. The new name is right in context in each, apart from the findings above. /system/bin/supervisor is the swap's executor (lib/swap/src/lib.rs header).
  • Ownership. No changed record is in an open PR's diff. origin/spawnpath is in progress with no PR. It edits a different part of a-t14-boot-wedges-after-a-jobs-exit-and-nothing-said-why.md and merges cleanly with this branch.
  • Merges. The branch merges cleanly with issues: sixteen records whose defect, code or test is gone are deleted #1220, issues: two duplicate pairs merged, and two records renamed for the test each still owes #1221, Comments and the README no longer say the kernel writes the log through toyos-fat32 or tell a deleted syscall's history #1224 and main.

SEND BACK

@Japabu
Japabu force-pushed the hygiene-stale-text branch from bf18721 to 9e6bc0e Compare November 11, 2026 13:57
The system programs were renamed by 55d1afd (init, netd, logd, soundd,
blockd, fsd and sshd became supervisor, netstack, logkeeper, soundserver,
diskserver, fileserver and sshserver) and moved from userland/ to system/
by 443a316. Records still used the old names.

The sweep, across 46 records, changes only what is certain:

- `userland/<old>/<path>` to `system/<new>/<path>` where that path exists
  at origin/main and carries no line number;
- a backticked `logd`, `fsd`, `blockd`, `soundd` or `netd`, and
  `/system/bin/<old>`;
- those five words in prose, which name nothing else.

It leaves alone: fenced and indented blocks, tables and quoted log lines;
any line that already carries a new name or says "now", "renamed",
"predecessor", "branch" or "smoltcp"; test names; bare `init` and `sshd`,
which also name other things, except in the logging track and two lists
of programs fixed by hand; and records that are about the old names or
that describe the smoltcp daemon netstack replaced.

A per-line rule cannot see a sentence that runs onto the next line, so
every changed line was then read beside its unchanged neighbours (a line
holding an old name or one of the words above). Where a sentence quotes a
log printed with an old name, that sentence keeps the old name throughout
(the-lan-is-not-yet-production-grade, and
a-test-asserts-a-daemons-line-off-a-boot-log-that-ends-before-it, which
this leaves unchanged), or names it once as the old name
(a-hung-boots-log-partition-is-wiped-by-the-next-runs-flash); elsewhere a
paragraph uses the current names throughout, `init` and `sshd` included.
soundservers-mix-pass-has-no-host-test loses its clause putting netstack's
protocol layer out of scope as stock smoltcp: netstack's stack is ToyOS's
own, so the clause is false and its exclusion obsolete. Stale paths beside
renamed ones point at system/soundserver.

Text corrected where the defect is real:

- userlands-wall-clock-has-whole-seconds-and-an-mtime-has-nanoseconds
  cited `clock::mtime_now` in the kernel. The file server stamps files
  now (`now_nanos`, system/fileserver/src/volume.rs), from the same
  whole-second anchor and the counter; std and libc still read whole
  seconds.
- an-unlinked-open-file-answers-stale said every statement that spills
  to a temporary file fails. DATA and MEMORY keep an unlinked open file
  until its last close and a crash's orphans are released; the record
  now names the tests that hold that and what is left: FAT keeping an
  unlinked open file, and the guest test of a mapping. The exit has no
  FAT exemption: the owner's ruling in the record and the manual's rule
  that deleting a name keeps existing handles working have none.
- the-update-rig-the-guest-cut-deleted-is-still-cited counted six lines;
  its own `git grep` finds four, and two of the things it listed are no
  longer cited.

Pointers at records that do not exist:

- a-device-function-is-driven-from-its-arrival-to-its-end named
  a-cargo-run-boot-claims-every-pcidev-slot for a ruling about the
  claim-slot limit; 8a47c46 removed the four-slot table and the record.
- placement-has-no-migration-cost-or-wake-affinity named
  a-spawned-thread-starts-in-any-llc-not-its-spawners, which exists only
  on the unmerged branch issue-spawn-llc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Japabu
Japabu force-pushed the hygiene-stale-text branch from 9e6bc0e to b0fb530 Compare November 11, 2026 13:57
@Japabu

Japabu commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

Orchestrator verification at b0fb530, after review r1 SEND BACK (text-only blockers).

This PR changes only files under issues/ (checked with git diff --name-only against main). I read the fixes for each blocker the review named on this PR and they are resolved as the review asked; the review found no deletion that hides a live defect. Records only, so no build or test is owed beyond the tracker gates in the merge queue. Queueing.

@Japabu
Japabu marked this pull request as ready for review November 11, 2026 14:20
@Japabu
Japabu added this pull request to the merge queue Nov 11, 2026
Merged via the queue into main with commit b566931 Nov 11, 2026
10 checks passed
@Japabu
Japabu deleted the hygiene-stale-text branch November 11, 2026 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant