Mutation testing (inject known defect, require pipeline FAIL) found two
escapes in the per-chapter verify:
- The duplicate-unit check received the whole substituted line and
compared the line's end against unit suffixes — it could effectively
never fire ('150 ms ms' passed 43/43). Rewritten to check the prose
immediately after each {python} ref against the unit the closed
formatter already emitted.
- An unclosed $...$ span renders as literal '$() = 1 - (1 - p)^N.' in
reader-visible prose and no gate caught it. chapter_html_verify now
strips client-rendered math/pseudocode containers from visible text
and flags unrendered math delimiters, '$' before a symbol, and
unresolved @sec-/@fig- crossrefs. Validated against all 44 archived
chapter pages: one true positive (nn_architectures), zero false
positives.
Also create the gitignored reports dir before snapshotting so a fresh
worktree run does not die at the first cp.
Every chapter can be certified via verify_lego_chapter.sh: HTML build, all
cells, all inline refs with HTML context, and optional LLM coherence. Includes
batch runners, stale-HTML cleanup for single-chapter builds, and math-aware
context extraction for fmt_frac exports.
Allow intentional cross-section anchors in lego_focal_verify, skip algorithm
LaTeX false positives in audit_html, and add appendix_inference to HTML builds.
Document the chapter-anchor exception in LEGO_CELLS.md; ledger now 45/45 pass.
Add binder gates that ban legacy constant aliases, hardcoded grid literals,
and prose operands next to {python} refs; migrate appendices and chapter
callouts to export intermediate values from mlsysim registries so worked
math stays machine-verified instead of hand-typed.
Wire Systems.Nodes to Hardware nvlink specs, inject solver latencies from fleet operands, tighten the public mlsysim API, and land PDF/HTML audit verifiers with refreshed 44/44 ledgers.