Skip to content

issues: sixteen records whose defect, code or test is gone are deleted - #1220

Merged
Japabu merged 1 commit into
mainfrom
hygiene-deletions
Nov 11, 2026
Merged

Japabu merged 1 commit into
mainfrom
hygiene-deletions

Conversation

@Japabu

@Japabu Japabu commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

The tracker carried records whose defect was fixed, whose code no longer exists, or whose test was cut. This deletes sixteen of them. Records only; no code changes.

Each record was checked against the tree at 422915e2c: whether the function, file or test it cites exists, and, where the code was replaced, whether the defect is still reachable in what replaced it. The commit message carries the same evidence in prose.

record action evidence
a-crash-leaks-the-blocks-of-its-last-commit delete, gone with the shadow-paging crate (#1152) No bitmap written in place: a bucket's state is an alloc-btree key journaled with its change. lib/bcachefs/src/engine/tests/crash.rs judge mounts every sampled crash state and requires fsck to find nothing; fsck's derived-btree walk reports alloc keys the pointers do not derive
a-btree-split-leaves-nodes-holding-a-few-entries delete, gone with the crate split_node/pack are gone; publication and reclaim split through mkfs::spread (even fill), reclaim at two thirds (engine/mount/publish.rs, reclaim.rs)
a-write-over-a-files-committed-page-is-not-shadowed delete, fixed by design Data is copy-on-write (engine/mount/data.rs); data_and_logged_truncate_survive_torn_reordered_writes overwrites committed bytes and judges each crash state as one commit or the other
a-file-on-data-is-refused-at-250-runs-while-blocks-are-free delete, gone with the crate Extents are keys of the extents btree; MAX_ENTRY_SIZE, file_entry_fits and the cited test do not exist
deviceerror-classify-trusts-a-lying-transfererror delete, gone with the crate DeviceError, TransferError, classify: no hit outside issues/
a-console-holders-line-state-guards-writers-that-no-longer-exist delete, code gone ConsoleLine, MID_LINE, MAX_CONSOLE_LINE removed by a788d314b; kernel/CLAUDE.md holds no line-buffer caveat
the-i8042-tallys-release-acquire-pair-has-no-negative-control delete, code gone tally.rs and i8042_tally.rs removed by febfd21e8
copy-meets-a-remap-holds-a-cpu-the-thread-it-waits-on-may-be-queued-behind delete, code gone The spin, remap_race::hold, was deleted by 2f366a930. A user copy now runs through the process's own mapping (kernel/src/user_ptr.rs header), so a racing unmap meets the fault path user_copy_faults and unmap_touch cover
fs-turns-judges-the-scheduler-with-the-lock delete, test gone fs_turns cut by ff1a11dbd
hda-client-stall-prints-a-stream-error-and-passes delete, test gone hda_client_stall cut by ff1a11dbd
a-loaded-suite-reds-a-volume-checker-on-both-arms delete, held by a host test The leak was real and reproduced (toybox_cp_volume red run alone on both arms, through a deliberately failed write). 0d73b9957 gave toyos-fat32 its repair contract, and lib/fat32/tests/refused_writes.rs refuses every write of every structural call and requires of the independent toyos-fat32-check that no cluster is orphaned
a-double-panic-at-boots-edge-says-nothing-but-its-name delete, sighting of a deleted test log_poll_outlives_a_close deleted by ad6dc0781; finding 2 resolved in kernel/src/panic.rs; finding 1 not seen in 612 boots and the log paths it named were replaced (88a17feee, a788d314b). It also cited a record that no longer exists
logkeeper-still-says-a-budget-refusal-leaves-the-device-untouched delete, fixed system/logkeeper/src/policy.rs holds neither sentence
a-log-rings-owner-is-named-only-when-logkeeper-reads-its-registration delete, fixed Rings are laid out with a placeholder owner and the supervisor names the owner before registering; a_placeholder_owned_ring_keeps_its_slots_from_every_pid_until_named (sdk/toyos/src/log/proof.rs, d565ff418)
an-fsync-of-a-served-file-syncs-its-whole-volume delete, built and measured; row 28 of toyos-builds-itself no longer cites it persist.write_4k_fsync_beside_1m 3.03 ms against persist.write_4k_fsync 2.36 ms on the AMD bench, Linux 4.18 ms: evidence
kernel-issues-cite-the-cut-https-tests-as-cover-that-runs delete, fixed a-claims-own-refusals-are-read-by-nothing names neither test; the remaining mentions are the tracks' plans for the metal row

Records: 752 on main at 34cb4c918, 736 on this branch.

Decisions a reviewer may want to question

  • The fsync record's exit asked for base against head on metal. The base is the storage crate Consolidate storage around native bcachefs and userland filesystems #1152 removed, so that pair cannot be run. The code establishes the behaviour: Files::fsync (system/fileserver/src/pages.rs) writes back only the named file and those the volume reports carried, DataVolume keeps Volume::carried's default of false (volume.rs), and DataVolume::commit (data.rs) persists only the named node before the journal commit. The AMD reading confirms it: the megabyte written beside the fsynced file would add about 3.8 ms at persist.seq_write_fsync's 266 MB/s if the fsync carried it, and the row costs 0.67 ms more than the fsync alone.
  • The double-panic sighting is deleted without its first finding's cause being found. It was one red under host load of a test that no longer exists, and the log and console paths it suspected were replaced. The leaked-cluster record is not of this kind: its leak was reproduced, and the deletion rests on the host test above.

Checks

No code or instruction file changes, so no host check applies. For each deleted slug, git grep <slug> on the branch finds nothing.

🤖 Generated with Claude Code

@Japabu

Japabu commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

Review of #1220 at 7fdc4309b (base 34cb4c918)

Assessment. Records only: 16 records deleted (−738 lines) and row 28 of toyos-builds-itself.md updated. I checked every deletion at origin/main. All 16 records have been overtaken by the code, but one record's closing evidence misstates what the record says. No deleted slug is cited anywhere on the branch, in the four hygiene branches merged together, or in the changed files of any open or in-progress branch. The branch merges cleanly with #1221, #1222, #1224 and current main. The four together leave 732 records.

Findings

BLOCKER: a-loaded-suite-reds-a-volume-checker-on-both-arms. The PR row and the "Decisions" bullet say "reds were under host load and green alone". Commit 7fdc4309b says "green alone each time". The record says the opposite. Its "fifth name" section (origin/main:issues/a-loaded-suite-reds-a-volume-checker-on-both-arms.md:126-133) records toybox_cp_volume answering ALONE … red again on both the branch arm and origin/main. It calls the leaked cluster "real and reproducible", reached through a deliberately failed write. The deletion is still right, but on other evidence. 0d73b9957 (2026-09-26, after every sighting) gave toyos-fat32 its repair contract (lib/fat32/src/repair.rs). lib/fat32/tests/refused_writes.rs refuses every write of every structural call, including append_two_clusters and first_allocation. It then judges the result with the independent toyos-fat32-check, which requires "no cluster orphaned". The commit message is where a close's evidence lives (issues/README.md). As written it hides a reproduced leak behind a host-noise label. Fix: correct the commit message and the PR row to say the leak was reproduced, and cite 0d73b9957 and refused_writes.rs as what now holds it.

Fsync record (the risk the author flagged): meets its exit. Code inspection already shows the behaviour; the metal reading confirms it:

  • Files::fsync (system/fileserver/src/pages.rs:619) writes back only the named file and files the volume reports as carried.
  • DataVolume does not override Volume::carried, whose default is false (volume.rs:225).
  • DataVolume::commit (data.rs:693-698) persists only the named node before the journal commit.

On the AMD bench the evidence is the median of four boots' p50 for the M arm (c9d6eff6f, after #1152): 3.03 ms for persist.write_4k_fsync_beside_1m against 2.36 ms for write_4k_fsync. If the fsync carried the other file's megabyte, it would add at least about 3.8 ms at 266 MB/s, more than five times the 0.67 ms seen. The base-against-head pair cannot be run because the base is a crate that no longer exists. Nothing more is owed.

  • SUGGESTION: add the three code sites above to the commit message, because they establish the claim more strongly than the timing does.

Checked and accepted:

  • The five storage records. split_node, pack, MAX_ENTRY_SIZE, file_entry_fits, BitmapAllocator, DeviceError, TransferError and the classify method are gone. In the engine:
    • Bucket state is a journaled alloc key. fsck's derived() (engine/fsck.rs:701-729) reports any alloc key whose usage the pointers do not derive, and crash.rs's judge runs it on every sampled crash state.
    • Data is copy-on-write (mount/data.rs header), and the torn-write tests exist.
    • Splits go through mkfs::spread.
    • toyos_blockdev::Error has no trait door left that could mint a verdict with no transfer behind it.
  • Console holder, i8042 tally, remap_race, fs_turns, hda_client_stall. The code or test is gone. fs_turns' claim is held by sdk/toyos/src/sync.rs's the_value_goes_to_the_tickets_in_the_order_they_were_taken, which is the alternative that record's exit offered.
  • copy-meets-a-remap….
    • SUGGESTION: "remap_race deleted" was already true when the record was written. The real reason nothing is owed is that a user copy now runs through the process's own mapping (kernel/src/user_ptr.rs header), so a racing unmap meets the same fault path that user_copy_faults and unmap_touch cover. Say so in the commit.
  • Double panic. Finding 2 is resolved in kernel/src/panic.rs. Finding 1 was a host-noise sighting, which root CLAUDE.md lets go unrecorded, and its suspected log and console paths were replaced. A recurrence now reports the first crash itself.
  • logkeeper sentences, ring owner, HTTPS citations.
    • policy.rs no longer holds the sentences.
    • The supervisor lays every ring out with a placeholder owner (system/supervisor/src/main.rs:327,336), and proof.rs:401 tests that.
    • The remaining https_tls13 mentions are rows the internet-clients track plans to build, not claimed cover.

SEND BACK

Each was checked against the tree at 422915e before it went.

Written against the shadow-paging storage crate, which #1152 (e11b6a7)
replaced with the bcachefs engine (lib/bcachefs/src/engine/):

- a-crash-leaks-the-blocks-of-its-last-commit: there is no bitmap written
  in place. A bucket's state is a key of the alloc btree, journaled with
  the change that took or emptied it. The crash suites
  (engine/tests/crash.rs, `judge`) mount every sampled crash state,
  unmount it and require `fsck` to find nothing, and fsck's derived-btree
  walk reports an alloc key that the volume's pointers do not derive.
- a-btree-split-leaves-nodes-holding-a-few-entries: `split_node` and
  `pack` are gone. Publication and reclaim split with `mkfs::spread`,
  which fills the new nodes evenly, and reclaim splits at two thirds.
- a-write-over-a-files-committed-page-is-not-shadowed: file data is
  copy-on-write and a pointer is journaled only after its bytes complete
  (engine/mount/data.rs). `data_and_logged_truncate_survive_torn_
  reordered_writes` and its encrypted twin overwrite committed bytes and
  judge every crash state as one commit or the other.
- a-file-on-data-is-refused-at-250-runs-while-blocks-are-free: a file's
  extents are keys of the extents btree, not one entry of at most
  `MAX_ENTRY_SIZE`; that constant, `file_entry_fits` and the cited test
  are gone.
- deviceerror-classify-trusts-a-lying-transfererror: `DeviceError`,
  `TransferError` and `classify` went with the crate (24560b3 removed
  its tests). The engine's device error is `toyos_blockdev::Error`.

Code that left the kernel:

- a-console-holders-line-state-guards-writers-that-no-longer-exist:
  `ConsoleLine`, `MID_LINE` and `MAX_CONSOLE_LINE` went when the console
  UART became a userland driver's (a788d31); kernel/CLAUDE.md no longer
  carries the caveat the record's exit named.
- the-i8042-tallys-release-acquire-pair-has-no-negative-control: the
  tally and its loom test left with the i8042 driver (febfd21).
- copy-meets-a-remap-holds-a-cpu-the-thread-it-waits-on-may-be-queued-
  behind: the spin it describes, `remap_race::hold`, was deleted by
  2f366a9. Nothing is owed in its place because a user copy now runs
  through the process's own mapping (kernel/src/user_ptr.rs's header), so a
  racing unmap meets the fault path that `user_copy_faults` and
  `unmap_touch` cover.

Tests that are gone, and with them what the record asked of them:

- fs-turns-judges-the-scheduler-with-the-lock and
  hda-client-stall-prints-a-stream-error-and-passes: both guest tests
  were cut by ff1a11d.
- a-loaded-suite-reds-a-volume-checker-on-both-arms: one cluster on the
  log volume marked allocated and reached by no directory entry, found by
  the FAT checker after guest tests that are all deleted since. The leak
  was real and reproduced: the record's last sighting, `toybox_cp_volume`,
  was red run alone on both arms, reached through a deliberately failed
  write. What holds it now is 0d73b99 (2026-09-26, after every
  sighting), which gave toyos-fat32 its repair contract
  (lib/fat32/src/repair.rs), and lib/fat32/tests/refused_writes.rs, which
  refuses every write of every structural call, `append_two_clusters` and
  `first_allocation` included, and requires of the independent
  toyos-fat32-check that no cluster is orphaned.
- a-double-panic-at-boots-edge-says-nothing-but-its-name: one sighting
  under host load on 2026-08-19 of `log_poll_outlives_a_close`, deleted
  by ad6dc07. Its second finding was resolved in kernel/src/panic.rs;
  its first was not seen again in 612 boots, and the log ring and console
  paths it pointed at were replaced (88a17fe, a788d31).

Fixed:

- logkeeper-still-says-a-budget-refusal-leaves-the-device-untouched:
  system/logkeeper/src/policy.rs holds neither sentence.
- a-log-rings-owner-is-named-only-when-logkeeper-reads-its-registration:
  the supervisor lays each ring out with a placeholder owner and names the
  owner itself before it sends the registration. d565ff4 added
  `a_placeholder_owned_ring_keeps_its_slots_from_every_pid_until_named`
  (sdk/toyos/src/log/proof.rs), which a `keep` of zero fails.
- an-fsync-of-a-served-file-syncs-its-whole-volume: built by b3897d5,
  and the measurement it owed exists. On the AMD bench
  `persist.write_4k_fsync_beside_1m` reads 3.03 ms against 2.36 ms for
  `persist.write_4k_fsync` and 4.18 ms on Linux, where the megabyte
  written beside it would cost about 3.8 ms more at
  `persist.seq_write_fsync`'s 266 MB/s if the fsync carried it:
  https://github.com/ToyOSOrg/evidence/blob/7efbe1295aa54370b213719b4d4f460e7a103554/ab/README.md
  The base-against-head pair its exit named cannot be run, since the base
  is the storage crate #1152 removed. The code establishes it more
  directly: `Files::fsync` (system/fileserver/src/pages.rs) writes back
  only the named file and those the volume reports `carried`;
  `DataVolume` keeps `Volume::carried`'s default of false
  (system/fileserver/src/volume.rs); and `DataVolume::commit`
  (system/fileserver/src/data.rs) persists only the named node before
  the journal commit. issues/toyos-builds-itself.md's row 28 no longer
  names it.
- kernel-issues-cite-the-cut-https-tests-as-cover-that-runs:
  issues/a-claims-own-refusals-are-read-by-nothing.md no longer names
  either test. The lines that still do are the tracks' plans for the
  metal row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Japabu

Japabu commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

Orchestrator verification at 74cea1d, after review r1 SEND BACK (text-only blockers).

This PR changes only files under issues/ (checked with git diff --name-only against main). I read the fixes for each blocker the review named on this PR and they are resolved as the review asked; the review found no deletion that hides a live defect. Records only, so no build or test is owed beyond the tracker gates in the merge queue. Queueing.

@Japabu
Japabu marked this pull request as ready for review November 11, 2026 14:20
@Japabu
Japabu added this pull request to the merge queue Nov 11, 2026
Merged via the queue into main with commit a84c4f0 Nov 11, 2026
10 checks passed
@Japabu
Japabu deleted the hygiene-deletions branch November 11, 2026 14:25
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