diff --git a/issues/audio/hda-client-stall-reads-one-resume-where-its-judge-wants-two.md b/issues/audio/hda-client-stall-reads-one-resume-where-its-judge-wants-two.md new file mode 100644 index 00000000000..01804c4d582 --- /dev/null +++ b/issues/audio/hda-client-stall-reads-one-resume-where-its-judge-wants-two.md @@ -0,0 +1,50 @@ +--- +status: open +kind: defect +opened: 2026-09-29 +--- + +# `hda_client_stall` reads one resume on the T14 where its judge wants two + +The T14 run of `wt/toyos-metaljudges` at `6737a442` reds the row with: + +``` +FAIL hda_client_stall: soundd resumed 0 time(s) — the second stream did not find a suspended daemon, so nothing here tests a resume: +``` + +The job itself exits 0 and prints `stalled 8 then 2 times, soundd survived`. +Its cause is not measured; whether the judge or soundd is wrong is open. + +## Measured + +The `testcases` boot's log, from the job's spawn to its end, in order: + +``` +{… 6.275 soundd} soundd: client 0 removed (closed) +[… 6.276 cpu6] spawn: /system/bin/test_rs_hda_client_stall pid=9 … +{… 6.276 soundd} soundd: wakes=662 … clients=0 … +{… 6.333 tid=1 soundd} soundd: opening stream: 44100Hz 2ch fmt=0 +{… 6.333 soundd} soundd: client 0 connected (id=1) +{… 8.565 soundd} soundd: client 1 removed (closed) +{… 8.565 soundd} soundd: wakes=126 … clients=0 … +{… 8.585 soundd} soundd: suspended +{… 8.836 tid=1 soundd} soundd: opening stream: 44100Hz 2ch fmt=0 +{… 8.836 soundd} soundd: client 0 connected (id=2) +{… 8.836 soundd} soundd: resumed +{… 9.755 soundd} soundd: wakes=480 … clients=0 … +{… 9.780 soundd} soundd: suspended +``` + +- The window `tests/common/audio.rs`'s `job_window` cut for two sessions ends + at the `8.565` stats line: the `clients=0` stats line at `6.276`, after the + spawn and before the first stream opens, is counted as the first session's + end. The printed window carries no `soundd: resumed`. +- Across the job's whole span the log carries one `soundd: resumed`, at the + second stream. The first stream opens with no `soundd: suspended` between + the previous client's removal at `6.275` and its open at `6.333`, so + `client_stall_on_metal`'s `resumes < 2` reds on that span too. + +## Exit condition + +`hda_client_stall` PASS on the orchestrator's T14 run of the head that lands +the fix, and this file is deleted. diff --git a/issues/audio/hda-tone-reads-underruns-on-the-t14-where-its-judge-wants-none.md b/issues/audio/hda-tone-reads-underruns-on-the-t14-where-its-judge-wants-none.md new file mode 100644 index 00000000000..662d835b131 --- /dev/null +++ b/issues/audio/hda-tone-reads-underruns-on-the-t14-where-its-judge-wants-none.md @@ -0,0 +1,50 @@ +--- +status: open +kind: defect +opened: 2026-09-29 +--- + +# `hda_tone` reads underruns on the T14 where its judge wants none + +The T14 run of `wt/toyos-metaljudges` at `f5c80264f` reds the row with: + +``` +FAIL hda_tone: soundd filled 104 period(s) the tone client had not covered, on a client that keeps its ring full: +``` + +The job itself exits 0 and prints `tone done`. Its cause is not measured; +whether the judge or soundd is wrong is open. + +The T14 run of `main` at `7e151819` reddened the row earlier, on `the +testcases's log carried no kernel output at all`. + +## Measured + +The `testcases` boot's log over the window the judge printed, selected lines in +order: + +``` +{… 3.021 tid=1 soundd} soundd: opening stream: 44100Hz 2ch fmt=0 +{… 3.021 soundd} soundd: client 0 connected (id=0) +{… 3.021 soundd} soundd: resumed +{… 5.024 soundd} soundd: wakes=984 completions=689 submitted=697 underruns=0 drains=0 … clients=1 … +[… 6.252 cpu0 tid=1] exit: test_rs_audio_tone tid=1 code=0 cpu=12ms (after 48 like it suppressed) +{… 6.252 pid=8 test-runner} tone done +{… 6.252 test-runner} ===TEST_END test_rs_audio_tone exit=0=== +{… 6.252 test-runner} ===TEST_START test_rs_hda_client_stall=== +[… 6.253 cpu7] spawn: /system/bin/test_rs_hda_client_stall pid=9 … +{… 6.254 tid=1 soundd} soundd: opening stream: 44100Hz 2ch fmt=0 +{… 6.254 soundd} soundd: client 1 connected (id=1) +{… 6.258 soundd} soundd: client 0 removed (closed) +{… 7.024 soundd} soundd: wakes=989 completions=688 submitted=688 underruns=39 drains=0 … clients=1 … +{… 8.412 soundd} soundd: client 1 removed (closed) +{… 8.418 soundd} soundd: wakes=741 completions=479 submitted=479 underruns=65 drains=0 … clients=0 … +``` + +The printed window carries three stats lines, with `underruns=0`, `underruns=39` +and `underruns=65`, which sum to the 104 the row names. + +## Exit condition + +`hda_tone` PASS on the orchestrator's T14 run of the head that lands the fix, +and this file is deleted. diff --git a/issues/build/a-metal-judge-reads-the-log-file-for-a-record-written-after-it-was-made-whole.md b/issues/build/a-metal-judge-reads-the-log-file-for-a-record-written-after-it-was-made-whole.md deleted file mode 100644 index 4639c7e91e0..00000000000 --- a/issues/build/a-metal-judge-reads-the-log-file-for-a-record-written-after-it-was-made-whole.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -status: open -kind: tooling -opened: 2026-09-29 ---- - -# A metal judge reads the log file for a record the kernel writes after init made the file whole - -On the T14 a boot's `/log` file ends where init had `logd` make it whole -(`Readback::log_reached_the_stick`, `tests/common/metal.rs`). What the kernel -writes after that — `Rebooting.`, and every line an actuator staged inside the -stop prints — reaches only the black-box page, and comes back in the next -loader pass's `loader.log` under `| log-tail:` or the page's ring. Three -judges still ask `Readback::kernel()` for such a record: - -- `machine_reboot` — `b[0].kernel().must_say(bootlog::REBOOTING)`; -- `log_poll_outlives_a_close` — the same line at the end of - `log_close_survived` (`tests/toyos.rs`); -- `usb_reset_records_the_phase_it_cut` — `power::usb_load_chain`'s - `kernel.must_say(bootlog::USB_LOAD_RUNNING)`. - -## Measured - -The full T14 run of `main` at `7e151819` -(EXIT=1): - -``` -FAIL log_poll_outlives_a_close: "Rebooting." never reached the testcases's kernel log: -FAIL usb_reset_records_the_phase_it_cut: "usb-load: sweeping disk 0" never reached the usbload's kernel log: -FAIL machine_reboot: "Rebooting." never reached the jobcase's kernel log: -``` - -Each record is on the page, in each boot's `loader.log`: - -``` -testcases/loader.log:53:| log-tail: [12.838 cpu0] Rebooting. -jobcase/loader.log:52:| log-tail: [1.516 cpu0] Rebooting. -usbload/loader.log:77:| [1.526 cpu0] usb-load: sweeping disk 0 from block 6569336 to 7507812, rewriting each run with the bytes just read from it, until this machine is reset out from under it -``` - -and in no `kernel.log` of the three. Every other assertion these judges make -before the refused one passed. - -## Exit condition - -The three judges read each post-flush record off the pass after the reset, -and a T14 run of the three names reaches their verdicts; then this file is deleted. diff --git a/issues/build/a-metal-only-row-cannot-be-disabled.md b/issues/build/a-metal-only-row-cannot-be-disabled.md index f45d44f82db..8e7e5939ccc 100644 --- a/issues/build/a-metal-only-row-cannot-be-disabled.md +++ b/issues/build/a-metal-only-row-cannot-be-disabled.md @@ -16,8 +16,7 @@ row before any boot. ## Measured -`hda_tone` and `hda_client_stall` red on the T14 run of `main` at `7e151819` -(`issues/build/a-readbacks-kernel-records-never-count-as-kernel-output.md`). +`hda_tone` and `hda_client_stall` red on the T14 run of `main` at `7e151819`. Only the code reading is verified: `check_redlist` tests `schedule.contains`, and the metal branch filters `METAL` rows through the same `keep`. Running `--known-red hda_tone` and `--list` against a tree with such a row is owed and diff --git a/issues/build/a-readbacks-kernel-records-never-count-as-kernel-output.md b/issues/build/a-readbacks-kernel-records-never-count-as-kernel-output.md deleted file mode 100644 index 7a884c03676..00000000000 --- a/issues/build/a-readbacks-kernel-records-never-count-as-kernel-output.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -status: open -kind: tooling -opened: 2026-09-29 ---- - -# A readback's kernel records never count as kernel output, so every metal judge that asserts an absence reds unjudged - -`Serial::alive` (`tests/common/serial.rs`) counts the lines `qemu::is_kernel_line` -accepts, and that predicate is `line.starts_with("[kernel ")` — the head -`klogd` gives a record on the virtio console. The stick's `/log` file spells -the same records `[