Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
status: open
kind: tooling
opened: 2026-10-03
---

# Only a metal or debug run builds every binary of the guest test crate

`build_toyos_bins` (`src/build.rs`) is the one build of every binary under
`tests/toyos-rust-tests/src/bin`. It is reached only through
`build_shared_bins` (`tests/toyos.rs`), which runs only under `--metal` and
`--debug`, and no workflow passes either flag. The guest suite builds two of the crate's binaries, each
alone with `build_toyos_bin`'s `--bin`: `abuse_readonly_copyout` and
`panic_halts_first`. `cargo run -- --ci host` builds none of them.

So a test binary that stops compiling lands green, and the next metal session
panics in `cargo_build` before its first boot. At `154054bf5` the crate's
manifest had no `toyos-window`, which `src/bin/window_refusal.rs` imports as
`window`: building every binary as `build_toyos_bins` builds them stopped there
with 13 errors, EXIT=101, and at that head `cargo run -- --ci host` and the
whole guest suite each exited 0.

Owner: the orchestrator.

**Exit**: a check the merge queue runs builds every binary of
`tests/toyos-rust-tests` for x86_64-unknown-toyos, and is red with
`toyos-window` dropped from the crate's manifest.

This file was deleted.

4 changes: 1 addition & 3 deletions issues/design-debt/the-internet-clients-work-unchanged.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,7 @@ netd, `toyos::net` and std's ToyOS networking in the `rust/` fork.
a test crate's C is compiled by the host's `cc`; and not run: AArch64, the
T14, a `git =` dependency, the licence gate over ring in an image.
`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-depends-on-three-crates-no-test-uses.md`).
still named by doom's build script, which installs it on the host.
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,20 @@ kind: defect
opened: 2026-09-30
---

# The shipped image carries three test programs
# The shipped image carries two test programs

"Nothing ships for tests alone" (`.claude/agents/reviewer.md`, Fit) is untrue
of the shipped `system.toml` in three rows:
of the shipped `system.toml` in two rows:

- `proctest = {}`: `userland/proctest/README.md` calls it a test harness, and
nothing in the tree runs `/system/bin/proctest` but `proctest` itself.
- `input-test = {}`: a test utility by its README, and nothing runs
`/system/bin/input-test`; `toyos-symbols/tests/real.rs` reads a frozen copy
under `toyos-symbols/tests/fixtures/`, not the shipped binary. It leaves the
shipped image (owner, 2026-10-03).
- `"bin/spin" = "/system/bin/toybox"`: `userland/toybox/src/spin.rs` loops
forever, and nothing in the tree runs it; its one named use is a test, the
metal `sshd_exec` row
`issues/build/the-guest-suite-runs-only-what-no-cheaper-tier-reaches.md` owes.

Found by `git grep -n -w -e proctest -e input-test` and
Found by `git grep -n -w -e proctest` and
`git grep -n -w -e spin -- system.toml tests userland issues/build`.

**Exit condition**: the shipped `system.toml` names none of the three, and a
test that needs one carries it in its own image alone.
**Exit condition**: the shipped `system.toml` names neither, and a test that
needs one carries it in its own image alone.
1 change: 0 additions & 1 deletion system.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ receives = ["compositor", "soundd", "filepicker"]
# its own `/state/<name>` and makes that directory first. Every other row runs
# with the session user's home.
[programs]
input-test = {}
proctest = {}
# The installer. It holds nothing: it writes under `/apps` because `/apps` is
# writable to it, and a row that gave it more would make that untrue.
Expand Down
Loading
Loading