From c280ecef8d1902bad4403fa96e5dfdf664fb784a Mon Sep 17 00:00:00 2001 From: japabu Date: Fri, 2 Oct 2026 10:00:26 +0200 Subject: [PATCH 1/7] The self-hosting track carries the owner's plan of 2026-10-01 as its stages The plan lived only in the orchestrator's notes. The track gains what the owner decided that day and the stages the plan lists, behind #650, #659 and #661, which are open and land first in that order: - Decided: LLVM ships as a binary seed and C is accepted, in programs too; cargo keeps its eight C libraries; Perl and Python come to ToyOS; the host keeps rustup's cargo, which #629's rework must keep; make it work, then optimise, then compare, with no performance study now. - Stages: the libc crate's ToyOS module, checked by ctest against our headers; select in libc; what cargo's libraries call in libc; cargo's eight C libraries cross-built for ToyOS; Perl, Python, brush, uutils, make, CMake and awk built for ToyOS; pkg past 256 MiB with links and a loader that finds a package's libraries; the toolchain as pkg packages and an image without it. What the notes leave open is written as open: whether cargo's OpenSSL goes through its Perl Configure or cargo takes curl's rustls backend, which the owner decides at M4; what select answers for a descriptor past FD_SETSIZE; which Python, make and awk; how the toolchain splits into packages and how a self-host test's guest reaches them; and any order among the stages. cargo's native libraries and the libc gaps are stages of this track and no files of their own. issues/README.md makes a track the place that says what is to be built and what it is blocked on, and each is a part of M4's cargo. Its defect is real and reproducible: the gaps were measured against #650's libc, which main does not have, and #650 files the defects of its own libc (realpath, a file mmap, a record lock, socket descriptors, file identity), so a file here would be a second one for each. Numbers are the investigation's of 2026-10-01, each with its method: the release's stripped binaries (llvm-objcopy --strip-all), the libraries compiled and linked with the toolchain's clang against #650's C sysroot, the search of Perl 5.44.0 for posix_spawn, llvm-readobj --needed-libs. Re-read on this branch: libc 0.2.189 has no ToyOS module and ToyOSOrg/libc answers 404; curl 8.21.0's wait.c and select.c and curl-sys 0.4.90's build.rs; openssl-src 300.6.1's target table; main's libc, which names none of flock, realpath, setvbuf, socketpair or select; pkg's MAX_INFLATED and its refused links. Estimates are left out. Stage 3 of the child-process track said "No select"; it now says the stage builds none and names this track as its owner, so the two do not contradict. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm --- issues/build/toyos-builds-itself.md | 69 +++++++++++++++++++ ...nt-and-a-parent-takes-its-children-down.md | 5 +- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/issues/build/toyos-builds-itself.md b/issues/build/toyos-builds-itself.md index 4947b541ca8..163eaebae65 100644 --- a/issues/build/toyos-builds-itself.md +++ b/issues/build/toyos-builds-itself.md @@ -32,6 +32,75 @@ AArch64 one step behind, on `issues/kernel/toyos-runs-on-arm64.md`'s track. again to the same bytes. *Exit*: the fixed point, reached with no host in the loop. +**Decided** (owner, 2026-10-01). +- LLVM ships as a binary seed. C and C++ are accepted because the compiler is + LLVM, in programs too, important ones included. +- cargo keeps its eight C libraries — curl, libgit2, libssh2, OpenSSL, SQLite, + nghttp2, zlib and blake3 — and nothing replaces them with Rust. +- Perl and Python come to ToyOS. +- The host builds with the cargo rustup ships. #629, open, builds the fork's + own for the host and is reworked to keep rustup's. +- Make it work, then optimise, then compare: no performance study now, and no + comparison before a compilation inside ToyOS succeeds. + +**The plan's stages** (2026-10-01), behind three open pull requests that land +first and in this order: #650, libc's POSIX surface for LLVM; #659, stage 4 of +the child-process track; #661, LLVM, clang and lld built for a ToyOS host as +far as libc lets them. The plan sets no order among the stages. Where a stage +names libc's state it is #650's at `15625e0cb`, which `main` does not have, +unless it says `main`. +- **The `libc` crate gains a ToyOS module**, checked by `ctest` against + `userland/libc`'s headers. `libc` 0.2.189 has none (`rg -i toyos` over its + `src` matches nothing) and is empty for an OS it does not know + (`src/lib.rs`), and `ToyOSOrg/libc` does not exist (GitHub's API answers + 404). cargo's `curl-sys`, `libssh2-sys` and `libgit2-sys` import its C types + unconditionally. +- **libc gains `select`.** curl 8.21.0, which `curl-sys` 0.4.90 builds, does + not compile without it (`lib/curlx/wait.c`: `#error "We cannot compile + without select() support."`) and waits on its sockets through it: `select.c` + calls `poll` only under `HAVE_POLL`, which `curl-sys` does not define. Stage + 3 of `issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md` + builds none, because a descriptor is a handle and passes `FD_SETSIZE`; what + `select` answers for such a descriptor is open. +- **libc gains what cargo's libraries call**, among them `flock`, a `realpath` + that resolves, a file `mmap`, record locks and file identities served by fsd, + socket descriptors that are pollable and can be non-blocking, `setvbuf` and + `socketpair`. Read from each library's source and not run: SQLite's default + VFS takes `fcntl` record locks and keys them on `st_dev` and `st_ino`; + libgit2 opens every repository through `realpath` and reads packs through a + file `mmap`; curl and libssh2 wait on non-blocking sockets, and curl's multi + handle wakes through a `socketpair`. `main`'s libc defines no `flock`, + `realpath`, `setvbuf` or `socketpair`; #650's refuses `realpath`, a file + `mmap` and a record lock, and files that as a defect. +- **cargo's eight C libraries are cross-built for ToyOS.** Compiled and linked + with the toolchain's clang against #650's C sysroot, the sources of nghttp2, + zlib and blake3 build with nothing undefined, and the other five stop on + headers, types or functions libc lacks. `openssl-src` 300.6.1 knows no ToyOS + target and refuses one it does not know (`src/lib.rs`), and `openssl-sys` is + a `cfg(unix)` dependency of `curl-sys` and `libssh2-sys`, which ToyOS is not. + Open until M4: whether cargo's OpenSSL is built through its Perl `Configure`, + or cargo takes curl's rustls backend. +- **The tools a self-build runs are built for ToyOS**: Perl and Python, ported + to start a child by spawn and never by fork; brush as the POSIX `sh` + (`issues/build/ninja-runs-every-command-through-a-bin-sh-toyos-does-not-have.md`); + uutils; make; CMake, its libuv ported to spawn; and awk. They wait on stage 3 + of the child-process track and on `issues/filesystem/there-is-no-dev-null.md`. + A search of Perl 5.44.0's sources for `posix_spawn` matches nothing. Which + Python, which make and which awk the plan does not say. +- **`pkg` installs a toolchain**: an archive past 256 MiB, and links. It + inflates a whole archive in memory under `MAX_INFLATED`, 256 MiB, and refuses + every link (`userland/pkg/src/main.rs`, `archive.rs`). A toolchain's size is + measured on a proxy, the Linux-host release + `toolchain-linux-x86_64-48dd24f826263d6c`: stripped with `llvm-objcopy + --strip-all`, its `librustc_driver` is 184.7 MB, its clang 122.8 MB and its + lld 78.6 MB, beside 181.1 MB of `x86_64-unknown-toyos` libraries. And the + loader finds a package's own libraries + (`issues/filesystem/a-package-cannot-ship-its-own-libraries.md`): rustc's + launcher names `librustc_driver` as needed (`llvm-readobj --needed-libs`). +- **The toolchain is `pkg` packages, and the image carries none of it.** How it + is split into packages, and how a self-host test's guest reaches them, the + plan does not say. + **Blocked on other tracks.** M2 needs packages over HTTPS (`issues/filesystem/a-package-is-a-directory-under-apps-and-the-installer-is-a-program.md`) and the network stack under it (`issues/hardware/the-lan-is-not-yet-production-grade.md`, diff --git a/issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md b/issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md index f22a4a92526..df4165ab07b 100644 --- a/issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md +++ b/issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md @@ -77,8 +77,9 @@ directory is `issues/isolation/every-program-sees-only-the-files-it-was-given.md signal-set calls; `environ`, `setenv`, `unsetenv`; `kill` with `SIGKILL` for a child or a `-pgid` of its children, 0 as a probe, `EINVAL` for other signals until stage 6; `system`, `popen` and `pclose` through - `/system/bin/shell -c`. No `select`: a descriptor is a handle and passes - `FD_SETSIZE`. A handler for any signal libc imitates runs at once, beside the + `/system/bin/shell -c`. No `select` in this stage, a descriptor being a + handle that passes `FD_SETSIZE`: `issues/build/toyos-builds-itself.md` owns + it. A handler for any signal libc imitates runs at once, beside the program: inside a blocking call of a thread that leaves the signal unblocked (`ppoll` and `sigsuspend` under their mask), and, while no thread is in one, on libc's own thread. After it `read`, `recv`, `accept`, `wait`, `waitpid` From da32c58bb32708a24af2c2c3e777d2029dc76841 Mon Sep 17 00:00:00 2001 From: japabu Date: Fri, 2 Oct 2026 10:24:11 +0200 Subject: [PATCH 2/7] Round 2: the track says what was decided and no more; the host's cargo is the tooling track's Answers the review of c280ecef8 and takes two answers the owner gave on 2026-10-02, after that commit was written. The owner's answers: - The development host builds cargo from the Rust fork and uses no other. The notes this branch was written from recorded the opposite as a consequence of accepting cargo's C dependencies, and the owner has overruled it. The bullet "The host builds with the cargo rustup ships. #629 ... is reworked to keep rustup's" goes; the tooling track's cargo sentences on main stand and are not repeated here. - OpenSSL's build on the host runs under the host's own make and shell, and openssl-src is not forked for it. The track says so in one sentence, beside the question it bounds: what is open until M4 is how cargo's OpenSSL is built for ToyOS. The host tools themselves are declared in the-build-runs-host-tools-outside-rust-and-qemu.md, which is #629's change. The review's findings: - "cargo keeps its eight C libraries ... and nothing replaces them with Rust" said more than was decided and contradicted the open rustls-backend question. The bullet is now "cargo's C dependencies are accepted", and the eight are named by the stage that cross-builds them. - flock leaves the libc stage. No library cargo builds for ToyOS calls it: over the eight crates' sources, `rg '\bflock\s*\('` finds a call in two places. SQLite's is inside `#if SQLITE_ENABLE_LOCKING_STYLE`, which sqlite3.c defines 1 only under __APPLE__ and libsqlite3-sys 0.38.1's build.rs never sets; nghttp2's is in third-party/mruby, which libnghttp2-sys 0.1.13's build.rs does not name. - setvbuf gets the caller the stage did not name: curl's TLS key log (lib/vtls/keylog.c). - The landing queue (#650, #659, #661 "open", "in this order") and "which main does not have" turn false at a landing that need not touch this file, and go. The stage keeps the libc its gaps were measured against, pull request #650's at 15625e0cb, and says of that libc what it said of main's: `git grep -w` for setvbuf, socketpair and select over userland/libc at 15625e0cb matches nothing. - "The plan's stages", "the plan sets no order" and "the plan does not say" pointed at a document the tree does not hold. Each is written as open. - Waiting on stage 3 of the child-process track and on /dev/null is said of the tools written in C or C++, as it was measured, and no longer of brush and uutils, which are Rust. - "C and C++ are accepted" becomes the owner's word, C. - The child-process track's sentence no longer repeats why select passes FD_SETSIZE; this track says it beside the open question. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm --- issues/build/toyos-builds-itself.md | 54 +++++++++---------- ...nt-and-a-parent-takes-its-children-down.md | 5 +- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/issues/build/toyos-builds-itself.md b/issues/build/toyos-builds-itself.md index 163eaebae65..c194b38136b 100644 --- a/issues/build/toyos-builds-itself.md +++ b/issues/build/toyos-builds-itself.md @@ -33,22 +33,15 @@ AArch64 one step behind, on `issues/kernel/toyos-runs-on-arm64.md`'s track. *Exit*: the fixed point, reached with no host in the loop. **Decided** (owner, 2026-10-01). -- LLVM ships as a binary seed. C and C++ are accepted because the compiler is - LLVM, in programs too, important ones included. -- cargo keeps its eight C libraries — curl, libgit2, libssh2, OpenSSL, SQLite, - nghttp2, zlib and blake3 — and nothing replaces them with Rust. +- LLVM ships as a binary seed. C is accepted because the compiler is LLVM, in + programs too, important ones included. +- cargo's C dependencies are accepted. - Perl and Python come to ToyOS. -- The host builds with the cargo rustup ships. #629, open, builds the fork's - own for the host and is reworked to keep rustup's. - Make it work, then optimise, then compare: no performance study now, and no comparison before a compilation inside ToyOS succeeds. -**The plan's stages** (2026-10-01), behind three open pull requests that land -first and in this order: #650, libc's POSIX surface for LLVM; #659, stage 4 of -the child-process track; #661, LLVM, clang and lld built for a ToyOS host as -far as libc lets them. The plan sets no order among the stages. Where a stage -names libc's state it is #650's at `15625e0cb`, which `main` does not have, -unless it says `main`. +**To build** (2026-10-01), in an order that is open. Where a stage names +libc's state it is pull request #650's at `15625e0cb`. - **The `libc` crate gains a ToyOS module**, checked by `ctest` against `userland/libc`'s headers. `libc` 0.2.189 has none (`rg -i toyos` over its `src` matches nothing) and is empty for an OS it does not know @@ -62,31 +55,36 @@ unless it says `main`. 3 of `issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md` builds none, because a descriptor is a handle and passes `FD_SETSIZE`; what `select` answers for such a descriptor is open. -- **libc gains what cargo's libraries call**, among them `flock`, a `realpath` - that resolves, a file `mmap`, record locks and file identities served by fsd, +- **libc gains what cargo's libraries call**, among them a `realpath` that + resolves, a file `mmap`, record locks and file identities served by fsd, socket descriptors that are pollable and can be non-blocking, `setvbuf` and `socketpair`. Read from each library's source and not run: SQLite's default VFS takes `fcntl` record locks and keys them on `st_dev` and `st_ino`; libgit2 opens every repository through `realpath` and reads packs through a - file `mmap`; curl and libssh2 wait on non-blocking sockets, and curl's multi - handle wakes through a `socketpair`. `main`'s libc defines no `flock`, - `realpath`, `setvbuf` or `socketpair`; #650's refuses `realpath`, a file - `mmap` and a record lock, and files that as a defect. -- **cargo's eight C libraries are cross-built for ToyOS.** Compiled and linked + file `mmap`; curl and libssh2 wait on non-blocking sockets, curl's multi + handle wakes through a `socketpair`, and its TLS key log sets its buffering + through `setvbuf`. #650's libc defines no `setvbuf` or `socketpair`, refuses + `realpath`, a file `mmap` and a record lock, and files the refusals as a + defect. +- **cargo's eight C libraries are cross-built for ToyOS**: curl, libgit2, + libssh2, OpenSSL, SQLite, nghttp2, zlib and blake3. Compiled and linked with the toolchain's clang against #650's C sysroot, the sources of nghttp2, zlib and blake3 build with nothing undefined, and the other five stop on headers, types or functions libc lacks. `openssl-src` 300.6.1 knows no ToyOS target and refuses one it does not know (`src/lib.rs`), and `openssl-sys` is a `cfg(unix)` dependency of `curl-sys` and `libssh2-sys`, which ToyOS is not. - Open until M4: whether cargo's OpenSSL is built through its Perl `Configure`, - or cargo takes curl's rustls backend. + Open until M4: whether cargo's OpenSSL is built for ToyOS through its Perl + `Configure`, or cargo takes curl's rustls backend there. On the host it is + decided (owner, 2026-10-02): OpenSSL's build runs under the host's own make + and shell, and `openssl-src` is not forked for it. - **The tools a self-build runs are built for ToyOS**: Perl and Python, ported to start a child by spawn and never by fork; brush as the POSIX `sh` (`issues/build/ninja-runs-every-command-through-a-bin-sh-toyos-does-not-have.md`); - uutils; make; CMake, its libuv ported to spawn; and awk. They wait on stage 3 - of the child-process track and on `issues/filesystem/there-is-no-dev-null.md`. - A search of Perl 5.44.0's sources for `posix_spawn` matches nothing. Which - Python, which make and which awk the plan does not say. + uutils; make; CMake, its libuv ported to spawn; and awk. Those written in C + or C++ wait on stage 3 of the child-process track and on + `issues/filesystem/there-is-no-dev-null.md`. A search of Perl 5.44.0's + sources for `posix_spawn` matches nothing. Open: which Python, which make and + which awk. - **`pkg` installs a toolchain**: an archive past 256 MiB, and links. It inflates a whole archive in memory under `MAX_INFLATED`, 256 MiB, and refuses every link (`userland/pkg/src/main.rs`, `archive.rs`). A toolchain's size is @@ -97,9 +95,9 @@ unless it says `main`. loader finds a package's own libraries (`issues/filesystem/a-package-cannot-ship-its-own-libraries.md`): rustc's launcher names `librustc_driver` as needed (`llvm-readobj --needed-libs`). -- **The toolchain is `pkg` packages, and the image carries none of it.** How it - is split into packages, and how a self-host test's guest reaches them, the - plan does not say. +- **The toolchain is `pkg` packages, and the image carries none of it.** Open: + how it is split into packages, and how a self-host test's guest reaches + them. **Blocked on other tracks.** M2 needs packages over HTTPS (`issues/filesystem/a-package-is-a-directory-under-apps-and-the-installer-is-a-program.md`) diff --git a/issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md b/issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md index df4165ab07b..04be91853b4 100644 --- a/issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md +++ b/issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md @@ -77,9 +77,8 @@ directory is `issues/isolation/every-program-sees-only-the-files-it-was-given.md signal-set calls; `environ`, `setenv`, `unsetenv`; `kill` with `SIGKILL` for a child or a `-pgid` of its children, 0 as a probe, `EINVAL` for other signals until stage 6; `system`, `popen` and `pclose` through - `/system/bin/shell -c`. No `select` in this stage, a descriptor being a - handle that passes `FD_SETSIZE`: `issues/build/toyos-builds-itself.md` owns - it. A handler for any signal libc imitates runs at once, beside the + `/system/bin/shell -c`. No `select` in this stage: `issues/build/toyos-builds-itself.md` + owns it. A handler for any signal libc imitates runs at once, beside the program: inside a blocking call of a thread that leaves the signal unblocked (`ppoll` and `sigsuspend` under their mask), and, while no thread is in one, on libc's own thread. After it `read`, `recv`, `accept`, `wait`, `waitpid` From 4a22b747cf75dc278ffb5356c0f60952b5456b0e Mon Sep 17 00:00:00 2001 From: japabu Date: Fri, 2 Oct 2026 10:27:23 +0200 Subject: [PATCH 3/7] ToyOS programs use rustls with ring; graviola is an option for later The owner was asked on 2026-10-02 which TLS engine ToyOS programs use and chose ring over graviola, with graviola an option to revisit later. - issues/build/toyos-builds-itself.md says it under "Decided", pointing at the stage that owns it. - issues/design-debt/the-internet-clients-work-unchanged.md stage 3 named the graviola provider. It names ring, and records graviola as the later option. Nothing else in that track changes. main already builds this way: userland/Cargo.lock pins ring 0.17.14 and rustls 0.23.37, and `git grep -i graviola` over the tree matched that one line of stage 3 and nothing else. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm --- issues/build/toyos-builds-itself.md | 2 ++ issues/design-debt/the-internet-clients-work-unchanged.md | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/issues/build/toyos-builds-itself.md b/issues/build/toyos-builds-itself.md index c194b38136b..17368812900 100644 --- a/issues/build/toyos-builds-itself.md +++ b/issues/build/toyos-builds-itself.md @@ -36,6 +36,8 @@ AArch64 one step behind, on `issues/kernel/toyos-runs-on-arm64.md`'s track. - LLVM ships as a binary seed. C is accepted because the compiler is LLVM, in programs too, important ones included. - cargo's C dependencies are accepted. +- ToyOS programs use rustls with ring (2026-10-02): stage 3 of + `issues/design-debt/the-internet-clients-work-unchanged.md`. - Perl and Python come to ToyOS. - Make it work, then optimise, then compare: no performance study now, and no comparison before a compilation inside ToyOS succeeds. diff --git a/issues/design-debt/the-internet-clients-work-unchanged.md b/issues/design-debt/the-internet-clients-work-unchanged.md index 586b9b46e1c..692e012edb9 100644 --- a/issues/design-debt/the-internet-clients-work-unchanged.md +++ b/issues/design-debt/the-internet-clients-work-unchanged.md @@ -23,9 +23,10 @@ netd, `toyos::net` and std's ToyOS networking in the `rust/` fork. lossy transfers byte-exact, timeouts honoured, a departed client freeing everything in netd. **Exit**: each is a guest test against the host's own TCP stack, with a hash over every byte moved. -3. **TLS.** `rustls` with the `graviola` provider and the Mozilla root set +3. **TLS.** `rustls` with the `ring` provider and the Mozilla root set as a pinned data file in the signed image, used as published; what breaks is fixed in this repository's layers or carried upstream as a fork. + The `graviola` provider is an option to revisit later. **Exit**: an unmodified `rustls` client completes a handshake with a host-side server in the harness, and refuses a wrong name and an untrusted root. From 20df3005f2b02b3b011e56d2a663d9ef3fa55c0e Mon Sep 17 00:00:00 2001 From: japabu Date: Fri, 2 Oct 2026 11:31:00 +0200 Subject: [PATCH 4/7] Round 3: stage 3 targets ring and names the rustls-rustcrypto it leaves; the libc stage names main's issues Review https://github.com/ToyOSOrg/ToyOS/pull/679#issuecomment-5949107320. BLOCKER. 4a22b747c said main already builds rustls with ring. It does not. `git grep -n -e rustls -e ureq HEAD -- '*.rs' '*.toml'` finds one source that installs a provider, `userland/doom/build.rs:165`, a build script on the host, and it is `rustls-rustcrypto` 0.0.2-alpha; `tests/toyos-rust-tests` declares the same provider and no source under `tests/` names it. `ring` 0.17.14 is in both lockfiles as an optional dependency of `rustls-webpki` that no feature turns on: `cargo tree --locked --offline -e features --target all -i ring` prints nothing in `userland` and in `tests/toyos-rust-tests`, with and without `--all-features`. So no build compiles ring, for the host or for ToyOS. The orchestrator put that reading to the owner, who chose ring as the provider stage 3 moves ToyOS programs to, graviola staying a later option. Stage 3 of the internet-clients track now says ring as its target, names the `rustls-rustcrypto` it moves the tree off, records as open whether ring builds for the ToyOS target, and its exit fails on any other provider and on a manifest that still names `rustls-rustcrypto`. REMOVE. The self-hosting track no longer repeats that decision under "Decided": stage 3 is its one home. The sentence on the host's OpenSSL build goes too: no lockfile on main names an openssl package, and the host tools of that build are #629's rows. NOTE. With origin/main merged, #650's libc is main's: `15625e0cb` is an ancestor of HEAD and `userland/libc` is tree 4f0065904 at both. The libc stage says `userland/libc` at `15625e0cb` and names the three issue files main holds for what it restated: libc-refuses-what-toyos-cannot-yet-answer.md for `realpath`, a file `mmap` and record locks, libc-stat-answers-one-serial-number-for-every-file.md for file identity, and libc-close-of-a-socket-ends-the-process.md for socket descriptors. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm --- issues/build/toyos-builds-itself.md | 46 +++++++++---------- .../the-internet-clients-work-unchanged.md | 18 +++++--- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/issues/build/toyos-builds-itself.md b/issues/build/toyos-builds-itself.md index 30b5d9089ff..59bc559ade3 100644 --- a/issues/build/toyos-builds-itself.md +++ b/issues/build/toyos-builds-itself.md @@ -36,14 +36,12 @@ AArch64 one step behind, on `issues/kernel/toyos-runs-on-arm64.md`'s track. - LLVM ships as a binary seed. C is accepted because the compiler is LLVM, in programs too, important ones included. - cargo's C dependencies are accepted. -- ToyOS programs use rustls with ring (2026-10-02): stage 3 of - `issues/design-debt/the-internet-clients-work-unchanged.md`. - Perl and Python come to ToyOS. - Make it work, then optimise, then compare: no performance study now, and no comparison before a compilation inside ToyOS succeeds. **To build** (2026-10-01), in an order that is open. Where a stage names -libc's state it is pull request #650's at `15625e0cb`. +libc's state it is `userland/libc` at `15625e0cb`. - **The `libc` crate gains a ToyOS module**, checked by `ctest` against `userland/libc`'s headers. `libc` 0.2.189 has none (`rg -i toyos` over its `src` matches nothing) and is empty for an OS it does not know @@ -57,28 +55,30 @@ libc's state it is pull request #650's at `15625e0cb`. 3 of `issues/kernel/a-childs-end-is-an-event-and-a-parent-takes-its-children-down.md` builds none, because a descriptor is a handle and passes `FD_SETSIZE`; what `select` answers for such a descriptor is open. -- **libc gains what cargo's libraries call**, among them a `realpath` that - resolves, a file `mmap`, record locks and file identities served by fsd, - socket descriptors that are pollable and can be non-blocking, `setvbuf` and - `socketpair`. Read from each library's source and not run: SQLite's default - VFS takes `fcntl` record locks and keys them on `st_dev` and `st_ino`; - libgit2 opens every repository through `realpath` and reads packs through a - file `mmap`; curl and libssh2 wait on non-blocking sockets, curl's multi - handle wakes through a `socketpair`, and its TLS key log sets its buffering - through `setvbuf`. #650's libc defines no `setvbuf` or `socketpair`, refuses - `realpath`, a file `mmap` and a record lock, and files the refusals as a - defect. +- **libc gains what cargo's libraries call**, among them `setvbuf` and + `socketpair`, which it does not define; a `realpath` that resolves, a file + `mmap` and record locks + (`issues/build/libc-refuses-what-toyos-cannot-yet-answer.md`); file + identities + (`issues/build/libc-stat-answers-one-serial-number-for-every-file.md`), + served like the locks by fsd; and socket descriptors that are pollable and + can be non-blocking + (`issues/build/libc-close-of-a-socket-ends-the-process.md`). Read from each + library's source and not run: SQLite's default VFS takes `fcntl` record + locks and keys them on `st_dev` and `st_ino`; libgit2 opens every repository + through `realpath` and reads packs through a file `mmap`; curl and libssh2 + wait on non-blocking sockets, curl's multi handle wakes through a + `socketpair`, and its TLS key log sets its buffering through `setvbuf`. - **cargo's eight C libraries are cross-built for ToyOS**: curl, libgit2, libssh2, OpenSSL, SQLite, nghttp2, zlib and blake3. Compiled and linked - with the toolchain's clang against #650's C sysroot, the sources of nghttp2, - zlib and blake3 build with nothing undefined, and the other five stop on - headers, types or functions libc lacks. `openssl-src` 300.6.1 knows no ToyOS - target and refuses one it does not know (`src/lib.rs`), and `openssl-sys` is - a `cfg(unix)` dependency of `curl-sys` and `libssh2-sys`, which ToyOS is not. - Open until M4: whether cargo's OpenSSL is built for ToyOS through its Perl - `Configure`, or cargo takes curl's rustls backend there. On the host it is - decided (owner, 2026-10-02): OpenSSL's build runs under the host's own make - and shell, and `openssl-src` is not forked for it. + with the toolchain's clang against that libc's C sysroot, the sources of + nghttp2, zlib and blake3 build with nothing undefined, and the other five + stop on headers, types or functions libc lacks. `openssl-src` 300.6.1 knows + no ToyOS target and refuses one it does not know (`src/lib.rs`), and + `openssl-sys` is a `cfg(unix)` dependency of `curl-sys` and `libssh2-sys`, + which ToyOS is not. Open until M4: whether cargo's OpenSSL is built for + ToyOS through its Perl `Configure`, or cargo takes curl's rustls backend + there. - **The tools a self-build runs are built for ToyOS**: Perl and Python, ported to start a child by spawn and never by fork; brush as the POSIX `sh` (`issues/build/ninja-runs-every-command-through-a-bin-sh-toyos-does-not-have.md`); diff --git a/issues/design-debt/the-internet-clients-work-unchanged.md b/issues/design-debt/the-internet-clients-work-unchanged.md index 692e012edb9..09104d60460 100644 --- a/issues/design-debt/the-internet-clients-work-unchanged.md +++ b/issues/design-debt/the-internet-clients-work-unchanged.md @@ -23,13 +23,17 @@ netd, `toyos::net` and std's ToyOS networking in the `rust/` fork. lossy transfers byte-exact, timeouts honoured, a departed client freeing everything in netd. **Exit**: each is a guest test against the host's own TCP stack, with a hash over every byte moved. -3. **TLS.** `rustls` with the `ring` provider and the Mozilla root set - as a pinned data file in the signed image, used as published; what breaks - is fixed in this repository's layers or carried upstream as a fork. - The `graviola` provider is an option to revisit later. - **Exit**: an unmodified `rustls` client completes a handshake with a - host-side server in the harness, and refuses a wrong name and an untrusted - root. +3. **TLS.** `rustls` with the `ring` provider (owner, 2026-10-02; `graviola` + is an option for later) and the Mozilla root set as a pinned data file in + the signed image, used as published; what breaks is fixed in this + repository's layers or carried upstream as a fork. It moves the tree off + `rustls-rustcrypto` 0.0.2-alpha, the tree's one provider: doom's build + script installs it, on the host, and `tests/toyos-rust-tests` declares it + and names it in no source. Open: whether `ring` builds for the ToyOS + target; no build compiles it. + **Exit**: an unmodified `rustls` client on the `ring` provider completes a + handshake with a host-side server in the harness, and refuses a wrong name + and an untrusted root; and no manifest names `rustls-rustcrypto`. 4. **HTTP.** An HTTP crate used as published. **Exit**: an unmodified client fetches a body over HTTPS, following a redirect, byte-exact. 5. **The proof is `pkg install `** — the package track's HTTPS stage From 03b1abe08e5f6129d7007947295cb2ad1044ba11 Mon Sep 17 00:00:00 2001 From: japabu Date: Fri, 2 Oct 2026 12:10:36 +0200 Subject: [PATCH 5/7] Round 4: stage 3 owns the T14's HTTPS row, on ring; the guest-suite track points at it Review https://github.com/ToyOSOrg/ToyOS/pull/679#issuecomment-5949584054. BLOCKER. Stage 3 said `tests/toyos-rust-tests` declares `rustls-rustcrypto` and names it in no source, and asked for a tree in which no manifest names it. Those manifest lines are what #660 left of a ToyOS TLS client. Until `520c0d129` the tree ran `https_tls13` and `https_tls13_e1000e`: `tests/toyos-rust-tests/src/bin/https_fetch.rs:156` and `tests/https-server-host/src/main.rs:272` installed `rustls_rustcrypto::provider()`, and the judge in `tests/common/https.rs` held the fetch's digest and the refusals. The cut's diff of `tests/toyos-rust-tests/Cargo.toml` is empty, so the six lines `7c47e8930` added for that program stayed. Stage H of the guest-suite track owes the test back as a T14 row and has a row bring back what `main` had before the cut, so after round 3 two tracks disagreed about its provider and both asked for the same test. The orchestrator put that to the owner: the cut test, its provider, the track that owes it back, and that `ring` has never been built for the ToyOS target. Asked whether the test comes back on `rustls-rustcrypto` first or waits for `ring`, he chose to wait: `rustls-rustcrypto` does not come back into the tree, and the T14's HTTPS row stays out until `ring` builds for ToyOS. So stage 3 owns the row and says so, with the provider its program and judge come back on; its exit is that row and no longer a second test beside it. The guest-suite track's line keeps the names and the behaviour and points at stage 3, which deletes it. Whether `ring` builds for the ToyOS target stays open and untried. The six leftover lines are filed, as `main` filed the three `blockd_io` left: `git grep` for them under `tests/toyos-rust-tests` finds the manifest and its lockfile alone. NOTE. The exit's "no manifest names `rustls-rustcrypto`" reaches doom's build script, on the host, where the owner ruled on nothing. `ring` 0.17.14 has a build script and `cc` as a build-dependency (`build.rs:507`), and `rustls-rustcrypto` 0.0.2-alpha's manifest has neither, so what that script installs instead is the question of the pull request that changes it. The stage records it as open. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm --- ...-runs-only-what-no-cheaper-tier-reaches.md | 5 +++- ...-keeps-the-cut-https-tests-dependencies.md | 21 ++++++++++++++++ .../the-internet-clients-work-unchanged.md | 25 +++++++++++++------ 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md diff --git a/issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md b/issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md index 6d5c436518e..cec815db790 100644 --- a/issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md +++ b/issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md @@ -242,7 +242,10 @@ Host: `toyos-net-tcp`, `toyos-dns`, `toyos-mdns`, `toyos-swap`, `toyos-inspect`, - an `env` request is answered with a failure, never left unanswered; - a program whose connection goes is ended: no `spin` left running for the next exec to list. - metal `https_tls13` (and `https_tls13_e1000e`, the same fetch on the 82574): ureq and rustls - fetch over TLS 1.3 on the I219. + fetch over TLS 1.3 on the I219. Stage 3 of + `issues/design-debt/the-internet-clients-work-unchanged.md` owns this row and deletes this + line: it comes back there on the `ring` provider, not on the `rustls-rustcrypto` its program + and judge installed on `main` before the cut. - metal `sshd_files`: sftp moves files byte for byte. - unrepresentable `netd_seeds_its_stack`: the stack cannot be built without the kernel's seed. diff --git a/issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md b/issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md new file mode 100644 index 00000000000..16a150e441e --- /dev/null +++ b/issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md @@ -0,0 +1,21 @@ +--- +status: open +kind: tooling +opened: 2026-10-02 +--- + +# The guest test crate keeps the cut HTTPS test's dependencies + +`tests/toyos-rust-tests/Cargo.toml` names `ureq`, `rustls`, +`rustls-rustcrypto`, `rustls-pki-types`, `webpki-roots` and `sha2`, which +`7c47e8930` added for `tests/toyos-rust-tests/src/bin/https_fetch.rs`. +`520c0d129` deleted that program, and `git grep` for the six under +`tests/toyos-rust-tests` finds the manifest and its lockfile alone. The program +comes back with stage 3 of +`issues/design-debt/the-internet-clients-work-unchanged.md`, on another +provider. + +**Exit**: the six lines are gone, the lockfile follows, and +`cargo test --test toyos-build` is green. + +Owner: the orchestrator. diff --git a/issues/design-debt/the-internet-clients-work-unchanged.md b/issues/design-debt/the-internet-clients-work-unchanged.md index 09104d60460..445fd014c47 100644 --- a/issues/design-debt/the-internet-clients-work-unchanged.md +++ b/issues/design-debt/the-internet-clients-work-unchanged.md @@ -26,14 +26,23 @@ netd, `toyos::net` and std's ToyOS networking in the `rust/` fork. 3. **TLS.** `rustls` with the `ring` provider (owner, 2026-10-02; `graviola` is an option for later) and the Mozilla root set as a pinned data file in the signed image, used as published; what breaks is fixed in this - repository's layers or carried upstream as a fork. It moves the tree off - `rustls-rustcrypto` 0.0.2-alpha, the tree's one provider: doom's build - script installs it, on the host, and `tests/toyos-rust-tests` declares it - and names it in no source. Open: whether `ring` builds for the ToyOS - target; no build compiles it. - **Exit**: an unmodified `rustls` client on the `ring` provider completes a - handshake with a host-side server in the harness, and refuses a wrong name - and an untrusted root; and no manifest names `rustls-rustcrypto`. + repository's layers or carried upstream as a fork. This stage owns the + T14's `https_tls13` row, and stage H of + `issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md` + points here for it. The guest test of that name ran the tree's one ToyOS + program on `rustls`; the program and its judge's server installed + `rustls-rustcrypto` 0.0.2-alpha, and #660 cut both. The row comes back on + `ring` and waits for it; `rustls-rustcrypto` does not come back (owner, + 2026-10-02). Whether `ring` builds for the ToyOS target is open and + untried: no build compiles it. `rustls-rustcrypto` is still named by + doom's build script, which installs it on the host, and by a line the cut + left in `tests/toyos-rust-tests` + (`issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md`). + Open: what doom's build script installs instead. + **Exit**: `https_tls13` is a `METAL` row: on the T14's I219 an unmodified + `ureq` and `rustls` client on the `ring` provider fetches over TLS 1.3 + from a server the harness runs, and refuses a wrong name and an untrusted + root; and no manifest names `rustls-rustcrypto`. 4. **HTTP.** An HTTP crate used as published. **Exit**: an unmodified client fetches a body over HTTPS, following a redirect, byte-exact. 5. **The proof is `pkg install `** — the package track's HTTPS stage From 536e8048a52a6c84aa2a8e49ce8cebeb6cd45d00 Mon Sep 17 00:00:00 2001 From: japabu Date: Fri, 2 Oct 2026 12:30:51 +0200 Subject: [PATCH 6/7] Round 5: the sibling issue goes, stage 3 cites main's; one issue for the pcidev issues that cite cut tests The round-4 review (pull request #679, comment 5950322518) sent the branch back on one BLOCKER, one NOTE and two REMOVEs. BLOCKER. issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md was a second file for the issue main has as issues/build/the-guest-test-crate-depends-on-three-crates-no-test-uses.md: the same manifest, the same cut, the same owner and exit. It is deleted, and stage 3 of the internet-clients track cites main's file. Main's file is not renamed or widened here, by the orchestrator's ruling: that it names three of the dependencies no source uses is main's state, and the pull request that deletes the lines from tests/toyos-rust-tests/Cargo.toml corrects it. NOTE. Three issues about kernel/src/pcidev still give guest tests 520c0d129 deleted as tests that run. They are not this branch's to edit, so one file, issues/kernel/pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md, records it. Six names, not only the two HTTPS tests the review came for: all six were in tests/toyos.rs at 520c0d129^ and none is at 520c0d129 or outside issues/ at this head. One citation is cover nothing owes back: https_tls13_e1000e's judge asserted the count of BARs kept back and BarReferenceEmpty's words (tests/common/https.rs at 520c0d129^, lines 168-174), stage H of the guest-suite track lists that test for its fetch alone, and stage 3 deletes that line. REMOVE. Stage H's line no longer repeats which provider the row comes back on: stage 3 says it. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm --- ...-runs-only-what-no-cheaper-tier-reaches.md | 3 +- ...-keeps-the-cut-https-tests-dependencies.md | 21 ------------- .../the-internet-clients-work-unchanged.md | 2 +- ...cite-cut-guest-tests-as-cover-that-runs.md | 30 +++++++++++++++++++ 4 files changed, 32 insertions(+), 24 deletions(-) delete mode 100644 issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md create mode 100644 issues/kernel/pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md diff --git a/issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md b/issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md index cec815db790..2eed1c81742 100644 --- a/issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md +++ b/issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md @@ -244,8 +244,7 @@ Host: `toyos-net-tcp`, `toyos-dns`, `toyos-mdns`, `toyos-swap`, `toyos-inspect`, - metal `https_tls13` (and `https_tls13_e1000e`, the same fetch on the 82574): ureq and rustls fetch over TLS 1.3 on the I219. Stage 3 of `issues/design-debt/the-internet-clients-work-unchanged.md` owns this row and deletes this - line: it comes back there on the `ring` provider, not on the `rustls-rustcrypto` its program - and judge installed on `main` before the cut. + line. - metal `sshd_files`: sftp moves files byte for byte. - unrepresentable `netd_seeds_its_stack`: the stack cannot be built without the kernel's seed. diff --git a/issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md b/issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md deleted file mode 100644 index 16a150e441e..00000000000 --- a/issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -status: open -kind: tooling -opened: 2026-10-02 ---- - -# The guest test crate keeps the cut HTTPS test's dependencies - -`tests/toyos-rust-tests/Cargo.toml` names `ureq`, `rustls`, -`rustls-rustcrypto`, `rustls-pki-types`, `webpki-roots` and `sha2`, which -`7c47e8930` added for `tests/toyos-rust-tests/src/bin/https_fetch.rs`. -`520c0d129` deleted that program, and `git grep` for the six under -`tests/toyos-rust-tests` finds the manifest and its lockfile alone. The program -comes back with stage 3 of -`issues/design-debt/the-internet-clients-work-unchanged.md`, on another -provider. - -**Exit**: the six lines are gone, the lockfile follows, and -`cargo test --test toyos-build` is green. - -Owner: the orchestrator. diff --git a/issues/design-debt/the-internet-clients-work-unchanged.md b/issues/design-debt/the-internet-clients-work-unchanged.md index 445fd014c47..053f8a76a96 100644 --- a/issues/design-debt/the-internet-clients-work-unchanged.md +++ b/issues/design-debt/the-internet-clients-work-unchanged.md @@ -37,7 +37,7 @@ netd, `toyos::net` and std's ToyOS networking in the `rust/` fork. untried: no build compiles it. `rustls-rustcrypto` is still named by doom's build script, which installs it on the host, and by a line the cut left in `tests/toyos-rust-tests` - (`issues/build/the-guest-test-crate-keeps-the-cut-https-tests-dependencies.md`). + (`issues/build/the-guest-test-crate-depends-on-three-crates-no-test-uses.md`). Open: what doom's build script installs instead. **Exit**: `https_tls13` is a `METAL` row: on the T14's I219 an unmodified `ureq` and `rustls` client on the `ring` provider fetches over TLS 1.3 diff --git a/issues/kernel/pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md b/issues/kernel/pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md new file mode 100644 index 00000000000..fb036a9cd02 --- /dev/null +++ b/issues/kernel/pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md @@ -0,0 +1,30 @@ +--- +status: open +kind: tooling +opened: 2026-10-02 +--- + +# Pcidev issues cite cut guest tests as cover that runs + +`520c0d129` deleted the guest tests `https_tls13`, `https_tls13_e1000e`, +`bar_placement_is_proven`, `pci_function_is_exclusive`, `virtio_net_no_msix` and +`userdev_dma_fault`, and three issues still give them as tests that run: + +- `issues/kernel/a-claims-own-refusals-are-read-by-nothing.md` +- `issues/kernel/no-boot-reaches-the-refusal-that-keeps-a-bar-read-inside-a-declared-window.md` +- `issues/kernel/no-boot-reaches-the-retry-that-undoes-a-placement-nothing-answered.md` + +One citation is cover no tier holds and no track owes. The last two give +`https_tls13_e1000e` as what reads `Refusal::BarReferenceEmpty`: its judge +asserted how many BARs the boot kept back, and that refusal's words. Outside +`kernel/` and `issues/` no file names the refusal, its words or the kept-BAR +record, and stage H of +`issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md` lists +that test for its fetch alone, on a line stage 3 of +`issues/design-debt/the-internet-clients-work-unchanged.md` deletes. + +**Exit**: none of the three gives a test the tree lacks as one that runs, and +`BarReferenceEmpty` has a reader that reds when the refusal goes, or one of the +three lists it as unread. + +Owner: the orchestrator. From 16776357c95b226098814e3be21e63a89b5fb6a0 Mon Sep 17 00:00:00 2001 From: japabu Date: Fri, 2 Oct 2026 12:36:15 +0200 Subject: [PATCH 7/7] Round 5: the new issue names the two HTTPS tests the review named, and no others 536e8048a filed the three kernel issues' stale citations under six test names: the two HTTPS tests the review named, and bar_placement_is_proven, pci_function_is_exclusive, virtio_net_no_msix and userdev_dma_fault, which the same lines of the same three issues name and 520c0d129 also deleted. That was wider than the review's finding and than the round's brief, and its population is not closed: issues/boot-media/the-loader-does-only-what-must-precede-the-handover.md names bar_placement_is_proven as a test that passes, and which other issues name a test that commit deleted is nothing this round measured. The file is renamed to issues/kernel/kernel-issues-cite-the-cut-https-tests-as-cover-that-runs.md and names https_tls13 and https_tls13_e1000e alone. For those two the population is measured: under issues/ they are named by the three kernel issues, by this file, and by the two tracks that own the row. The other four names go to the orchestrator in the round's report. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm --- ...-cite-the-cut-https-tests-as-cover-that-runs.md} | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) rename issues/kernel/{pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md => kernel-issues-cite-the-cut-https-tests-as-cover-that-runs.md} (64%) diff --git a/issues/kernel/pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md b/issues/kernel/kernel-issues-cite-the-cut-https-tests-as-cover-that-runs.md similarity index 64% rename from issues/kernel/pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md rename to issues/kernel/kernel-issues-cite-the-cut-https-tests-as-cover-that-runs.md index fb036a9cd02..b96b872cc56 100644 --- a/issues/kernel/pcidev-issues-cite-cut-guest-tests-as-cover-that-runs.md +++ b/issues/kernel/kernel-issues-cite-the-cut-https-tests-as-cover-that-runs.md @@ -4,11 +4,10 @@ kind: tooling opened: 2026-10-02 --- -# Pcidev issues cite cut guest tests as cover that runs +# Kernel issues cite the cut HTTPS tests as cover that runs -`520c0d129` deleted the guest tests `https_tls13`, `https_tls13_e1000e`, -`bar_placement_is_proven`, `pci_function_is_exclusive`, `virtio_net_no_msix` and -`userdev_dma_fault`, and three issues still give them as tests that run: +`520c0d129` deleted the guest tests `https_tls13` and `https_tls13_e1000e`, and +three issues still give one or both as tests that run: - `issues/kernel/a-claims-own-refusals-are-read-by-nothing.md` - `issues/kernel/no-boot-reaches-the-refusal-that-keeps-a-bar-read-inside-a-declared-window.md` @@ -23,8 +22,8 @@ record, and stage H of that test for its fetch alone, on a line stage 3 of `issues/design-debt/the-internet-clients-work-unchanged.md` deletes. -**Exit**: none of the three gives a test the tree lacks as one that runs, and -`BarReferenceEmpty` has a reader that reds when the refusal goes, or one of the -three lists it as unread. +**Exit**: none of the three cites a test of either name that the tree lacks, +and `BarReferenceEmpty` has a reader that reds when the refusal goes, or one of +the three lists it as unread. Owner: the orchestrator.