Track: the supervisor is host-tested and owns the stop - #575
Conversation
…t's, the rename One new kind: track issue, issues/isolation/the-supervisor-is-host-tested-and-owns-the-stop.md, recording the owner's decision to plan three things: init's decisions moved into a pure host-tested crate, graceful shutdown owned by init, and the program rename (init -> supervisor, netd -> netstack, logd -> logkeeper, soundd -> mixer, blockd -> disks, fsd -> files, sshd -> sshserver), each with an exit a machine can check. No code changes; nothing is renamed. Verified against the tree at af817e5 and #536's head 5235eda: - userland/init/src/main.rs is 1,746 lines with no #[test] and no tests/. - On main the kernel's quiesce runs writeback::drain_all and vfs sync_all after freezing userland; on #536 those lines are gone and init's Init::stop runs sync_files (one Dir::sync per role but boot, bounded by toyos_quiesce::SYNC_MS) after logd's flush. - #536 deletes quiesce_leaves_the_volume_whole and registers no test for the stop's sync. - src/redlist.rs disables two of the six quiesce tests (quiesce_dump_holds_the_stopped, quiesce_wakes_on_the_last_exit); two more (quiesce_stops_the_machine, quiesce_wakes_on_the_last_park) run with open findings. - The name `files` is already [programs.files] / userland/files. Gate: cargo test --lib, EXIT=0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6rME2DoqwjcYFStYHHY4j
|
Review of #575 at Claims about today's tree (checked at
BLOCKER
NOTE
REMOVE (the track is 134 lines, a screen is the bar)
SEND BACK |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6rME2DoqwjcYFStYHHY4j
…d's name open Answers the SEND BACK on #575 at d346d9d. - fsd's new name is open with the owner (candidate `fileserver`, `files` kept for the file manager); the invented rename of the file manager goes. - The rename is stage 1, first after #536, briefed as an ABI brief since it touches toyos/src, toyos-abi/src, userland/libc/src and the rust fork's ToyOS files. Its exit is a case-insensitive substring search over the six daemon names and a letter-bounded search for `init`, each with an explicit exclusion list judged per match; issue bodies are excluded as recorded evidence. Measured outside issues/ at 62e7e8c: 3641 daemon substring hits (3419 outside the exclusions), 2289 `init` substring hits, 1589 letter-bounded (1073 outside the exclusions). - Stage 2's exit names the crate `toyos-supervisor` and its decisions, now including the stop-order derivation and a host test refusing an undeclared cycle; it is unmet today and cannot go vacuous under the rename. - Stage 3's exit adds a two-service reverse-order test that reds on forward and all-at-once order. - Stage 4's exit names the five claims the stop's coverage must assert, by a host test or a guest test at Tier::Fast or Tier::Nightly with no redlist row, so it cannot be met by deleting tests; the per-test lists that conflicted with #564 and #574 go. - The power-broker track loses its false parenthetical and item 1: toybox holds the `power` connector, not the bit. - Every REMOVE the review listed is taken. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6rME2DoqwjcYFStYHHY4j
|
Round 2 of the review of #575, at Round-1 BLOCKERs
BLOCKER
NOTE
REMOVE
SEND BACK |
…ion, claims as sentences The rename's init exclusions become one rule: a match stays only where init means initialise, initial or the CPU's INIT signal, or sits in third-party text; every other match names the program. The search is bounded so CamelCase joins hit: no lowercase letter follows, and a letter precedes only a capital I. The review's literal "no lowercase letter on either side" misses TimerInit, which occurs 6 times outside issues/ at origin/main cd2e630; this bound catches it. Stage 2's exit now requires each decision deleted from userland/supervisor, which calls the crate for it. Stage 4's claims are sentences. The tier-and-redlist clause covers every guest test the track names. "The fork's delta" is forkcheck's definition. soundd's and blockd's new names reopen with the owner beside fsd's: mixer and disks are words the tree already uses. Removed: the stop on #536, the manifest's current order, the file manager's name, and the power-broker clause citing the deleted applet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6rME2DoqwjcYFStYHHY4j
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6rME2DoqwjcYFStYHHY4j
|
Round 3 of the review of #575, at Round-2 BLOCKERs
BLOCKER
NOTE
REMOVE
The power-broker edit is clean. "because asking the applet … itch" is deleted and not reworded, and no mention of "applet" remains. SEND BACK |
…ral fsd note The init bound missed a possessive s (a_boot_record_without_inits_stop_is_not_a_pass, inits_lines_are_heard_in_every_form_the_log_renders_them at origin/main); it now allows one trailing s. The third-party exclusion named tests/testcases/ broadly, which also covers our own system.toml; it now names tests/testcases/tinycc/. The stay/goes rule is replaced with the reviewer's sentence, which covers matches that are neither the program nor third-party text. Stage 1 now measures the rust/ fork's delta before it is briefed, not only the superproject. The fsd bullet records only the open question, not a rejected candidate nobody decided on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6rME2DoqwjcYFStYHHY4j
|
Round 4 of the review of #575, at Round-3 BLOCKERs
Round-3 NOTE and REMOVEs
BLOCKER NOTE REMOVE LAND |
Tracker only. It files one
kind: trackissue,issues/isolation/the-supervisor-is-host-tested-and-owns-the-stop.md, and correctsissues/isolation/the-power-broker-authority-with-a-human-in-the-loop.md. No code changes, and nothing is renamed.What changed and why
powerconnector (system.toml,console/system.toml), notRights::POWER.Gates
cargo test --lib: EXIT=0.🤖 Generated with Claude Code
https://claude.ai/code/session_01W6rME2DoqwjcYFStYHHY4j