Repository navigation
The self-hosting track carries what the owner decided and what is to be built; the internet clients' TLS stage targets ring, moves the tree off rustls-rustcrypto and owns the T14's HTTPS row - #679
Conversation
…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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
|
The investigation the track's numbers come from, as its author wrote it on 2026-10-01, with two local paths shortened to What ToyOS needs to self-host: cargo's C, Perl, the build chain, the seed, and deliveryThis is a read-only investigation, done on 2026-10-01 under the owner's binding decisions of the same day: C and C++ are accepted, cargo's eight C libraries are accepted, and Perl comes to ToyOS.
Marks. [m] is measured by a command run for this report. [e] is an estimate, and says from what. [r] is read from code, not run. Evidence and its roots:
Bottom line
1. The nine libraries1.1 Verdicts
1.2 Library noteszlib.
nghttp2. Pure computation: curl does its socket I/O through callbacks, and its only clock is blake3.
OpenSSL.
libssh2.
libgit2.
curl.
1.3 SQLite: is its locking correct on ToyOS?On #650: refused, loudly.
On main: silently incorrect. It compiles only once the headers gain
Wrong under both libcs:
What cargo relies on.
The alternatives.
For the stock VFS to be correct, the kernel or file server must provide POSIX advisory record locks with these properties:
It also needs a durable directory entry (#650's 1.4 PerlHow to build it.
Cross-building.
At run time.
1.5 The libc gaps, collected (under #650)
2. The bootstrap chain2.1 Milestone by milestoneM4: the guest builds ToyOS. It needs, in the guest:
ToyOS's stores are keyed by host:
M5: the fixed point. It adds:
2.2 LLVM, clang and lld: CMake, n2, PythonDoes LLVM strictly need Python with tests off? Yes, as it stands [r, verified]:
Every script needs only CPython's built-in core. Python can go entirely, by configuration plus fork hunks, each upstream-shaped, under about 100 lines in all [e]:
If Python stays, the Arrivals rule refuses CPython while a Rust tool does the job.
CMake 4.4.3 is C++. No Rust tool configures LLVM: the ledger says so, and the crate called
n2 does not compile for ToyOS today [r].
2.3 rustc through bootstrap, without PythonYes, it runs without Python [r]:
What bootstrap itself spawns [r]:
2.4 cargoThe C side is §1. Building cargo's OpenSSL on ToyOS needs Perl, make and The Rust side is the
Parallelism. std's 2.5
|
| tool | needed for | language | Rust replacement accepted? | port and its ToyOS gaps | effort [e] |
|---|---|---|---|---|---|
| LLVM, clang, lld | M2 to M5 | C++ | n/a | in flight (#661); libc gaps #650 lists; config.guess |
in progress |
| rustc bootstrap | M5 | Rust | yes, itself | run the binary directly, with no ./x |
small |
| n2 | M5, and M4 if the sysroot rebuilds | Rust | yes, in use | ToyOS spawn arm; /bin/sh; /dev/null |
days |
| CMake | M5, and M4 if the sysroot rebuilds | C++ | none | 62 libc symbols, 15 headers, iconv, libc++ filesystem, libuv spawn and platform port, select (curl and kwsys) |
weeks |
| Python | LLVM and libc++ configure and build | C | RustPython if it does the job | remove by LLVM hunks (under 100 lines); otherwise RustPython; otherwise CPython (10 symbols, config.sub) |
days |
| Perl | cargo's OpenSSL in the guest (M5) | C | none | stage 3; a spawn, popen and exec port of about 1k lines; hints; 6 libc functions | 2 to 4 weeks after stage 3 |
| make | openssl-src, Perl's build | C (GNU make 4.4.1) | no: omake 0.2.0 (9,672 downloads) and makers 0.8.0 (11,782) are serial and have no jobserver | upstream's posix_spawn path (in releases since 4.3, about 2020); patch its execvp re-exec; 8 libc functions (alarm ctime environ getlogin getpwnam putenv tmpnam wait) [m] |
about 1 week after stage 3 |
sh |
Perl's Configure, make recipes, n2, config.guess, system() |
Rust (brush) | yes (the ledger already ran config.guess under brush 0.4.0) |
ToyOS fork: sys and tokio arms, 6 unix-only builtins (exec, …), an ENOEXEC "run as script" fallback, the here-doc deadlock, backquote escaping. userland/shell (1,180 lines) is not POSIX: no if, for, case, $( ) or globbing |
1 to 2k lines, 2 to 3 weeks |
| coreutils | Configure, recipes | Rust (uutils 0.12.0) | yes | uucore uses rustix, which has no ToyOS backend; chmod is unix-only and libc refuses chmod, yet OpenSSL's install_dev runs chmod 644 under set -e |
1 to 2 weeks |
| sed | Configure | Rust (uutils sed 0.2.0) | yes: a measured drop-in for Perl's Configure | rustix fast path | days |
| grep | Configure | Rust (uu_grep 0.2.0) | yes, but it links Oniguruma C through onig_sys, and has 300 downloads | uucore arm | days |
| awk | Configure (32 calls) | — | unproven: frawk (19,206 downloads, last release 2023), zawk 29,611, none tried against Configure | otherwise port onetrue-awk (C) | a probe first |
| git | toyos-build (M4), not bootstrap from a tarball |
C, or gitoxide | gitoxide for reads (ledger) | a source-tree mode for the guest | — |
So the C and C++ tools in the chain: LLVM/clang/lld, CMake, Perl, GNU make, cargo's eight libraries, and awk unless a Rust awk proves out. CPython is avoidable.
2.7 What every ported C tool waits on
- Stage 3 of the child-process track:
posix_spawn,waitpidandenviron,system/popenthrough/system/bin/shell -c, and SIGCHLD imitation (Q3a). /dev/null. Perl's Configure aborts without it, and OpenSSL's Configure and n2 open it. Tracked asissues/filesystem/there-is-no-dev-null.md.- A POSIX
shat a fixed path. There is no/bin(kernel/src/vfs.rs:85-86) [r]. Stage 3'ssystem()names/system/bin/shell, which is not POSIX. #!launch. Nothing handles#!. Perl and make fall back to sh only on ENOEXEC; brush has no fallback [r]. Untracked.select. Stage 3 says "Noselect", while curl, in both cargo and CMake,#errors without it.
3. The seed, and what ToyOS rebuilds from it
3.1 The proxies
There is no ToyOS-hosted clang, lld or LLVM-backed rustc on this host. #661's build directories are gone, and find turned up only the macOS store's.
The release.
- Its asset is 768,410,436 bytes compressed and 2,929,419,280 uncompressed [m]. The Linux-host half is 2,148,176,421; the ToyOS-hosted Cranelift rustc half is 781,237,840.
- Eight binaries were extracted and stripped with
llvm-objcopy --strip-all[m].
The rest:
- This host's
rust/build/x86_64-unknown-toyos/stage2, built 2026-09-27: 775,836,744 bytes, 176,708,952 stripped [m]. - The Linux nightly of 2026-09-25 for cargo.
- macOS arm64 installs for CMake, Python, Perl and make. These are the weakest proxies, so every figure from them is [e].
3.2 Per component (x86-64; MB = 10^6 bytes)
| component | as built | stripped | basis |
|---|---|---|---|
librustc_driver, LLVM static (M3's shape) |
594.5 | 184.7 | [m] release Linux build. ToyOS's M3 driver is the same crates for another host [e ±10%] |
librustc_driver, Cranelift, ToyOS-hosted (today) |
486.1 | 107.4 | [m] release |
| Cranelift backend (goes at M3) | 55.2 | 13.2 | [m] local |
| cargo with its eight C libraries static | 36.0 | 36.0 | [m] Linux dist 2026-09-25 bin/cargo |
| clang | 144.0 | 122.8 | [m] release (macOS arm64 store: 104.7) |
lld (rust-lld; ld.lld is the same binary) |
91.8 | 78.6 | [m] release (macOS: 68.1) |
| llvm-ar, llvm-nm, llvm-objcopy | 38.1 | 34.2 | [m] release |
| clang resource headers | 14.8 | 14.8 | [m] release, 286 entries |
x86_64-unknown-toyos libraries |
181.1 | 181.1 | [m] release: Rust 155.2; C headers 12.6; libtoyos_c.a 10.3; libc++.a 3.1 |
x86_64-unknown-none (kernel) |
89.0 | 89.0 | [m] release |
x86_64-unknown-uefi (bootloader) |
132.3 | 132.3 | [m] release |
aarch64-unknown-toyos, -none-softfloat, -uefi (ARM64 image) |
397.5 | 397.5 | [m] release: 180.9 + 86.3 + 130.3 |
CMake: binary and share/cmake |
— | ~38.0 | [e] Homebrew 4.4.3 arm64: 14.3 + 23.7 |
| Perl and its core library | — | ~27.8 | [e] macOS system 5.34 |
| GNU make | — | ~0.2 | [e] /usr/bin/make |
| CPython and its stdlib, if not removed | — | ~48.3 | [e] miniconda 3.12: 6.9 + 41.4 |
For scale, upstream's Linux nightly, installed [m]:
- rustc + cargo + rust-std: 628.5 MB (rustc 423.7, with
libLLVM.so208.2 as a separate library; cargo 36.7; rust-std 168.2). - Adding llvm-tools: 845.1 MB.
- rustup-init: 21.1 MB.
3.3 Sources a self-build reads [m]
| tree | size |
|---|---|
ToyOS (git ls-files) |
42.7 MB, 2,220 files |
crates for M4: root and userland lockfiles |
489 registry packages; 529.2 MB unpacked (68.3 MB as .crate). windows* crates dominate, because cargo vendor takes every platform. 16 git packages not measured |
| rust fork, without tests and docs | 150.1 MB (223.0 tracked in all) |
| llvm-project, without tests, unittests, docs and benchmarks | 286.7 MB (2,023.8 tracked in all) |
cargo 7c83d4cc |
17.9 MB |
| crates for M5, adding the rust, library and cargo lockfiles | 1,204 packages, 1,146 of them present: 1,209.9 MB unpacked (180.1 as .crate). 58 not measured |
M4 reads 0.57 GB of sources and M5 1.71 GB.
The working space is far beyond today's DATA disks.
- A worktree's crate targets after
--build-onlyare 4.1 GiB, as recorded insrc/worktree.rs:27-30; worktrees that also ran the host suite measure 15.2 to 21.3 GiB [m]. - This host's accumulated bootstrap directories are
stage1-rustc26.0 GiB andstage2-rustc21.3 GiB [m]. That is many builds, not one. - Today's DATA disks:
cargo run's is 1 GiB (src/build.rs:1676) and the test profiles' is 128 MiB (tests/common/qemu.rs:882).
3.4 Seed versus rebuild
Ship (the seed, built on the host):
| item | size |
|---|---|
| M4, x86-64 | 873.5 MB: rustc 184.7, cargo 36.0, clang 122.8, lld 78.6, LLVM tools 34.2, clang headers 14.8, three targets' libraries 402.4. Measured proxies; rustc [e ±10%] |
| compressed at the release's zstd-3 ratio (26.2%) | about 229 MB [e] |
| ARM64 targets | +397.5 MB |
| M5 adds CMake, Perl and make | about 66 MB [e]; about 114 MB [e] with CPython |
| needs no seed binary | brush, uutils, n2 and gitoxide are Rust: the seeded cargo builds them in the guest |
Rebuild (what ToyOS makes from the seed):
- M4. The kernel (3.4 MB), the bootloader (0.33 MB) and ROOT's 26 programs (39.0 MB): 42.8 MB of binaries, signed into a 366.0 MB image. ROOT's 19 data files (26.6 MB) are copied, not built [m]: the primary's
target/and M2: CMake's ToyOS in every C sysroot, LLVM's two ToyOS arms, and LLVM, clang and LLD built for a ToyOS host by unchanged bootstrap as far as libc lets it #661'sroot: addinglines. - M5.
- It rebuilds the ~0.87 GB toolchain itself: LLVM, clang and lld; libc++; rustc and std for six targets; cargo with its eight libraries;
libtoyos_c.a. - Then it rebuilds again with those, to the fixed point.
- CMake, Perl and make can rebuild themselves in the guest, but the compilers' fixed point does not need that.
- It rebuilds the ~0.87 GB toolchain itself: LLVM, clang and lld; libc++; rustc and std for six targets; cargo with its eight libraries;
4. Ship in the default image, or download as packages?
4.1 pkg today
/system/bin/pkg (userland/pkg, 840 lines) installs a local .tar.gz into /apps/<name>/, which is on DATA beside /home, not on the A/B ROOT.
- It verifies against a
SHA256SUMSbeside the archive first (main.rs:62-73). - It asks the user, or takes
--yes, and writesmanifest.tomllast. - It has
install <file>,removeandlist(main.rs:31-43).
Against a toolchain it falls short:
- A 256 MiB inflate ceiling, all in memory.
MAX_INFLATEDis 256 MiB (main.rs:25).fs::readloads the whole archive (:68), andinflatebuilds the whole tar in aVec(:111-122).- Proposed split:
rust(rustc, cargo and the target's std) would be about 375.9 MB andllvm(clang, lld, tools and C sysroot) about 276.3 MB. Both exceed the ceiling.
- Proposed split:
- Only plain files and directories. No symlinks or hard links, no pax and no GNU long names (
archive.rs:1-12,64-74). A toolchain names one LLD asld.lldandrust-lld. - One program per package:
<name>/<name>(lib.rs:36-48). The shell'sPATHdefaults to/system/bin(userland/shell/src/main.rs:20-21). - Gzip only. ToyOS's own release is zstd.
- Not done yet: HTTPS (stage 2 of the package track), updates (stage 3) and signatures (stage 4). Installing by name is undesigned.
- No test reaches
pkg.pkg_install_gbaeand its fixture were deleted on 2026-10-01 (520c0d129). The guest-suite track names a metalpkg_install_gbae(issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md:125) thatorigin/maindoes not have [m]. - A package's own libraries cannot load. The loader searches
DT_NEEDEDlibraries only in/system/lib. Tracked asissues/filesystem/a-package-cannot-ship-its-own-libraries.md.- The rustc launcher needs
librustc_driver-*.so[m,llvm-readobj --needed-libs]. - clang and lld have no
DT_NEEDED(M2: CMake's ToyOS in every C sysroot, LLVM's two ToyOS arms, and LLVM, clang and LLD built for a ToyOS host by unchanged bootstrap as far as libc lets it #661'sllvm-readelf). - So rustc cannot run from a package until the loader changes.
- The rustc launcher needs
The direction is already set.
- The track's M2 is "clang, lld and their runtime built for ToyOS on the host and installed by
/system/bin/pkg" (issues/build/toyos-builds-itself.md:16-21). - The package track's stage 7 removes every app from the image: "
pkg install <url>brings them".
The host already consumes a content-addressed release.
toolchain-linux-x86_64-<16 hex of the trees>(src/release.rs:21-56) is installed by runners and linked withrustup toolchain link toyos …(issues/build/toyos-is-a-normal-target.md, stage 4).
4.2 rustup on ToyOS (rustup 1.29.1, read and not built)
It cannot run without a fork.
- The build:
build.rs:20-39aborts unlessTARGETis in theplatformscrate, which has no ToyOS. - The parser: the partial-triple parser lacks
toyos, sostableandnightlydo not resolve (dist/target_tuple.rs:15-53,dist/mod.rs:209-215). - The proxies:
run_command_for_dirhas a unix arm (exec) and a windows arm (status), and nothing for a third platform (command.rs:26-53). ToyOS has no exec, so each proxy would stay resident, the Windows model. - The compile: 13 compile blockers in 8 files.
- Crates with no ToyOS arm:
home,wait-timeout,fs_at,remove_dir_all,console,effective-limits,rustls-platform-verifierandrustls-native-certs. aws-lc-sys (C) is hard-coded as the TLS provider (download/mod.rs:630). - Port size: about 100 changed lines in rustup and 300 to 500 in crate arms [e], plus the
libccrate fork. - A run-time snag (inferred, not run): rustup opens directories as files in
Toolchain::exists, and ToyOS'sopennever yields a directory.
A ToyOS dist server works by the protocol, but not as ToyOS needs.
RUSTUP_DIST_SERVERtakes any URL, and target keys in the manifest are free strings.- But installable channels are only
stable|beta|nightly|1.x.ywith an optional date. ToyOS's fork would have to pose as an upstream channel name. - 1.29.1 verifies no signature; trust is TLS to the server.
- No third-party dist server for a non-upstream host was found.
The precedent is "our tool delivers, rustup links": Ferrocene's criticalup, espup, and ToyOS's own host flow. toolchain link makes a symlink under $RUSTUP_HOME/toolchains. A custom toolchain cannot component add or target add.
4.3 The image
The primary's bootable.img is 365,953,024 bytes [m]. GPT, read with od [m]:
| partition | size |
|---|---|
| ESP | 35.7 MB |
| slots | 1.0 MB |
| log | 35.7 MB |
| slot A | 35.7 MB |
| root A | 73.4 MB |
| slot B | 35.7 MB |
| root B | 146.8 MB |
Every byte in ROOT is paid three times. Slot B's ROOT is sized at twice slot A's (src/build.rs:1661).
- ROOT holds 65.7 MB [m].
- The M4 seed in ROOT would make the image about 3.0 GB (366 + 3 × 873.5 MB [e from the measured rule]).
- Every
cargo runwould write and sign that, and everyssh … updatewould resend it.
What hosted-rustc = true would ship today:
- It is refused until its licences are read (
src/build.rs:1102-1104). - It copies every
lib/*.soof the hosted stage2 (src/build.rs:2193-2201). In the release that includes 17 proc-macro dylibs (179.6 MB) that the Linux stage2 does not carry [m], plus unstripped binaries.
4.4 The options against the principles
| in the default image | pkg packages on DATA |
rustup and a ToyOS dist server | |
|---|---|---|---|
| image size | about 3.0 GB [e] | unchanged, 366 MB | unchanged |
| OS and toolchain updates | coupled; each OS update resends about 0.87 GB | independent | independent |
| development ergonomics (iteration speed) | every image write is about 8 times larger | unchanged | unchanged |
| "existing Rust just works" | cargo build works; no rustup, so rust-toolchain.toml is ignored |
cargo build works on PATH; channel = "toyos" works once rustup links |
most complete, after the port and a server |
| "Rust is first class" | — | rustup arrives later as a front end | yes, but its channel model names upstream releases only |
| one installer (package track; the owner's "one mechanism" ruling for children) | a second path | pkg alone |
a second installer and index |
| M4 and M5 tests | toolchain always present | installed by the test, or on a prepared DATA disk | needs the rustup port, TLS and a server |
| work before usable | licences, stripping, ×3 | pkg streaming and links; many programs and PATH; the loader's package-local DT_NEEDED; HTTPS for <url> |
all of the pkg column's loader work, plus the rustup fork, the libc crate, TLS-root arms and a server |
4.5 The tests
M4 and M5 need the toolchain, and a DATA disk sized for the build. M4 needs about 6 GB [e]: 0.87 toolchain, 0.57 sources, 4.1 GiB of targets. M5 needs tens of GB [e].
The variable is the disk, not the OS. A self-host profile boots the default image with a large sparse DATA disk carrying the package archives. Its first step is pkg install <archive> --yes, which also gives pkg the end-to-end test it lost.
How the guest reaches the archives is the track's choice:
- a host-served URL, once HTTPS lands (the package track's own harness design);
- or a DATA volume the host lays out with the bcachefs writer that already writes ROOT. fsd mounts a volume of ours, or formats a designated one (
userland/fsd/src/data.rs:213-229).
4.6 Recommendation
One design: a small default image, the toolchain as pkg packages, a self-host disk and not an image variant, and rustup later as a front end that links.
-
The default image carries no toolchain. ROOT stays at about 66 MB. Reasons:
- The ×3 slot rule would make the image about 3 GB.
- Iteration speed: development ergonomics above all.
- A/B updates would resend a gigabyte.
- The track's M2 and the package track's stage 7 already point away from the image.
-
The toolchain is a set of content-addressed packages, built by the same CI job and under the same tree-hash tag scheme as the host release (
src/release.rs):rust: rustc, cargo, std forx86_64-unknown-toyos. About 376 MB.llvm: clang, lld under both names,llvm-ar/nm/objcopy, the clang headers, and the C sysroot with libc++. About 276 MB.rust-std-x86_64-unknown-none(89.0 MB) andrust-std-x86_64-unknown-uefi(132.3 MB), the kernel and bootloader targets that only a ToyOS build needs.- The ARM64 targets later.
- An M5 kit:
cmake,make,perl, andbrushanduutilsbuilt in the guest. Python only if the LLVM hunks are refused.
Before the packages work, in order:
- pkg streams instead of buffering, lifts the 256 MiB ceiling, and gets links, many programs per package, and
PATH; - the loader finds a package's own
DT_NEEDEDlibraries, without which rustc cannot start; - HTTPS (package stage 2) enables
pkg install <url>; - signatures (stage 4) follow.
-
Self-host tests use the default image plus a self-host DATA disk (§4.5). No second OS image is signed, flashed or kept in step.
-
rustup is not shipped and not served. Once the
libccrate fork, the TLS-root arms and its own arms exist, a ported rustup links the pkg-installed toolchain astoyos(rustup toolchain link toyos /apps/rust). That mirrors the host's flow, criticalup and espup, sochannel = "toyos"in the repository'srust-toolchain.tomlresolves the same way in the guest. A ToyOS dist server would force a fork to pose asnightly, and it would duplicatepkg's index.
Findings for the tracker
Untracked defects, each found by searching issues/:
- The
libccrate has no ToyOS module, and noToyOSOrg/libcfork exists. It gates cargo's-syscrates, rustup, n2's spawn and RustPython. - std's ToyOS
File::lock,lock_shared,try_lock,try_lock_sharedandunlockanswerOk(())and lock nothing (RUST@aca5f527/library/std/src/sys/fs/toyos.rs:566-580). Cargo's package-cache lock is a no-op on ToyOS. - ToyOS has no
#!script launch and no ENOEXEC fallback. - n2 has no ToyOS arm, so it does not compile for the guest [r].
- M2's ToyOS-hosted LLVM records
LLVM host triple: arm64-apple-darwin27.0.0. Bootstrap passes noLLVM_HOST_TRIPLE, andconfig.guesshas no ToyOS case. collect_hosted_rustcwould ship unneeded bulk. It would put 17 proc-macro dylibs (179.6 MB) and unstripped binaries into ROOT (src/build.rs:2193-2201).pkghas no test. Its guest test went in520c0d129, and the metal row the guest-suite track names does not exist.
Upstream-shaped, for the forks:
- curl-sys: defines
HAVE_POLL_FINE, which curl no longer reads, instead ofHAVE_POLL; also theHAVE_STERRROR_Rtypo (build.rs:403,435). - brush: a here-doc larger than the pipe deadlocks (
interp.rs:1996-2014), and\$inside backquotes is not unescaped (word.rs:1188). - perl-cross: for 5.44 it omits
d_nanosleep, and it reports functions present that answer ENOSYS. - LLVM: the stale comment "cmake has no relpath function" (
AddLLVM.cmake:1860), since LLVM requires CMake 3.20.
Rules for the orchestrator to place. These are general, not about one issue:
- A libc link test cannot tell an ENOSYS refusal from a working function, so a configure script run against ToyOS's libc must be told which functions are refused.
|
Round 1, head The edit outside the named file, BLOCKER
NOTE
REMOVE
SEND BACK |
…o is the tooling track's Answers the review of c280ece 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 15625e0, and says of that libc what it said of main's: `git grep -w` for setvbuf, socketpair and select over userland/libc at 15625e0 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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
|
Round 2, head Earlier BLOCKERs:
Net BLOCKER
NOTE
REMOVE
SEND BACK |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
…es; the libc stage names main's issues Review #679 (comment). BLOCKER. 4a22b74 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 4f00659 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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
|
Round 3, head Earlier BLOCKERs:
Net BLOCKER
NOTE
REMOVENone. SEND BACK |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
…rack points at it Review #679 (comment). 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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
|
Round 4, head Earlier BLOCKERs:
Net The round's question about the four judges (expired certificate, TLS 1.2 peer, downgrade, cleartext redirect) is no finding on this branch. The exit at BLOCKER
NOTE
REMOVE
SEND BACK |
…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 520c0d1 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 520c0d1^ and none is at 520c0d1 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 520c0d1^, 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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
…d no others 536e804 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 520c0d1 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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
|
Round 5, head Earlier BLOCKERs:
Net What the round found beyond its fence ( BLOCKERNone. NOTENone. REMOVE
LAND AFTER NAMED CHANGES |
Cargo.lock alone conflicted: both sides kept, main's pcap-file and byteorder_slice beside this branch's ureq, flate2 and tar trees, and cargo left the result as it resolves the merged manifests. Against origin/main the lockfile differs by what it did before the merge, +801 -6. #659 moves the rust gitlink and the kernel, so the freestanding and sysroot keys move with it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
Six conflicts. - rust: the gitlink is 01b8626673f, the fork's main (012fdce3c79, which holds main's pin 6c7f996a4fe) with this branch's 61adcea7362 merged into it. Over 6c7f996a4fe it carries `configure_cmake`'s `toyos` arm and `src/llvm-project` at ceaf0fbb844, and nothing else: 012fdce3c79 still held the three cross-platform bootstrap commits 61adcea7362 reverts. - src/sysroot.rs: main's two keys. `clang::CMAKE` joins the sysroot's, beside the C++ runtime's options, and `RECIPE` is main's text with CMake's description of ToyOS named in it, at a number neither side had. - src/libc.rs: `build_c` writes the CMake files and then links main's probe. - src/libcxx.rs: main moved n2 out of the file; the configure through the sysroot's toolchain file is this branch's. - issues/build/toyos-builds-itself.md: main's Decided and To build sections whole. Main dropped the signal-set calls from the Compile bullet this branch had already replaced, with Configure and Link, by its pointer to the bootstrap issue; the pointer stays. - issues/build/bootstrap-cannot-build-llvm-clang-and-lld-for-a-toyos-host.md: this branch's body. Main's one hunk took `alarm` and the signal-set calls out of a paragraph this branch had deleted; what the build stops on at this tree is measured and written in the commits that follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm
The owner's self-hosting plan of 2026-10-01 lived only in the orchestrator's notes.
issues/build/toyos-builds-itself.mdnow carries what was decided and what is to be built, and stage 3 ofissues/design-debt/the-internet-clients-work-unchanged.mdcarries the TLS provider the owner chose on 2026-10-02 and owns the T14's HTTPS row. Issue files only: no code, prompt orCLAUDE.md. Net+123 −9in five files (git diff --shortstat origin/main...16776357c).What changed, per decision
libccrate's ToyOS module checked byctestagainst our headers;selectin 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;pkgpast 256 MiB with links, and a loader that finds a package's libraries; the toolchain aspkgpackages and an image without it.https_tls13row, and moves the tree offrustls-rustcrypto. It named the graviola provider, which the tree does not install. The owner chose ring, graviola staying an option for later, and then chose that the HTTPS test The guest suite keeps the 21 tests only a booted machine answers; the rest are metal, host or tracked #660 cut comes back on ring and waits for it; both answers are under "The sources". The stage says ring as its target, says it owns the row and which provider its program and its judge's server come back on, and records as open and untried whether ring builds for the ToyOS target. Its exit was a handshake and two refusals "with a host-side server in the harness", which is the cut judge, filed by the guest-suite track as a metal row: one test under two tracks. The exit is now that row on the ring provider, and a tree in which no manifest namesrustls-rustcrypto.https_tls13line had the row come back as every row there does, on whatmainhad before the cut, which wasrustls-rustcrypto. It keeps both names and the behaviour, and now says stage 3 owns the row and deletes the line. One track owns the test and the other points at it.rustls-rustcrypto" is the tree's rule and not the owner's ruling where it reaches doom's build script: he ruled on ToyOS programs, that script runs on the host, and the clause reaches it because rootCLAUDE.mdtakes only general and widely used crates and a second provider beside ring would be a sibling. What the script installs instead is open in the stage. ring has a build script that compiles C throughcc, andrustls-rustcrypto's own manifest has none (measured below), so that is Arrivals' question for the pull request that changes it.tests/toyos-rust-testsis cited asmain's issue. Stage 3 namesissues/build/the-guest-test-crate-depends-on-three-crates-no-test-uses.md, the filemainhas for that manifest's dependencies no test uses.issues/kernel/kernel-issues-cite-the-cut-https-tests-as-cover-that-runs.md. They givehttps_tls13orhttps_tls13_e1000eas a test that runs, and they are not this branch's files to edit. One citation is cover the cut lost and no track owes back:https_tls13_e1000e's judge asserted how many BARs the boot kept back andRefusal::BarReferenceEmpty's words, stage H's line names that test for its fetch alone, and stage 3 deletes that line.issues/build/the-tooling-is-a-review-prompt-and-three-workflows.mdsays that onmain. His answer about OpenSSL's build on the host describes a build no lockfile onmainhas (git grep -n '^name = "openssl' HEAD -- '*.lock', exit 1): it arrives with The toolchain is a content-addressed store built in one shared fork checkout; buildlock, keystore, worktree and identity go #629, whose rows inissues/build/the-build-runs-host-tools-outside-rust-and-qemu.mddeclare its host tools. The track keeps the question that is its own, how cargo's OpenSSL is built for ToyOS.flockis not in the libc stage, though the notes' consequence names it: no library cargo builds for ToyOS calls it (measured below).select: a descriptor is a handle and passesFD_SETSIZE", which reads as libc having none. It now says the stage builds none and names this track as its owner.Stages of this track, not files of their own
The notes' TODO was to file cargo's native libraries on ToyOS and the libc gaps.
issues/README.mddecides it:mainfiles the defects of its libc. The libc stage names those files instead of restating them or filing a second:issues/build/libc-refuses-what-toyos-cannot-yet-answer.mdforrealpath, a filemmapand record locks,issues/build/libc-stat-answers-one-serial-number-for-every-file.mdfor file identity, andissues/build/libc-close-of-a-socket-ends-the-process.mdfor socket descriptors.setvbuf,socketpairandselectare in none of the three and libc defines none of them, so the stages say that themselves.679-r5/cited-paths.txt: 42 paths, none missing).The sources
The orchestrator's notes of 2026-10-01, quoted:
Since those notes, on 2026-10-02 and relayed by the orchestrator, the owner:
openssl-srcis not forked;rustls-rustcrypto0.0.2-alpha, in doom's build script on the host, declared and unused intests/toyos-rust-tests, and no ToyOS program names rustls in source. Asked which provider the stage moves ToyOS programs to, ring, graviola, orrustls-rustcryptofor now, he chose ring, graviola staying an option for later.https_tls13, on rustls withrustls-rustcrypto. The guest suite keeps the 21 tests only a booted machine answers; the rest are metal, host or tracked #660 cut it.issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.mdowes it back as a T14 row. And ring has never been built for the ToyOS target.rustls-rustcryptofirst, with ring at stage 3, or waiting for ring. He chose to wait for ring:rustls-rustcryptodoes not come back into the tree, and the T14's HTTPS test stays out until ring builds for the ToyOS target. Whether ring builds for ToyOS is recorded as untried and open, with no estimate.The notes' last sentence is a landing queue, and it is not in the issue: it turns false at a landing that need not touch the file.
The investigation those decisions rest on is posted whole as the first comment on this pull request. Its own probe logs were in a temporary directory and are gone; the rows below marked "not re-run" stand on the report.
Every number and fact, and where it comes from
Logs are under
/Users/jan/.claude/jobs/2280e09e/tmp/scratchpad/orch/. One named by a bare file name is in679-r4/; those of rounds 2, 3 and 5 are named with their directory,679-r2/,679-r3/and679-r5/. "At this head" is16776357c, which hasorigin/main7e62d3553merged in ate7476a1c6, and every row that says it was re-run there, in679-r5/at-head.txtunless the row names another log. Since round 4's head03b1abe08the tree differs in 48 paths, #664's 44 and this round's four underissues/. The rootCargo.lockandCargo.tomland two new manifests are among them, and nothing underuserland,tests,rust,kernelorsrc(git diff --stat 03b1abe08 HEAD -- userland tests rust kernel srcprints nothing, exit 0).libc0.2.189 has no ToyOS module and is empty for an unknown OSrg -l -i toyosoverlibc-0.2.189/src, exit 1;src/lib.rs:307ToyOSOrg/libcdoes not existgh api repos/ToyOSOrg/libc, HTTP 404curl-sys,libssh2-sys,libgit2-sysimportlibc's C types unconditionallycurl-sys-0.4.90 lib.rs:14-18,libssh2-sys-0.3.2 lib.rs:11-12,libgit2-sys-0.18.7 lib.rs:7#errors withoutselect;select.cpolls only underHAVE_POLL;curl-sys0.4.90 does not define itcurl/lib/curlx/wait.c:26-28;curl/lib/select.c:205,235;build.rs:393,400,435definesHAVE_POLL_H,HAVE_SELECTandHAVE_POLL_FINE, andrg HAVE_POLL_FINEover curl'slibandinclude, exit 1userland/libcat15625e0cbismain's libcgit merge-base --is-ancestor 15625e0cb HEAD, exit 0;git rev-parseofuserland/libcat15625e0cb,HEADandorigin/mainanswers tree4f0065904three timessetvbuf,socketpairorselectgit grep -n -w -e flock -e realpath -e setvbuf -e socketpair -e select HEAD -- userland/libc/, exit 0, three lines:struct flockininclude/fcntl.h:37,realpath's declaration ininclude/stdlib.h:55and its refusal atsrc/refused.rs:142git diff --stat 20df3005f HEADover them prints nothing, at this head):libc-refuses-what-toyos-cannot-yet-answer.mdlistsrealpath,mmapof a file, a record lock andF_SETFL;libc-stat-answers-one-serial-number-for-every-file.mdisst_devandst_ino;libc-close-of-a-socket-ends-the-process.mdsays a socket's descriptor is no handle, andpollhands every descriptor to the poller as one (userland/libc/src/posix_io.rs:606, at this head). Read, not runflock, so it is not in the stagerg -n '\bflock\s*\('over the eight crates' sources, exit 0, 26 lines (679-r2/flock-callers.txt); outside comments and Ruby tests they are SQLite'srobust_flockand mruby'sfile.c. SQLite's,sqlite3/sqlite3.c:42804,42808, is inside#if SQLITE_ENABLE_LOCKING_STYLE(:42796to:42961), which:40253-40259defines 1 only under__APPLE__andlibsqlite3-sys0.38.1'sbuild.rsnever sets (rg LOCKING_STYLE build.rs, exit 1;679-r2/sqlite-locking-style.txt); the crate'ssqlcipher/sqlite3.chas the same call under the same guard (:41949inside:41941to:42106). mruby's,nghttp2/third-party/mruby/mrbgems/mruby-io/src/file.c:94,626, is in a directorylibnghttp2-sys0.1.13'sbuild.rsdoes not name (rg 'mruby|third-party' build.rs, exit 1). cargo's own package-cache lock is std'sFile::lock, per the investigationsetvbufrg -n '\bsetvbuf\s*\('over curl'slib, libgit2'ssrc, libssh2'ssrcandsqlite3.c, exit 0, two lines, bothcurl/lib/vtls/keylog.c:46,48.679-r2/setvbuf-callers.txtcurl/lib/multi.c:315,Curl_wakeup_init, was re-read7cc52ed0ef46b1d5ofuserland/libcat15625e0cb. Not re-runopenssl-src300.6.1 has no ToyOS target and refuses an unknown onerg -i toyos src/lib.rs, exit 1;src/lib.rs:426openssl-sysis acfg(unix)dependency of both; ToyOS is notunixcurl-sys Cargo.toml:82,libssh2-sys Cargo.toml:59. At this head therustgitlink is3f6050fc8; run in round 4 against that commit,git -C rust grep -n -e families -e unix 3f6050fc8 -- compiler/rustc_target/src/spec/base/toyos.rsexits 1 on a file that exists (toyos-family.txt)/dev/nullposix_spawnmatches nothingMAX_INFLATEDis 256 MiB, the whole archive is inflated in memory, links are refuseduserland/pkg/src/main.rs:25,68,111-122,archive.rs:10-12librustc_driver184.7 MB, clang 122.8 MB, lld 78.6 MB,x86_64-unknown-toyoslibraries 181.1 MBtoolchain-linux-x86_64-48dd24f826263d6cstripped withllvm-objcopy --strip-all, and file sizes. Not re-run;gh release viewshows the release and its 768,410,436-byte asset. They are the Linux-host build's, a proxy, and the issue says solibrustc_driveras neededllvm-readobj --needed-libs. Not re-runhttps_tls13ran the tree's one ToyOS program on rustls; the program and its judge's server installedrustls-rustcrypto; #660 cut bothgit grep -n rustls_rustcrypto 520c0d129^ -- '*.rs', exit 0, three lines:tests/toyos-rust-tests/src/bin/https_fetch.rs:156,tests/https-server-host/src/main.rs:272anduserland/doom/build.rs:165.git grep -n -e rustls -e ureq 520c0d129^ -- '*.toml', exit 0, 14 lines in four manifests:tests/toyos-rust-tests, the two host crates of that test, and doom's build-dependencies.git grep -n https_tls13 520c0d129^ -- tests/ src/has both names registered attests/toyos.rs:657,661.git show --stat 520c0d129deleteshttps_fetch.rs,tests/common/https.rs,tests/https-server-hostandtests/https-fetch-host; it is an ancestor of06788146b, #660's merge of 2026-10-01 09:19 UTC.https-test-history.txt,cut-commit.txttests/common/https.rsat520c0d129^, kept ascut-https-judge.rs: the fetched body's length and SHA-256 equal to the server's and to the same source built for the host, and six refusals,hostname-mismatch,certificate-expired,tls12-refused,downgrade-refused,plain-httpandunknown-authority. Read, not runrustls-rustcryptointests/toyos-rust-testsgit diff 520c0d129^ 520c0d129 -- tests/toyos-rust-tests/Cargo.tomlprints nothing, exit 0.git show --numstat 7c47e8930 -- tests/toyos-rust-tests/Cargo.toml: seven lines added and none removed, the dependenciesureq,rustls,rustls-rustcrypto,rustls-pki-types,webpki-rootsandsha2, and a[patch.crates-io]line for thegetrandomfork (679-r5/7c47e8930-manifest.txt). At this headgit grep -n -e ureq -e rustls -e webpki -e sha2 -e pki_types HEAD -- tests/toyos-rust-tests ':!tests/toyos-rust-tests/Cargo.lock', exit 0, six lines, allCargo.toml:26-31520c0d129deletedhttps_tls13andhttps_tls13_e1000e, and three kernel issues give one or both as a test that runsgit grep -n -w -e https_tls13 -e https_tls13_e1000eovertests/toyos.rs: eight lines at520c0d129^, exit 1 at520c0d129. At this head: outsideissues/, exit 1; underissues/, exit 0, ten lines, in the two tracks, the new file,a-claims-own-refusals-are-read-by-nothing.md:27-28,no-boot-reaches-the-refusal-that-keeps-a-bar-read-inside-a-declared-window.md:25andno-boot-reaches-the-retry-that-undoes-a-placement-nothing-answered.md:14,30.679-r5/round5-facts.txthttps_tls13_e1000e's judge read the kept-BAR record andBarReferenceEmpty's words, and nothing outside the kernel names them nowtests/common/https.rs:68,86,168-174at520c0d129^(cut-https-judge.rs): onekeeps BARline on the e1000e bench and none on the virtio one, and the wordsanswers all-zeroes or all-ones where firmware put it. At this headgit grep -n -e BarReferenceEmpty -e 'keeps BAR' -e 'all-zeroes or all-ones' HEAD -- ':!kernel/' ':!issues/', exit 1; underkernel/, exit 0, six lines ofkernel/src/pcidev/mod.rs(679-r5/round5-facts.txt). Stage H's line hashttps_tls13_e1000eas "the same fetch on the 82574". The judge read, not runrustls-rustcrypto, on the hostgit grep -n -e rustls -e ureq HEAD -- '*.rs' '*.toml', exit 0, 12 lines. The only.rslines areuserland/doom/build.rs:161-167, and:165isrustls_rustcrypto::provider();userland/doom/Cargo.toml:20-21are under[build-dependencies].cargo tree --locked --offline --target all -i rustls-rustcrypto, run in round 4 off lockfiles and manifests that have not changed since, exit 0 in both workspaces: a build-dependency of doom inuserland, a dependency oftoyos-rust-testsin the other (provider-trees.txt)ringgit grepfor the package namesring,rustls-rustcrypto,graviola,aws-lc-rsandopenssl*over every*.lock, the root one #664 changed among them, exit 0, findsringandrustls-rustcryptoinuserland/Cargo.lockandtests/toyos-rust-tests/Cargo.lockand none of the others.cargo tree --locked --offline -e features --target all -i ring, with and without--all-features, in both workspaces, run in round 4 off those two lockfiles: exit 0 andnothing to print(provider-trees.txt). In both lockfilesringis 0.17.14 and the only packages that list it are the tworustls-webpkiversions, andrustlsdoes not: read in round 3 (679-r3/ring-dependents.txt,679-r3/tls-locks.txt) off lockfiles that have not changed. Soringis locked as an optional dependency ofrustls-webpkithat no feature turns on, and nothing compiles it for the host or for ToyOSringbuilds for the ToyOS target is untriedgit log -G'("ring"|^ring |aws-lc|graviola)' HEAD -- '*.toml', exit 0, four commits, whose matching lines are a comment intests/ssh-client-host/Cargo.tomland a note inforks.toml, never a dependency or a feature (ring-in-manifest-history.txt); at this head the same four commits, and the same pattern over every manifest exits 1. A default feature of some dependency would not show in that searchrustls-rustcrypto's own manifest has no build scriptring-0.17.14/Cargo.toml:17isbuild = "build.rs"and:252is[build-dependencies.cc];build.rs:507-508iscc::Build::new().rustls-rustcrypto-0.0.2-alphahas nobuild.rs, andgrep -e '^build' -e cc -e ringover itsCargo.tomlexits 1.leftovers-and-ring.txt. Its dependencies' build scripts were not read. This is in the body and the commit message, not in the issueLeft out because the investigation only estimated them: the seed's total, the package sizes, the image with a toolchain in ROOT, the port sizes and durations, the DATA disk a self-build needs.
Unsure of
main's stage 3 did, and the guest-suite line names the fetch. The cut judge held four refusals more: an expired certificate, a TLS 1.2 peer, a downgrade and a redirect to cleartext. Neither track's text says whether the row brings those back, and this round did not decide it.main'sblockd_iofile; nobody was asked.Gates
At
16776357c, withorigin/main7e62d3553merged in:cargo run -- --ci host > ci-host.log 2>&1; echo EXIT=$?:EXIT=0. Log/Users/jan/.claude/jobs/2280e09e/tmp/scratchpad/orch/679-r5/ci-host.log, 6887 lines, last line[ci] Host: 59 step(s), all green; exit inci-host.exitbeside it,EXIT=0.git status --porcelain --ignore-submodules=noneafter it: nothing, exit 0.git merge-tree --write-tree origin/main HEAD: exit 0, no conflict (679-r5/mergetree-main.txt).git merge-tree --write-tree HEAD <head>, logs679-r5/mergetree-659.txtand679-r5/mergetree-661.txt. A parent's end takes its children down: every end walks its subtree and is published after it, a spawn past its commit lands, and a refused spawn spends no pid #659 at1e9cb8c77: exit 0. M2: CMake's ToyOS in every C sysroot, LLVM's two ToyOS arms, and LLVM, clang and LLD built for a ToyOS host by unchanged bootstrap as far as libc lets it #661 at03cb0453b: exit 1 on six paths, the same six it conflicts in againstorigin/mainalone. One isissues/build/toyos-builds-itself.md, whose three blobs in that merge are the ones round 3 compared (53db17f65,59bc559ad,efacf81a8;main's is stillee911f995): so round 3's reading stands: the conflict is "What stops M2", lines 126 to 138 of the merged file, byte-identical againstorigin/mainalone, and this branch's lines there are 35 to 103.Not recorded here
rustandllvmpackage split, the self-host DATA disk, rustup later as a front end, Python out of LLVM's build (the owner decided against).File::lock, no#!launch, n2 without a ToyOS arm, the M2 LLVM's host triple,collect_hosted_rustc's bulk,pkgwithout a test, and the missinglibcmodule, which is now a stage.main'sissues/build/the-guest-test-crate-depends-on-three-crates-no-test-uses.mdundercounts and is not corrected here:git grep -c -w <crate> HEAD -- tests/toyos-rust-tests/srcexits 1 for sixteen of the manifest's twenty-two dependencies where the file names three, the six7c47e8930added among the sixteen, and the file names no[patch.crates-io]line, of whichgetrandom's hasrand_coreandringas its only locked dependents (the review's measurement, re-run at this head in679-r5/manifest-unused.txt); the pull request that deletes those lines from the manifest corrects it.🤖 Generated with Claude Code
https://claude.ai/code/session_013UDZQ6fSKw14e4w2TKTRfm