Skip to content

Redlist: sixteen reds on main, each disabled with the issue that owns it - #654

Closed
Japabu wants to merge 3 commits into
mainfrom
wt/toyos-loadfree-red
Closed

Japabu wants to merge 3 commits into
mainfrom
wt/toyos-loadfree-red

Conversation

@Japabu

@Japabu Japabu commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Sixteen reds on main are disabled at once, each with the issue that owns it, so a run on a loaded host stops being re-run until it is green. The fixes for the ten verdicts the host's speed decided follow in a separate pull request, which deletes their rows.

Triage

test where seen which issue
process_stats wt/toyos-loaderlines 6e0d7da (fastest boot 480 ms), wt/toyos-proclife1 60ec86d main: a connection park charged to neither ipc nor pipe; neither branch touches the test or the charge issues/build/process-stats-exits-101-beside-other-guests.md (existing, now expected-red)
lan_dhcp_lease wt/toyos-tight 59940c4, ceilings at 1.00x main: awaits the lease, asserts netd's ready line the capture can end before issues/build/lan-dhcp-lease-asserts-a-line-its-wait-does-not-wait-for.md
root_candidate_malformed wt/toyos-tight 59940c4, ceilings at 1.00x main: the boot wait read the 16550 file mid-line ("Slot A: REFUSED, its root is") issues/build/a-ready-marker-read-off-the-16550-file-can-end-the-boot-wait-mid-line.md
redirty_mid_flush wt/toyos-proclife 6e9d6a4 main: silent after its child's spawn; the branch's own kernel change is two retired-syscall lines, the rest is main's merge; green at the branch's previous head and in every other kept log issues/kernel/redirty-mid-flush-went-silent-after-spawning-its-child.md
update_boots_the_new_kernel, update_falls_back_from_a_dying_kernel, update_floor_is_the_images_own, update_refusals_boot_the_other_slot wt/toyos-proclife1 60ec86d (load 84), and the first again on wt/toyos-proclife 6e9d6a4 host speed: 15 s of silence across a firmware reset issues/build/a-harness-wait-reads-a-starved-guest-as-a-stopped-one.md
guest_dies_with_its_harness wt/toyos-proclife1 60ec86d host speed: the owner's boot judged at an unscaled 20 s same
syscall_window_nmi_controls wt/toyos-proclife1 60ec86d host speed: a 10 s spinner against a million-syscall trigger; it made 950000 issues/kernel/the-syscall-window-storm-times-its-victim-by-the-guests-wall-clock.md
virt_smp wt/toyos-rulesbatch 8f142ba host speed: an AP has 100 ms to echo issues/kernel/an-ap-its-host-has-not-scheduled-for-100-ms-is-booted-without.md
iommu_virtio_platform wt/toyos-libcllvm (libc only, load 66-74); also 634r2, 637r2, 641f-r3 on three more branches main: reads netd's claim and negotiation lines off a boot log that ends at test-runner's READY; #639 carries a fix issues/build/iommu-virtio-platform-reads-netds-lines-off-a-boot-log-that-ends-before-them.md
loader_watchdog_arms wt/toyos-libcllvm (libc only, load 66-74) host speed, most likely: the boot ceiling (10 s × 12 wide × host_scale = 132 s of wall clock) expired at "BdsDxe: starting Boot0001"; 50-odd passes of 6-34 s in the kept logs. A wait on the guest's own time is what tells starvation from a stall issues/build/a-harness-wait-reads-a-starved-guest-as-a-stopped-one.md
metal_sim_window_drag, usb_boot_stick_pulled wt/toyos-libcllvm (libc only, load 66-87, reported 1.01x) host speed: serial-tail boots cut at 21 and 22 s (the 20 s a single-guest phase gets) with the loader still printing issues/build/a-harness-wait-reads-a-starved-guest-as-a-stopped-one.md
blockd_serves_partitions wt/toyos-libcllvm (libc only) main: the bench passed and its process exited at 35.978 s, and no ===TEST_END=== came in 3559 s while the kernel kept logging idle. Either test-runner's wait missed the exit or logd stopped forwarding; blockd itself finished, so #643 is not on the path issues/kernel/a-job-that-exited-was-never-reported-ended.md

The 74-minute guard on redirty_mid_flush (120 s × 12 wide × a host_scale of 3.1) is the harness's half of the same issue as the update tests, and the fix pull request removes it.

src/redlist.rs's whole-name test probed <row>_controls against None. With syscall_window_nmi and syscall_window_nmi_controls both disabled, that probe finds the second row, so it now asserts that the probe does not find the row it extends.

Gates at 703d970

  • cargo test --lib redlist: EXIT=0, 5 passed (at e641eae, dc153d6 and 703d970).
  • cargo test --test toyos-checks: EXIT=0, 28 passed (at 703d970, before the blockd row was rewrapped).
  • The old probe assertion, applied as a checked patch to this table: EXIT=101, left: Some(Disabled { test: "syscall_window_nmi_controls", .. }) right: None; restored.
  • cargo run -- --ci host is run once on the fix branch, which carries this one.

Unsure

  • process_stats: which park satisfied the test's BLOCKED premise is not on record, because the assertion prints two of the five wait classes.
  • redirty_mid_flush: the held-disk wedge is a reading. The capture has no kernel line after 1.690 s to confirm it.

🤖 Generated with Claude Code

https://claude.ai/code/session_016t9wjdQkB8SH7bmfUoiy6L

The orchestrator stops re-running reds on a quiet host. Every red below is
on main's code, so each is disabled now, and its issue says what it is and
what ends it.

Defects already on main:
- process_stats: a connection park charged 0 ns to ipc and to pipe, at
  process_stats.rs:280 on wt/toyos-loaderlines 6e0d7da (fastest boot
  480 ms) and at :263 on wt/toyos-proclife1 60ec86d. Neither branch
  touches the test or the charge. The existing issue takes both sightings
  and becomes expected-red.
- lan_dhcp_lease: the test awaits the lease and asserts netd's ready line
  after it, but the capture ends at test-runner's ===READY===, which can
  come first (wt/toyos-tight 59940c4, ceilings at 1.00x).
- root_candidate_malformed: wait_for_ready reads a 16550 ready marker off
  QEMU's log file while the loader is still writing the line, and the
  test got "Slot A: REFUSED, its root is" (same run).
- redirty_mid_flush: the guest went silent after spawning its child
  (wt/toyos-proclife 6e9d6a4). The branch's own kernel change is two
  retired-syscall lines; the test passed at the branch's previous head and
  in every other kept whole-suite log.

Verdicts the host's speed decided:
- update_boots_the_new_kernel, update_falls_back_from_a_dying_kernel,
  update_floor_is_the_images_own, update_refusals_boot_the_other_slot:
  15 s of silence across the firmware reset reads as a stall at load
  average 84, on #648's run and again on #642's.
- guest_dies_with_its_harness: the owner's boot is judged at an unscaled
  20 s on the host's clock.
- syscall_window_nmi_controls: the spinner stops after ten seconds of the
  guest's clock and the storm waits for a million syscalls; starved, it
  made 950000.
- virt_smp: an AP has 100 ms to echo, and a starved vCPU did not.

src/redlist.rs's whole-name test probed `<row>_controls` against None;
with syscall_window_nmi and syscall_window_nmi_controls both disabled
that probe finds the second row, so it now asserts only that the probe
does not find the row it extends. The old assertion reds on this table
(checked: EXIT=101), the new one passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016t9wjdQkB8SH7bmfUoiy6L
@Japabu
Japabu marked this pull request as ready for review October 1, 2026 02:20
@Japabu Japabu changed the title Redlist: twelve reds on main, each disabled with the issue that owns it Redlist: eleven reds on main, each disabled with the issue that owns it Oct 1, 2026
…only branch's run

Both went red in 650-libcllvm-whole.log on wt/toyos-libcllvm, whose diff
is userland/libc alone, at load average 66-74.

- iommu_virtio_platform is a defect on main. It reads netd's claim line and
  netd's feature negotiation off a boot log that ends at test-runner's
  ===READY===, and netd starts before test-runner but speaks after it. The
  same race reds in two wordings on 634r2, 637r2 and 641f-r3, each on a
  branch that does not touch it. #639 carries a fix (d773a43).
- loader_watchdog_arms timed out its boot at 132 s of wall clock, which is
  10 s x 12 wide x host_scale. The console stood at "BdsDxe: starting
  Boot0001". Its 50-odd other runs in the kept logs passed in 6-34 s. It
  goes under the harness-wait issue, which now carries this sighting and
  650's two update STALLs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016t9wjdQkB8SH7bmfUoiy6L
@Japabu Japabu changed the title Redlist: eleven reds on main, each disabled with the issue that owns it Redlist: thirteen reds on main, each disabled with the issue that owns it Oct 1, 2026
650-libcllvm-whole.log, wt/toyos-libcllvm, whose diff is userland/libc
alone; load average 66-87, with the run reporting ceilings at 1.01x.

- metal_sim_window_drag and usb_boot_stick_pulled timed out their boots at
  21 and 22 s in the serial tail, the 20 s a phase of one guest gets. Each
  had the loader still printing its segments. They go under the harness-wait
  issue, which now also says why the run's 1.01x could not see the load.
- blockd_serves_partitions: the bench passed and its process exited at
  35.978 s, then no ===TEST_END=== came for 3559 s, while the kernel kept
  logging with every CPU idle. Either test-runner's wait on the job missed
  the exit's post, or logd stopped forwarding. The new issue says which
  evidence the next sighting needs, and names #655's poller shape as the
  logd reading.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016t9wjdQkB8SH7bmfUoiy6L
@Japabu Japabu changed the title Redlist: thirteen reds on main, each disabled with the issue that owns it Redlist: sixteen reds on main, each disabled with the issue that owns it Oct 1, 2026
@Japabu

Japabu commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator Author

Review of #654 at head 703d9703e.

CI: ci run 36811706825, job host: success at 703d970. No hardware target. Net +336 −2: the src/redlist.rs table +61, its unit test +1 −1, issues +274 −1.

BLOCKER

  1. src/redlist.rs:93 (row redirty_mid_flush): the logs do not support "main". Its only red is on SYS_PROCESS_OPEN is deleted, 110 is free, and a spawn mints its child's own handle before its caller's #642's unlanded head 6e9d6a4 (642r2-642-whole.log:2030). Main's code, including the msc.rs rewrite, passed the test in 650-libcllvm-whole.log:1297 (PASS redirty_mid_flush (73s)). That tree is built on 49f4938, which contains e754dc8. Against main, SYS_PROCESS_OPEN is deleted, 110 is free, and a spawn mints its child's own handle before its caller's #642's own kernel change is 10 files. Among them, HandleEntry::drop no longer exempts Process, so a process handle is now on that path, and the guest went silent right after a spawn. The row hides a red from the one branch it was seen on. Drop the row and its issue from Redlist: sixteen reds on main, each disabled with the issue that owns it #654, and from The host's load decides no verdict: every wait on a guest reads the guest's own clock, and a wait on another CPU is a bound on a dead one #658, which carries them. The red stays with SYS_PROCESS_OPEN is deleted, 110 is free, and a spawn mints its child's own handle before its caller's #642's verdict until a main-only tree shows it.
  2. issues/kernel/a-job-that-exited-was-never-reported-ended.md:23: the issue's two readings leave out the open issues/build/qemu-drops-console-output-the-harness-is-slow-to-read.md. That issue records this exact symptom: the runner's ===TEST_END=== was lost from the stdio console at load 40–50, and the harness waited until its ceiling. This boot reads the stdio console (tests/common/blockd.rs:105, no console_file) at load 66–74. The kernel's later lines arriving is what that mechanism predicts once the pipe drains. The exit, "the parked thread named … and the defect fixed", cannot be met if QEMU dropped the line. Point the row at that issue or rule it out from the capture.
  3. issues/build/process-stats-exits-101-beside-other-guests.md:40: the disjunct "or the assertion prints every class and a red names the park; then the row goes" deletes the row while the defect is still unfixed, so the test reds every PR again in order to get its diagnosis. Delete the disjunct.
  4. Exits and owners: none of the nine issues this branch adds or edits names an owner. Eight exits name a fix but no run that turns the row green: a-harness-wait-reads-a-starved-guest-as-a-stopped-one.md:49, a-ready-marker-read-off-the-16550-file-can-end-the-boot-wait-mid-line.md:25, iommu-virtio-platform-reads-netds-lines-off-a-boot-log-that-ends-before-them.md:30, lan-dhcp-lease-asserts-a-line-its-wait-does-not-wait-for.md:25, process-stats-exits-101-beside-other-guests.md:40, a-job-that-exited-was-never-reported-ended.md:35, redirty-mid-flush-went-silent-after-spawning-its-child.md:33 and the-syscall-window-storm-times-its-victim-by-the-guests-wall-clock.md:24. The ninth, an-ap-its-host-has-not-scheduled-for-100-ms-is-booted-without.md:26, says "green on a loaded host" but names no load. CLAUDE.md requires a recorded compromise to have an owner and an exit. Main's expected-red siblings carry both, e.g. issues/build/the-console-input-path-can-stop-after-a-ps2-overflow.md:74-76: "… is green beside other guests. Owner: orchestrator."

NOTE

REMOVE

  • issues/kernel/a-job-that-exited-was-never-reported-ended.md:9: "userland/libc alone" is false (rust 9151571ca).
  • issues/build/a-harness-wait-reads-a-starved-guest-as-a-stopped-one.md:27 and issues/build/iommu-virtio-platform-reads-netds-lines-off-a-boot-log-that-ends-before-them.md:11: "libc only" is false for the same reason.
  • issues/build/a-harness-wait-reads-a-starved-guest-as-a-stopped-one.md:41-47: the paragraph about redirty_mid_flush's guard belongs to none of this issue's rows.
  • issues/build/process-stats-exits-101-beside-other-guests.md:22-25: the superseded first Exit. The file now has two.
  • PR body, triage table: the four "libc only" entries, and redirty's "the branch's own kernel change is two retired-syscall lines". Against main, SYS_PROCESS_OPEN is deleted, 110 is free, and a spawn mints its child's own handle before its caller's #642's kernel change is 10 files; the two lines are only its change since a8acd2a.
  • PR body, "cargo test --test toyos-checks: EXIT=0, 28 passed (at 703d970, before the blockd row was rewrapped)": by its own wording this run was not at 703d970.

SEND BACK

Japabu added a commit that referenced this pull request Oct 1, 2026
…d the defects the cut's tests found

- `.claude/agents/reviewer.md`: **Growth** said tests are cut only when they
  test nothing, which sends back every cut the ladder makes. It now reads
  "a test is cut only when it tests nothing, or as **Guest tests** says", and
  **Guest tests** says when: a cheaper tier already holds the behaviour, named
  in the pull request body, or a stage of a track names it in the same diff
  with an exit a build or test can fail. A guest test re-argues the tiers when
  it is new or its behaviour changes, not on every edit.
- The track carries owed work only: the verdict counts, the keep list and
  both cut lists go to this pull request's body, and stage M goes, its
  shard, duration and phase half done here and the rest naming nothing. It
  names its owner. The tests main redlists are not its items: each is red and
  its issue holds it. `late_storage_connect` stays metal, staged by its
  actuator rather than a plug; `https_tls13_e1000e` and
  `blackbox_early_panic_sealed_muted` join the rows that cover them;
  `metal_sim_input` and `virtio_used_ring` become host items and
  `query_pci_agreement` a metal one against Ubuntu's `lspci`; FPU isolation
  goes first in stage C; and each item whose arm needs a deleted feature or
  file says so.
- Defects #654 recorded on main, carried whether or not their test survives:
  `a-ready-marker-read-off-the-16550-file-can-end-the-boot-wait-mid-line.md`
  (`root_candidate_malformed`), `a-test-asserts-a-daemons-line-off-a-boot-log-that-ends-before-it.md`
  (`lan_dhcp_lease` and `iommu_virtio_platform`, one mechanism),
  `an-ap-its-host-has-not-scheduled-for-100-ms-is-booted-without.md`
  (`virt_smp`), `blockd_serves_partitions` folded into
  `qemu-drops-console-output-the-harness-is-slow-to-read.md`, and
  `process_stats`'s two assertions with an exit a test can fail.
  `redirty_mid_flush`'s red was #642's own and is not carried.
- `sys-debug-actions-and-two-loader-words-that-nothing-calls.md` records the
  ABI names the cut left with no caller.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016t9wjdQkB8SH7bmfUoiy6L
@Japabu

Japabu commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator Author

Closed as superseded: its rows lived in src/redlist.rs, which #639 deleted, and #660 (landed) carries its issue files with the review's corrections. The one issue it shared with #658 (a-harness-wait-reads-a-starved-guest-as-a-stopped-one.md) is carried by #658's re-cut on the 21-test harness.

@Japabu Japabu closed this Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant