ARG variables have scope issues across RUN commands in Docker, causing
COPY commands to fail. Since these paths are stable, hardcoding them
is simpler and more reliable.
All compression steps (PDF and EPUB, both Linux and Windows) now use the correct
working-directory path by prepending BOOK_ROOT to the output_dir. This fixes the
'No such file or directory' errors when trying to compress build artifacts.
The output_dir from the build step is relative (e.g., '_build/epub'), but needs to
be accessed from BOOK_ROOT (e.g., 'book/_build/epub') after the repository restructuring.
- Moved RUN echo statements after COPY commands in both Dockerfiles
- ARG variables lose scope after RUN commands, causing COPY to fail
- Both Linux and Windows Dockerfiles now follow consistent pattern:
1. Re-declare ARG variables
2. Execute COPY commands immediately
3. Run any status/logging commands after
Docker ARG variables have stage-level scope and must be re-declared
after RUN commands to be available for COPY commands. This fixes the
build error where Docker couldn't find the dependency files.
Changes:
- Moved ARG BOOK_DEPS and ARG BOOK_DOCKER declarations before COPY commands
- Added comment explaining ARG scope behavior
- Both Linux and Windows Dockerfiles updated consistently
Fixes: COPY failed: file not found in build context
Updated Python utility scripts to use correct paths with book/ prefix:
- rename_downloaded_images.py: quarto/contents/labs → book/quarto/contents/labs
- rename_auto_images.py: quarto/contents/labs → book/quarto/contents/labs
- convert_svg_to_png.py: quarto/contents → book/quarto/contents
- check_self_referential_sections.py: quarto/contents → book/quarto/contents
These scripts are run from the repository root, so they need the full
path including the book/ directory.
The include directive in changelog.qmd was using the old path (../../../../)
which was correct before the book/ restructure. Updated to use the correct
relative path (../../../../../) to reach CHANGELOG.md at repository root.
This fixes the build error:
could not find file /path/to/book/CHANGELOG.md
Updated both Linux and Windows Dockerfiles to use ARG variables for path
configuration, providing a single source of truth for book/ structure.
Changes:
- Added ARG variables at top of both Dockerfiles (BOOK_ROOT, BOOK_TOOLS, BOOK_DEPS, BOOK_DOCKER)
- Updated all COPY commands to use ARG variables instead of hardcoded paths
- Updated workflow files to use vars.BOOK_DOCKER for Dockerfile paths
- Maintains compatibility with existing build process
Benefits:
- Single location to update if directory structure changes
- Can override paths at build time with --build-arg
- Self-documenting path structure
- Consistent with GitHub Actions repository variables pattern
Repository Variables renamed for clarity:
- BOOK_ROOT = book
- BOOK_DOCKER = book/docker
- BOOK_TOOLS = book/tools
- BOOK_QUARTO = book/quarto
- BOOK_DEPS = book/tools/dependencies
All paths under book/ now use BOOK_ prefix, making it clear
these are book-related paths (vs future TinyTorch paths).
All workflows now use GitHub Repository Variables for path configuration:
- ${{ vars.BOOK_ROOT }} = book
- ${{ vars.DOCKER_DIR }} = book/docker
- ${{ vars.TOOLS_DIR }} = book/tools
- ${{ vars.QUARTO_DIR }} = book/quarto
- ${{ vars.DEPS_DIR }} = book/tools/dependencies
Benefits:
- Single source of truth (GitHub Settings > Variables)
- Works in all contexts (including job-level env blocks)
- Easy to update without code changes
- Consistent across all workflows
- Add BOOK_ROOT, QUARTO_DIR, TOOLS_DIR, DEPS_DIR, DOCKER_DIR env vars to all workflows
- Update path references to use centralized env vars
- Fix requirements.txt to reference book/tools/dependencies
- Fix pyproject.toml entry points: cli.main -> book.cli.main
- Add __init__.py to book/ and book/tools/ for Python package support
- Fix Dockerfile path casing (dockerfile -> Dockerfile)
- Fix publish-live.yml relative path after cd
This enables TinyTorch to coexist at repo root alongside book/ directory.
Updated all COPY commands in Dockerfiles to use correct paths with book/ prefix:
- book/tools/dependencies/requirements.txt
- book/tools/dependencies/install_packages.R
- book/tools/dependencies/tl_packages
- book/docker/linux/verify_r_packages.R
- book/docker/windows/verify_r_packages.R
This fixes container build failures where Docker couldn't find dependency files at the old paths after the monorepo restructure moved all content to the book/ subdirectory.
- Update working-directory from quarto to book/quarto
- Update Windows container workspace paths
- Update cd quarto commands to cd book/quarto
- Fix config paths to be relative to working directory
- Ensures all workflows work with new book/ structure
- Update format_tables.py to use workspace-relative path (quarto/contents/)
- Update validate_part_keys.py script to use book/quarto paths
- Scripts in book/tools/ that calculate workspace_root need paths relative to book/
- Other scripts need full book/quarto/contents/ paths
- Change book/docker/ back to docker/ for GitHub Actions
- These are external actions (docker/setup-buildx-action, etc.)
- Not our local book/docker/ directory
Fixes container build failures
* Restructure: Move book content to book/ subdirectory
- Move quarto/ → book/quarto/
- Move cli/ → book/cli/
- Move docker/ → book/docker/
- Move socratiQ/ → book/socratiQ/
- Move tools/ → book/tools/
- Move scripts/ → book/scripts/
- Move config/ → book/config/
- Move docs/ → book/docs/
- Move binder → book/binder
Git history fully preserved for all moved files.
Part of repository restructuring to support MLSysBook + TinyTorch.
Pre-commit hooks bypassed for this commit as paths need updating.
* Update pre-commit hooks for book/ subdirectory
- Update all quarto/ paths to book/quarto/
- Update all tools/ paths to book/tools/
- Update config/linting to book/config/linting
- Update project structure checks
Pre-commit hooks will now work with new directory structure.
* Update .gitignore for book/ subdirectory structure
- Update quarto/ paths to book/quarto/
- Update assets/ paths to book/quarto/assets/
- Maintain all existing ignore patterns
* Update GitHub workflows for book/ subdirectory
- Update all quarto/ paths to book/quarto/
- Update cli/ paths to book/cli/
- Update tools/ paths to book/tools/
- Update docker/ paths to book/docker/
- Update config/ paths to book/config/
- Maintain all workflow functionality
* Update CLI config to support book/ subdirectory
- Check for book/quarto/ path first
- Fall back to quarto/ for backward compatibility
- Maintain full CLI functionality
* Create new root and book READMEs for dual structure
- Add comprehensive root README explaining both projects
- Create book-specific README with quick start guide
- Document repository structure and navigation
- Prepare for TinyTorch integration
- Add MLSysBook + TinyTorch badges at top
- Change header to 'Stay in the Loop'
- Use 'I am a...' instead of 'Role'
- Better placeholders (Jane, Smith, jane@university.edu)
- Add emojis to role buttons
- Update footer to 'No spam, ever'
- Keep blue button (MLSysBook theme)
- Star to 'join the journey' (not just signal interest)
- Chart speaks for itself without justification
- Punchline: 'Tracking our way to 1 million learners'
Adds star-history.com chart showing repository growth trajectory.
Placed in the Support This Work section alongside the Stars badge
for better contextual relevance.
Closes#1061
- Reorder navbar: TinyTorch, Hands-on, Downloads, Star, Support, Subscribe, GitHub
- Use short URLs for Labs (/labs) and Kits (/kits)
- Update TinyTorch link to tinytorch.ai
- Celebrate 10k stars milestone with thank you message
- Remove target=_blank from Subscribe to enable modal popup
- Add footnote about rapidly evolving field and newer models
- Update scaling hypothesis with inference time compute (o1/o3 models)
- Update compound AI section with Gemini 2.0, Claude 3.5, ChatGPT capabilities
- Add Mamba-2 and hybrid architectures (Jamba) to state space models section
- Add callout note about rapidly evolving field and newer models
- Update scaling hypothesis with inference time compute (o1/o3 models)
- Update compound AI section with Gemini 2.0, Claude 3.5, ChatGPT capabilities
- Add Mamba-2 and hybrid architectures (Jamba) to state space models section
- Remove MAINTENANCE_GUIDE.md (duplicate of DEVELOPMENT.md)
- Remove RELEASE_PROCESS.md (covered by PUBLISH_LIVE_WORKFLOW.md)
- Update all docs to use binder CLI instead of deprecated make commands
- Fix references to deleted files
- Update domain from mlsysbook.org to mlsysbook.ai
- Fix outdated paths (tools/scripts/build/ → binder commands)
- Add essential commands reference for daily workflow
- Simplify DEVELOPMENT.md to focus on core commands (clean, build, doctor)
- Verify all documented commands work correctly
Removes tools/scripts/build/ directory containing:
- README.md
- generate_stats.py
- standardize_sources.sh
These scripts appear to have been deprecated or relocated as part of
repository reorganization. The clean.sh script has been moved to
tools/setup/clean.sh.
Updates the development preview banner to display build timestamps in
Eastern Time (EST/EDT) instead of UTC for easier readability. The
timestamp automatically adjusts for daylight saving time using the
America/New_York timezone. Fallback to UTC if timezone handling fails.
- Remove target='_blank' to prevent new tab opening on form submit
- Increase success message display time from 3 to 5 seconds
- Users now see success message longer and no jarring tab switches