Skip to content

Repo hygiene + burn-fused READMEs — findings, 2026-10-01

Lane: text-only. No cargo, no code change, no rename of the vendor directory (decided separately). Branch main, four commits, no push.

Question asked: “почему мусор типа playwright-mcp”. Answer: because a tracked file is unaffected by .gitignore, and both of these directories were ignored in spirit while being committed in fact.

what files bytes still on disk?
.playwright-mcp/ — browser-MCP session log (console-*.log, page-*.yml, 2026-09-26) 5 44 KiB no, tool scratch
runs/*.log — training logs, 2026-09-06..09-21 9 2.0 MiB yes, copied to ~/logs/committed-runs-archive/ first, byte-for-byte
graphify-out/ — the graphify skill’s output 5 tracked (+18 untracked) 14.8 MB yes, git rm --cached only
vendor/dormouse-fused/crates/burn-gdn2/gd_logs.zip 1 4 KiB no

a5076ab. Total 20 files, 403 303 lines, ~16.9 MB.

gd_logs.zip is not a zip file. Its entire content is a GitHub API 404 body saved under a .zip name:

{"message":"Not Found","documentation_url":".../workflow-runs#download-workflow-run-logs","status":"404"}gh: Not Found (HTTP 404)

unzip -l fails with “End-of-central-directory signature not found”. It arrived in d1a76fe and has never decompressed. Found by the junk scan, not asked for.

/runs/ was already in .gitignore and the files were tracked anyway. Same for *.bin vs the six burn-gdn2 oracle fixtures. Both are the same lesson and it is now a comment in the root .gitignore next to the two new rules.

vendor/dormouse-fused is 20 crates (was 28; eight deleted 2026-09-28, fate table docs/architecture/library-crate-fate.md), MIT, and gated by .github/workflows/fused-library.yml at the dormouse root. It has no .github/ of its own in this copy — the fork’s own ci.yml was never inherited here and the ten per-crate ones were deleted (4963c3a).

Top five, all in vendor/dormouse-fused/README.md (ead9f38), in the direction that makes a reader trust something unchecked:

  1. “the committed CI baselines … re-checked on every PR, fails on >20% regressions.” No job in fused-library.yml runs the bench harness, and benches/ is --excluded from the two jobs that could. Measured: no bench job exists in the file. bench/baselines.json has 10 entries and one of them, msa_sparse.fused_ms, is for a crate deleted 2026-09-27.
  2. “10 of these 20 are in dormouse’s build, the other 10 are reference ports nobody links.” Measured off the path = edges in crates/*/Cargo.toml: 13 in build, 7 not. It was 10/10 on 2026-09-28; burn-attnres (wired 2026-09-30) and burn-situ (2026-10-01) moved since. Not in build: burn-eggroll, burn-es, burn-parcae, burn-ptrn, burn-rope, burn-sct, burn-swiglu.
  3. A checked roadmap item against burn-msa’s sparse_kernel.rs — a file that does not exist. The whole roadmap went with it: an unchecked box in a README is a wish.
  4. “100+ technologies in sight” over 20 crates, in the file whose job is to say what exists.
  5. The implied CI gate. The README now opens by saying this directory is a vendored copy, the gate is the root workflow, there is deliberately no cuda-tests job, and the GPU check is tools/gpu-gate.sh.

Added, because they were missing and true: the 20-crate table with each manifest’s own description, cuda/autodiff/in-build columns; the single-crate commands (cargo test -p burn-gdn2, tools/gpu-gate.sh, tools/gen_facade.py --check, tools/test-feature-matrix.sh); the facade as a generated artifact; and the verification-tier system — docs/protocols/ORACLE-TIERS.tsv, tiers (a) authors’ code / (b) transcription / (c) transcription of a transcription / (d) nothing external / (x) not a correctness test, currently 47 a, 22 b, 1 c, 27 d, 30 x over 127 comparisons, read by tools/oracle_gate.py.

3. burn-fused/INTEGRATION.md — kept, checked, not moved

Section titled “3. burn-fused/INTEGRATION.md — kept, checked, not moved”

The task offered delete-or-move-to-docs/. Neither: the file is load-bearing. burn-fused/Cargo.toml:12 says readme = "INTEGRATION.md" with the comment “crates.io renders exactly this file for anyone who adds the dependency” — moving it to docs/ breaks cargo package. Checked it against the tree instead (15b2bc0): 20 crates, the 0.22.0-pre.4 pin, 13 cuda / 8 autodiff, burn-fused/tests/facade.rs resolving all 20, and both §6 “known-broken” defects re-read at the source — the gdn2 double-permute is still at module.rs:365/:368, and the kda read-only-prefill arm is still q.matmul(s).permute([0,2,1,3]) ignoring k, v and both gates. It is current.

Four things in it were wrong, all fixed:

  • | the other 17 | in the §5 precision table. The table names 12 members, so the remainder is 8. It said 17 when the workspace had 28; burn-mor’s row was added on 2026-09-28 and the number was not.
  • chunk_cube.rs:853 → 865 (the DType::F32 check).
  • burn-rmsnorm/src/fused.rs:95 → 223 (same check).
  • burn-kda/src/lib.rs:708 → 1022 (the file grew by ~300 lines). burn-swiglu/src/fused.rs:56 was checked and is correct.

One header each, no content rewritten (15b2bc0). What each one has to be told now:

  • CONTRIBUTING.md — process unchanged; the crate list and the gate are not.
  • TEST-AUDIT.md — “The bit-exact harness” describes files that no longer exist: tests/ref_data.bin and tools/gen_reference.rs were deleted. The fixture is tests/ref_f64_broad.bin and the generator tools/gen_reference_f64.py (f64 NumPy, no torch). Kept as history, labelled as history.
  • bench/PYTORCH_COMPARISON.md — the Sparse attn top-k row measures burn-msa (deleted 2026-09-27, ADR-0014). Void. Labelled rather than deleted, because the same number is still in bench/baselines.json and a reader who finds it there deserves to learn here that the crate is gone.
  • bench/RESEARCH_VERIFICATION.md — its Verified table has six rows for crates that no longer exist: burn-msa (09-27, ADR-0014) and burn-mtp, burn-fastblt, burn-antihall, burn-nope, burn-mod, burn-ttt (09-28). A table that verifies a crate with no source is the ADR-0020 shape.

5. Thirteen per-crate READMEs advertising a deleted gate

Section titled “5. Thirteen per-crate READMEs advertising a deleted gate”

ce94cbf. All 13 carried [![CI](https://github.com/sehaxe/burn-<crate>/actions/workflows/ci.yml/badge.svg)], a status light wired to a workflow TEST-AUDIT.md:16-18 records as deleted in 4963c3a. Replaced in the badge’s own slot with one line naming the gate that runs and saying it has no GPU job.

Checked and found already correct in all 20 per-crate READMEs, so not touched: no crate-count claim, no AGPL/Apache (MIT is right — workspace Cargo.toml:36 and all 20 crate dirs carry a LICENSE), no reference to a deleted crate or to the deleted fused/ module. The burn-sct “duplicated in dormouse-core” and burn-situ “wired 2026-10-01” notes are current.

Note: there are 20 per-crate READMEs, not 21 — 20 crates, one README each.

  • vendor/{cubecl-fix,cubek-fix}/*/Cargo.toml.orig, 5 files, 12 KB. patch backups from the vendoring, tracked since d1a76fe. Mechanically junk, but they are the only pre-patch copy of those manifests in the tree — the fork was committed already-patched, so git history has no “before”. The task’s rule is that ambiguous goes in the report, not the rm, and whether we want to re-derive the upstream delta later is not a hygiene call. Owner’s call. Reproduce the check: git ls-files 'vendor/**/*.orig'.
  • burn-fused/Cargo.toml:7 — the facade’s description still says “100+ technologies”, same claim as the README’s. A manifest, not a README, and it is published crates.io metadata; the README fix does not reach it.
  • docs/architecture/library-crate-fate.md is titled “The 28 crates” and says “Ten of its 28 crates are compiled into a training run”. Both were true at its snapshot 422414c (2026-09-28) and the doc names the snapshot in line 3, so it is a dated record rather than a false statement — but the “ten” is now 13, and it is the document the new README points a reader at. Root docs/, not the vendor library.
  • The 6 tracked *.bin oracle fixtures (19 MB, burn-gdn2/tests/) are matched by *.bin in the root .gitignore and un-ignored in vendor/dormouse-fused/.gitignore. Correct as it stands, and that file documents the trap (git check-ignore -v before trusting a green run) after a 1000-case fixture went missing for exactly this reason on 2026-09-29. No change; the root rule is what makes the footgun possible for anything added later.
  • The crates.io badges in ~13 per-crate READMEs render for crates that may never have been published (the library is consumed by path =). Whether they resolve needs a network check, which is out of a text-only lane.
  • bench/baselines.json still holds msa_sparse.fused_ms and covers 10 of 20 crates. Deleting a measurement is not the same as deleting the fact that it was taken, and benches/src/main.rs may still emit the key — that is a code question, so the two labels in §2/§4 point at it instead.
Terminal window
git ls-files | grep -iE '\.log$|\.tmp$|\.bak$|\.rej$|\.orig$|desktop\.ini|\.DS_Store'
cd vendor/dormouse-fused && grep -rn '\b28\b' --include=*.md . | grep -v target
cd vendor/dormouse-fused/crates && grep -rn 'actions/workflows/ci.yml' */README.md
python3 - <<'PY'
import re,glob,os
used={m.group(1) for t in glob.glob('../../crates/*/Cargo.toml')
for m in re.finditer(r'^\s*(burn-[\w-]+)\s*=\s*\{[^}]*path\s*=\s*"[^"]*burn-fused',open(t).read(),re.M)}
print(len(used),"in build:",sorted(used))
PY
hash what
a5076ab untrack .playwright-mcp/, runs/*.log, graphify-out/, the corrupt gd_logs.zip; two .gitignore rules
ead9f38 vendor/dormouse-fused/README.md rewritten to what the gate can back
15b2bc0 status headers on INTEGRATION.md, CONTRIBUTING.md, TEST-AUDIT.md, both bench/ docs; 4 real fixes inside INTEGRATION.md
ce94cbf 13 dead per-crate CI badges replaced with the gate that runs