Parallel and debug builds removed their worktrees only on normal exit or
Ctrl-C. SIGTERM (timeouts, agent harnesses) and SIGHUP (closed terminal)
killed the process before cleanup, and nothing ever swept the leftovers,
so detached worktrees piled up in $TMPDIR/binder-workspaces (28 GB today).
- run_jobs and the debug bisection now turn SIGTERM/SIGHUP into
KeyboardInterrupt, so their existing cleanup runs.
- run_jobs first removes runs whose binder process has exited (the pid is
in the run directory name) and prunes their worktree registrations.
- --keep-workspaces runs are marked and skipped by the automatic sweep.
- New `binder clean workspaces` removes leftovers on demand, kept runs
included.
Retitle the chapter ML Lifecycle and rename its folder, files, assets,
lab, slides, audit data, and instructor links, with redirects for the
old URLs. Section IDs keep the sec-ml-workflow prefix. Update the ch2
hand-off and the conclusion to name the lifecycle.
Rename the chapter folder, assets, lab, slides, audit data, and staffml
links from 02_ml_systems to 02_system_paradigms, with redirects for the
old URLs. Revise the introduction, notation, conventions, and about
pages, adding the frontmatter stack figures. Add park2024offloading.
Replaces the removed fast-build description with how selected-chapter, parallel, and debug builds work, fixes the stale build output paths, and updates command examples.
Removes content-authoring scripts, figure and data generators, and their working notes, which are not needed to build, check, or release the books and sites. The vault CLI drops the matching subcommands and doctor check; docs, comments, ignore rules, and the codegen hash are updated to match what remains.
- Vol II: close the margin note wrapping the storage-compute figure,
move the bandwidth figure out of its callout, and separate the NPU
figure from the preceding footnote so all three cross-references
resolve; widen Table 11.3 so it stays inside the page trim.
- Landing pages: hide the download card, star counter, and podcast from
EPUB output and point the cover and podcast at shared/assets.
- Vol I/II frontmatter image paths, table column widths, Vol III
equation labels, Vol IV lint fixes and SVG newline repairs, and
regenerated volume bibliographies.
- Bibliography integrity scan ignores math spans; currency check skips
render caches; Prentice Hall joins the canonical publisher list.
- Unprefixed chapter URLs publish redirect stubs to numbered pages.
- Remove stray test files, duplicate quiz files, unused cover options,
generated figure lists, and outdated review scripts; drop generator
metadata from quiz files.
- Repoint documentation at current chapter paths and deduplicate
pre-commit file patterns.
Binder error messages, the LEGO cell guide, mlsysim's currency error, check
docstrings, and pre-commit comments cited private rule files that are not part
of this repository. Their guidance stands on its own without the pointer. The
root .gitignore now also covers local editor configuration files, which
were ignored only by a local exclude file.
binder layout tables writes contact sheets, CSV/JSON reports, and a
generated QMD under binder/.layout/tables/<vol>. Untrack the vol2 run and
ignore that directory; the old book/.layout/ and books/.layout/ ignore
lines pointed where the tool no longer writes. The series-figure and
stack-prototypes design artifacts stay tracked.
TinyTorch, MLSys·im, MLPerf EDU, the slides, and the instructor site return
from packages/ and materials/ to the top level, so each folder carries the
name of its site URL (tinytorch/ is mlsysbook.ai/tinytorch/). main still has
this layout, so the GitHub links on the published pages, existing tito
installs, and the release hashes keep working.
References follow: workflows, the binder toolchain, book configs, tests,
docs, contributor tooling, .gitignore, and pre-commit patterns. Relative
paths inside the moved projects drop the extra ../ they gained under
packages/ and materials/, which also repairs the MLSys·im contributing guide
and tutorial decks that pointed at the removed slides symlink. The TinyTorch
installer and updater return to a single sparse path. REPO_LAYOUT.md and
CI-VARIABLES.md describe the result.
The layout doc covered only books/ and a bindery/ toolchain reached through
a ./binder symlink. It now maps every top-level area, explains the
generated _quarto.yml, and records the September 2026 moves. Stale
quarto/contents paths in the binder README, BUILD.md, and
PART_KEY_VALIDATION.md now point at books/, and the TinyTorch links in the
binder and kits READMEs point at packages/tinytorch/.
- kits, labs, and the MLSys·im docs: _quarto.yml was a symlink to
config/_quarto-html.yml. The website config now lives at _quarto.yml.
The kits PDF build copies config/_quarto-pdf.yml over it for the render
and restores it afterwards, and the CI PDF job copies instead of linking.
- Book builds: the binder CLI wrote books/_quarto.yml and books/index.qmd
as symlinks. ConfigManager.activate_config (formerly setup_symlink) now
writes copies, and the first line of _quarto.yml names its source, which
status, doctor, clean, and save_latex_log read. The mapped chapter
harness snapshots and restores both files by content. The Linux container
job copies index.qmd, as the Windows job already did.
- StaffML: releases/latest was a symlink to the current release directory.
releases/latest.txt now holds the version and is replaced atomically on
publish; vault doctor, release publish, and the paper macro script read
it.
A worktree that still holds the old books/_quarto.yml or index.qmd symlink
is safe: the next build removes the link before writing, so the source
config and volume index are never overwritten through it.
The top-level mlsysim, tinytorch, mlperf-edu, slides, and instructors
entries were symlinks into packages/ and materials/. Every reference now
names the real path, and the symlinks are removed.
- Workflows: path filters, working directories, artifact and publish
paths, and the TINYTORCH_SITE, MLSYSIM_DOCS, SLIDES_ROOT, and
INSTRUCTORS_ROOT variables, which now carry fallbacks. The gh-pages
deploy trees and the site URLs keep their top-level names.
- Book builds: PYTHONPATH in the PDF configs and execute-env.yml points
at packages/mlsysim. The execute-env.yml value was still written for
the old publishing/quarto project root.
- The binder toolchain, labs, and tests load mlsysim from
packages/mlsysim, and the root pytest config puts it on sys.path. That
clears the binder test failures caused by importing the symlink as a
namespace package (now 362 passed).
- The TinyTorch installer and `tito system update` fetch packages/tinytorch
and fall back to tinytorch/ for tags that predate the move. Binder launch
links and postBuild open packages/tinytorch.
- READMEs, CONTRIBUTING, SECURITY, contributor tooling, area labels,
.gitignore, and pre-commit patterns name the real paths.
A repository variable that still holds an old top-level path overrides
the new fallback and breaks its workflow, so those variables need
updating before these workflows run.
The toolchain folder is now binder/, and the root ./binder symlink is gone.
The command is ./binder/binder: a plain path to the script, with no link and
no install step. Every invocation moved with it: pre-commit entries, workflow
steps, the VS Code extension's command palette, help text, and docs.
- bindery/ paths and bindery.* imports, including the chapter code cells
that import binder.tools.figures, now name binder/.
- Binder (mybinder.org) reads its configuration from a root binder/ folder
and refuses to build when binder/ and .binder/ both exist. .binder/postBuild
and .binder/requirements.txt move into binder/, so the TinyTorch "Launch
Binder" buttons keep working; binder/README.md records which file names the
toolchain must not use there.
- contributors/projects.json still pointed the book's contributor record at
publishing/; it now names binder/, where that .all-contributorsrc lives.
- The margin-figure reader-link audit report linked its 222 figures through
the retired quarto/ tree; the links now resolve under books/.
The hooks reformatted hidden Python cells and trimmed whitespace in the
Volume II chapters whose figure imports this rename touches.
Checks: ./binder/binder check cli passes (contract and canonical hooks),
binder.tools.figures imports, and every workflow YAML file parses.
binder test suite, excluding the four modules that cannot import mlsysim
through the root symlink (fixed separately): 7 failed, 346 passed.
The GitHub repository variables BOOK_ROOT, BOOK_TOOLS, BOOK_DEPS, and
BOOK_DOCKER still name the retired book/ layout and must change when this
reaches origin.