Commit Graph

36 Commits

Author SHA1 Message Date
Vijay Janapa Reddi
d238eb6085 feat: add rename-safe betterbib sync 2026-05-04 18:56:19 -04:00
Vijay Janapa Reddi
ed197a6be0 feat(bib): add 'bib normalize' subcommand + expand bib_lint §5 hygiene
Adds the 'bib normalize' subcommand referenced by .pre-commit-config.yaml
but missing from binder until now. Runs the same three-step pipeline as
pre-commit: bib_apply_mechanical_fixes -> bibtex-tidy (loop until pass) ->
bib_lint --check. Supports full-tree or scoped (--vol1/--vol2/--path) runs.

bib_lint.py: extend §5 hygiene checks — additional journal abbreviations
(J. ACM, IEEE Trans. Comput., ACM Computing Surveys, etc.), more canonical
publishers (USENIX, IEEE Computer Society, SAGE, PLOS, Frontiers), and
heuristics for trailing-period titles, all-caps paste, Title-Case, short
booktitle without (ACRONYM), @article volume requirement, and pages prefix.
Doc reference updated from book-prose-merged.md to book-prose.md.

BINDER.md: document the bib normalize command and its relationship to the
pre-commit pipeline.
2026-05-02 13:19:07 -04:00
Vijay Janapa Reddi
3c95e3e67c refactor(quizzes): rename book/tools/scripts/genai/quiz_refresh to quizzes
The genai/ folder advertised an implementation detail (AI-driven) and
held only one tool. The siblings under book/tools/scripts/ are all
named by purpose (audit/, glossary/, mit_press/, publish/, ...) — this
brings the quiz pipeline into line with that convention.

Changes:
- git mv book/tools/scripts/genai/quiz_refresh -> book/tools/scripts/quizzes
- empty genai/ parent directory removed
- 4 path-string references rewritten (filters.yml comment, three
  internal docstrings/CLI examples in README/generate_quizzes/
  build_audit_context)
- 2 BUILD.md + DEVELOPMENT.md tree-listing entries updated to point at
  the new path
- README.md title and tagline updated (no longer "Quiz Refresh — runner";
  the "quiz-refresh pattern" label is replaced with "spec-plus-runner
  pattern" since the directory name now self-documents)
- generate_quizzes.py: meta["generated_by"] now writes
  "quizzes/generate_quizzes.py" (was "quiz-refresh/generate_quizzes.py");
  --skip-existing matcher loosened from "quiz-refresh" substring to
  "generate_quizzes" so it accepts both old and new descriptors
- 33 chapter quiz JSONs and 30 _audit/*_audit.json files: the
  generated_by metadata string updated to match new descriptor
- extract_anchors.py docstring: "quiz-refresh pipeline" -> "quizzes pipeline"

Verified post-rename:
- All scripts parse (ast.parse on all three .py files passes)
- validate_quiz_json.py works on sample chapters from each volume
- --skip-existing dry-run matches the new descriptor correctly
- git grep finds no remaining "genai/" or "quiz_refresh" references;
  the one remaining "quiz-refresh" reference is an intentional
  backwards-compat note in the --skip-existing comment block

The chapter quiz corpus and the spec at .claude/rules/quiz-generation.md
are unchanged in content — this is purely a directory + descriptor rename.
2026-04-25 08:09:47 -04:00
Vijay Janapa Reddi
fa5923610a docs: add top-level community health files (CONTRIBUTING, CoC, SECURITY, CITATION) and dependabot
Aligns the repository with GitHub community-standard recommendations and
makes the project's policies discoverable from the root, where contributors
and tooling actually look for them.

- CONTRIBUTING.md (root): router to per-project guides plus universal
  policies (branch from dev, ./book/binder setup, no `git add .`).
- CODE_OF_CONDUCT.md (root): canonical Contributor Covenant 2.1, lifted
  from book/docs/. The book/docs version becomes a thin pointer so we
  have a single source of truth.
- SECURITY.md: private vulnerability reporting via GitHub Security
  Advisory + maintainer email, with explicit in-scope/out-of-scope
  boundaries (textbook typos are not security issues).
- CITATION.cff: machine-readable mirror of CITATION.bib so GitHub's
  "Cite this repository" button works.
- .github/dependabot.yml: weekly bumps against `dev` for every actual
  ecosystem in the repo (pip, npm, github-actions), grouped where it
  makes sense (Next/React together).
- .github/ISSUE_TEMPLATE/config.yml: blank_issues_enabled=false to keep
  reports on-template; added security-advisory contact link.
2026-04-22 17:06:45 -04:00
Vijay Janapa Reddi
d2731d8bc3 chore: remove leftover AI-session planning and audit docs
Clean up planning, kickoff, audit, and persona-feedback documents
accumulated during prior AI-assisted work sessions. These are
session artifacts, not durable documentation — the decisions they
captured have either shipped, been retired, or are traceable via
git history.

interviews/vault/REVIEWS.md is intentionally kept: it is cited by
section ID (H-6, H-7, H-21, C-6, ...) from production code in
interviews/vault-cli/ and interviews/vault/ and published as the
pyproject.toml Review-Ledger URL, which makes it engineering
documentation rather than a session artifact.

Deletions:
- RELEASE-PREP.md, review_prompt.md (root handoff / review prompts)
- interviews/vault/KICKOFF.md, BOOK_LINKING_PLAN.md, EXPANSION_PLAN.md
- interviews/staffml/FEEDBACK_SYNTHESIS.md, V1_REDESIGN_SPEC.md,
  STAFFML_UX_PLAN.md, VAULT_DESIGN_PLAN.md
- interviews/staffml/.gemini-reviews/ (2 review call logs)
- book/docs/SVG_FIGURE_AUDIT_PLAN.md, book/tools/agent_personas.md
- mlsysim/docs/WEBSITE_AUDIT.md
- periodic-table/iteration-log.md, refinement-log.md

Reference fixes for pointers into deleted files:
- interviews/vault/ARCHITECTURE.md: drop section 21 (pointed at KICKOFF.md)
- interviews/vault/schema/question_schema.yaml: drop BOOK_LINKING_PLAN.md
  reference in the author-curated resource description
- interviews/staffml/src/components/Footer.tsx: drop BOOK_LINKING_PLAN.md
  reference from the docstring; rationale preserved

Also removes the untracked gemini_prompts/ directory at repo root.
2026-04-21 11:23:41 -04:00
Vijay Janapa Reddi
9e194e6ddd fix(onboarding): activate pre-commit framework by default
A previously-overlooked gap: `.pre-commit-config.yaml` has been
committed to the repo with ~60 hooks for years, but contributors who
do a fresh clone never get the framework activated unless they know
to run `pre-commit install` manually. There was no onboarding doc
pointing to this step, and the `./binder setup` command that existed
ran doctor but did not install hooks.

Symptom on my local clone: `.git/hooks/pre-commit` was a symlink to
`interviews/vault-cli/scripts/pre_commit_corpus_guard.py` rather
than the pre-commit framework dispatcher. The corpus-guard fired on
every commit (good — it protects interviews/vault/corpus.json per
ARCHITECTURE.md §11.1) but the ~60 framework hooks did not — including
the EPUB hygiene hook landed in the recent fix/epub-issues merge.

Four-part fix
-------------

1. Vault corpus-guard is wired into .pre-commit-config.yaml as a
   local `always_run: true` hook pointing at the repo-tracked script.
   Same protection, now delivered via the framework so a contributor
   who runs `pre-commit install` (or `./binder setup`) gets BOTH the
   corpus-guard AND every other hook in one shot. The bare
   `.git/hooks/pre-commit` symlink is no longer needed.

2. `./binder setup` now actually installs the pre-commit hooks
   (previously it just ran doctor). New `_install_pre_commit_hooks`
   helper in maintenance.py:
     * Locates .pre-commit-config.yaml at repo root.
     * Verifies `pre-commit` is on PATH.
     * Detects the core.hooksPath trap that makes `pre-commit
       install` refuse, and prints the one-line unset command.
     * Runs `pre-commit install` with cwd=repo_root (critical — see
       below).
     * Streams the framework's own confirmation lines.

3. Deleted `book/.pre-commit-config.yaml`. This was a legacy,
   parallel config with broken paths (entries referenced
   `tools/scripts/...` rather than `book/tools/scripts/...`).
   Running `pre-commit install` from inside `book/` picked up this
   orphan instead of the canonical root config, wiring a broken
   hook that failed every commit with "can't open file
   /Users/VJ/GitHub/MLSysBook/tools/scripts/maintenance/
   cleanup_build_artifacts.py". Every hook in the orphan had a
   functional equivalent under a `book-*` prefix in the top-level
   config (verified by cross-check), so deletion is lossless.

4. Step 3 of book/docs/CONTRIBUTING.md is now "Set Up the Development
   Environment" with a one-liner invoking `./book/binder setup`.
   Downstream steps renumbered (4-8). New contributors hitting
   `git commit` for the first time now see the hooks fire instead
   of silently bypassing them.

Verification
------------
After `./binder setup` on a clone that had the bare corpus-guard symlink:
  pre-commit installed at .git/hooks/pre-commit
  (old symlink preserved at .git/hooks/pre-commit.legacy)

`pre-commit run vault-corpus-guard --all-files` → Passed
`pre-commit run book-epub-hygiene  --all-files` → Passed

Both the corpus-guard and the EPUB hygiene layer now dispatch through
the same framework, and the ~60 other book-* hooks that were dormant
for anyone without manual activation are now active out of the box.
2026-04-20 17:57:23 -04:00
Vijay Janapa Reddi
9caea77553 docs(audit): resumable plan for Gemini-driven SVG figure quality sweep
Self-contained pickup-ready plan covering all 238 SVG figures under
book/quarto/contents/. Specifies inventory + batching, render tooling
(rsvg-convert primary, inkscape fallback, optional headless Chromium
for filter/font verification), gemini-3.1-pro-preview invocation
pattern with @-image attachments and JSON schema, the iterative fix
loop (max 3 attempts per figure with auto-revert), strict guardrails
(no full-file SVG overwrites, atomic commits, forbidden paths),
resumable state file, and a final report format.
2026-04-19 12:29:52 -04:00
Vijay Janapa Reddi
d6029d2c35 feat(site): landing freshness badge, lower nav collapse, mobile QA doc
Landing page (site/index.qmd, site/landing-v3.css):
  Add a small freshness indicator to the hero — pulsing green dot,
  "Actively maintained · Last updated April 2026 · Release notes"
  link. Communicates to first-time visitors that the textbook is a
  living project, not a shipped-and-forgotten resource. Pulse uses
  reduced-motion-friendly animation timing.

Subscribe modal (site/_quarto.yml):
  Switch the script src from a cross-site /vol1/... URL to the local
  /assets/scripts/subscribe-modal.js — the marketing site now ships
  its own copy via the mirror sync (shared/scripts/sync-mirrors.sh),
  so it doesn't depend on the book bundle being reachable.

Navbar breakpoint (shared/config/navbar-common.yml):
  Lower navbar.collapse-below from "xl" (1200px) to "lg" (992px) so
  13-15in laptops keep the full nav visible instead of collapsing
  into the hamburger. Affects every subsite that includes the
  shared navbar config.

Mobile QA (book/docs/MOBILE_QA.md):
  Manual checklist for verifying margin sidenotes, citations,
  navbar, and TOC behaviour on iOS / Android at common breakpoints.
  Used as a release gate; not part of automated CI yet.
2026-04-19 10:31:41 -04:00
Vijay Janapa Reddi
c3bfab7d2a docs: update contributing guides, PR template, and issue templates
- Rewrite book CONTRIBUTING.md with correct two-volume paths, git workflow, and editorial standards
- Fix tinytorch CONTRIBUTING.md: python3 everywhere, remove duplicate recognition section
- Replace StaffML-only PR template with general-purpose template covering all areas
- Add bug report and TinyTorch improvement issue templates
- Add config.yml to route questions to Discussions
- Remove stale TINYTORCH_ISSUE_TEMPLATE/ (non-standard location, outdated module names)
2026-03-28 16:02:45 -04:00
Vijay Janapa Reddi
72d714ead8 Improve container preflight diagnostics and docs references.
Add explicit per-check preflight logging and matrix failure instance reporting in the container build workflow, and update stale documentation links and workflow/file path references.
2026-03-05 16:03:00 -05:00
Vijay Janapa Reddi
7992c8ff13 Switch book validation to container-only fail-fast builds.
Remove baremetal workflow usage and add explicit Linux/Windows preflight toolchain checks so missing dependencies fail immediately before render.
2026-03-05 15:33:19 -05:00
Vijay Janapa Reddi
96fa7ac5e5 chore: bump Quarto to 1.9.27 and R to 4.5.2
- Quarto 1.9.27: Linux (.deb), Windows (direct download; Scoop Extras has 1.8.27)
- R 4.5.2: Linux (CRAN jammy-cran40), Windows (Scoop main/r)
- Baremetal: quarto-actions/setup for both Linux and Windows
- Remove ggrepel version pin (R 4.5.x supports ggrepel 0.9.7)
- Update docs: BUILD.md, CONTAINER_BUILDS.md, docker READMEs
2026-03-02 17:36:35 -05:00
Vijay Janapa Reddi
56e091f7e0 feat: standardize System Archetypes in Vol 1 and Vol 2; add canonical roster table to Introductions; ensure tight math-prose integration 2026-02-24 20:23:50 -05:00
Vijay Janapa Reddi
09602445de chore: update book content, config, appendices, and tooling
- Vol1: chapter updates across backmatter, benchmarking, data, frameworks, etc.
- Vol2: content updates, new appendices (assumptions, communication, fleet, reliability)
- Quarto: config, styles, formulas, constants
- Add SEMINAL_PAPERS_V2.md, learning_objectives_bolding_parallel.sh
- VSCode extension: package.json, chapterNavigatorProvider
- Landing page and docs updates
2026-02-20 18:55:24 -05:00
Vijay Janapa Reddi
2390c3ab31 Refactor: consolidate Quarto config layers and content reorganization.
Unifies Quarto metadata into shared base/format/volume fragments while carrying through chapter path, asset, and tooling updates to keep the repository consistent and easier to maintain.
2026-02-12 15:38:55 -05:00
Vijay Janapa Reddi
ff3797a1d8 Refactor: Finalize Volume 1 and update CLI/VSCode tooling
- Completed full Volume 1 refactor to Safe Class Namespace pattern.

- Fixed render errors and verified all 16 chapters.

- Updated 'binder' CLI with native validation and maintenance namespaces.

- Enhanced VS Code extension with Chapter Navigator and Run History.

- Integrated 'binder validate' into pre-commit workflows.
2026-02-11 09:25:50 -05:00
Vijay Janapa Reddi
3750ee12e9 Enforce Computed Arithmetic Rule across all chapters (1,064 inline refs, 0 unresolved)
Replace every hand-typed derived number with Python-computed inline
references. Add just-in-time compute cells before prose so that changing
any input constant automatically propagates to all derived values.

Vol 1 chapters fixed: dl_primer, dnn_architectures, serving,
model_compression, hw_acceleration, benchmarking, ops, appendix_machine,
appendix_data, frameworks, data_engineering, training, ml_systems,
responsible_engr, data_selection, workflow, introduction.

Vol 2 chapters fixed: distributed_training, inference, infrastructure,
storage, sustainable_ai, fault_tolerance, ops_scale, edge_intelligence,
ai_for_good, privacy_security.

Key corrections caught by forcing computation:
- training.qmd carbon footprint: 64 GPUs → 1024 GPUs (original was
  mathematically impossible for 7B params × 1T tokens)
- hw_acceleration.qmd systolic energy: 10 pJ/250× → 11 pJ/233× (exact)
- hw_acceleration.qmd GPT-2 utilization: 0.6% → 0.7% (exact)
- serving.qmd tokens/hour: ~190M → ~192M (exact)

Also adds calc/validate_inline_refs.py pre-render guardrail and
extends calc/viz.py with Harvard Crimson plotting palette.
2026-02-01 11:13:42 -05:00
Vijay Janapa Reddi
e3d4deeb12 Standardize volume titles to full 'Machine Learning Systems' naming
Replaces abbreviated 'ML Systems' with 'Machine Learning Systems' across
volume titles, part openers, frontmatter, summaries, docs, and landing page
for consistency with MIT Press submission standards.
2026-01-31 19:45:52 -05:00
Vijay Janapa Reddi
26e9b65db1 Merge latest dev updates into feat/volume-restructure 2026-01-21 19:30:00 -05:00
Vijay Janapa Reddi
149d945a51 Add per-project All Contributors setup
Set up separate contributor tracking for each sub-project:
- book/.all-contributorsrc - Book content contributors
- kits/.all-contributorsrc - Hardware kit contributors
- labs/.all-contributorsrc - Lab exercise contributors
- tinytorch/.all-contributorsrc - Framework contributors

Each project now has:
- Its own .all-contributorsrc config file
- Contributors section in README with All Contributors format
- Project-specific contribution types in the recognition guide
- Cheatsheet in CONTRIBUTING.md (where applicable)

Added @AmirAlasady as first TinyTorch contributor for bug report #1122.

Usage: Comment on any issue/PR with:
@all-contributors please add @username for bug, code, doc, or ideas
2026-01-20 13:35:00 -05:00
Vijay Janapa Reddi
9a44d0ea16 Removes learning objectives framework
Removes the learning objectives framework, part key validation system, and the publish live workflow documentation.

These files are being removed to facilitate a reorganization of the project's documentation structure and workflows.
2026-01-07 11:57:35 -05:00
Vijay Janapa Reddi
da8e419df6 Merge dev: bring in infrastructure changes
- Cloudflare migration (Netlify removed)
- Book deployed to /book/
- Publish All workflow
- gh-pages cleanup
- Changelog deprecated
- MIT Press reviewer feedback
- Labs rename (collabs -> labs)
2026-01-06 15:24:07 -05:00
Vijay Janapa Reddi
8160d5869c refactor: deprecate CHANGELOG.md in favor of GitHub Releases
- Remove CHANGELOG.md from repo root
- Remove changelog.qmd page from book frontmatter
- Remove changelog from navbar in HTML, PDF, and EPUB configs
- Delete changelog generation scripts (generate_release_content.py, etc.)
- Update documentation to remove changelog references

GitHub Releases now serves as the primary changelog for version updates.
The version number in the navbar already links to releases.
2026-01-06 11:31:35 -05:00
Vijay Janapa Reddi
cdcb4e9529 chore: remove volume-splitting strategy docs from public repo
These files contain internal planning documents that should not be
public:
- VOLUME_SPLIT_ROADMAP.md (project timeline and MIT Press plans)
- VOLUME_SPLIT_SURGICAL_PLAN.md (section-by-section surgery)
- VOLUME_STRUCTURE_PROPOSAL.md (publisher proposal draft)
2026-01-04 18:07:27 -05:00
Vijay Janapa Reddi
c6a3036151 docs: update AI Triangle to AI Triad in learning objectives framework
Align documentation with the renamed framework terminology used
throughout both volumes of the textbook.
2026-01-03 13:45:37 -05:00
Vijay Janapa Reddi
95e0eafcdc refactor: rename Vol I tagline from Operate to Deploy
Update Volume I tagline from "Build, Optimize, Operate" to
"Build, Optimize, Deploy" across all documentation.

- "Deploy" better matches Part IV content (Serving, MLOps, Responsible Engineering)
- "Operate" implies ongoing management which is more Volume II territory
- Also fixes hw_acceleration table to use proper grid table format
2026-01-03 10:09:19 -05:00
Vijay Janapa Reddi
773897c07d refactor: restructure Vol II chapters and add Vol I serving chapter
This commit consolidates several structural changes:

1. Merge ondevice_learning into edge_intelligence chapter
   - Add support files (bib, concepts, glossary, quizzes)
   - Add images from former ondevice_learning
   - Update all cross-references from @sec-ondevice-learning to @sec-edge-intelligence

2. Delete Vol II hw_acceleration chapter (merged into distributed_training)

3. Add new Serving chapter to Vol I Part IV (Deployment)
   - Create placeholder serving.qmd with section structure
   - Add support files for bibliography, concepts, glossary, quizzes

4. Update configs and documentation
   - Update _quarto-html.yml with serving chapter in sidebar and bibliography
   - Update VOLUME_STRUCTURE.md to reflect 16 chapters in Vol I
   - Update About page with simplified Part names
   - Fix table formatting in hw_acceleration chapter

Vol I now has 16 chapters (4 in each Part) matching Vol II structure.
2026-01-03 10:01:25 -05:00
Vijay Janapa Reddi
ddb8068e6b docs: remove stale volume planning documents
Remove outdated planning documents that have been superseded by
VOLUME_STRUCTURE.md which now serves as the authoritative reference
for the two-volume textbook organization.

Removed files:
- VOLUME_SPLIT_ROADMAP.md
- VOLUME_SPLIT_SURGICAL_PLAN.md
- VOLUME_STRUCTURE_PROPOSAL.md
- reviewer-feedback-synthesis-r1.md
- volume-outline-draft.md
2026-01-03 09:57:16 -05:00
Vijay Janapa Reddi
f3a38e32d5 refactor: simplify Vol I Part names to single words
Change Part names from compound to single-word format:
- ML Foundations → Foundations
- System Development → Development
- Model Optimization → Optimization
- System Operations → Deployment

Creates clean pedagogical progression: Foundations → Development → Optimization → Deployment
2026-01-03 09:31:19 -05:00
Vijay Janapa Reddi
0266ee24bc docs: add approved two-volume structure outline
Volume I: Introduction to ML Systems (14 chapters)
- Part I: Foundations (Ch 1-4)
- Part II: Development (Ch 5-8)
- Part III: Optimization (Ch 9-12)
- Part IV: Operations (Ch 13-14)

Volume II: Advanced ML Systems (16 chapters)
- Part I: Foundations of Scale (Ch 1-4)
- Part II: Distributed Systems (Ch 5-8)
- Part III: Production Challenges (Ch 9-12)
- Part IV: Responsible Deployment (Ch 13-16)

Structure approved for website implementation.
2025-12-31 08:50:49 -05:00
Vijay Janapa Reddi
853eb03ee8 style: apply consistent whitespace and formatting across codebase 2025-12-13 14:05:34 -05:00
Vijay Janapa Reddi
96d487f211 docs: restructure READMEs for book and TinyTorch integration
- Root README: Add ML-Systems bridge table, book structure, and what makes this book different
- book/README: Simplify to build instructions for contributors
- tinytorch/README: Streamline with correct clone URL and Early Access status
- Rename contribute.md to CONTRIBUTING.md for consistency
2025-12-10 06:35:58 -08:00
Vijay Janapa Reddi
bee262de3e docs: add comprehensive volume split planning documents
- Add MIT_PRESS_PROPOSAL.md: polished proposal for two-volume series
- Add VOLUME_SPLIT_ROADMAP.md: 6-month master project plan with progress tracking
- Add VOLUME_SPLIT_SURGICAL_PLAN.md: detailed section-by-section surgery instructions

These documents establish the complete roadmap for splitting the ML Systems
textbook into two flagship volumes for MIT Press publication.
2025-12-07 06:54:55 -08:00
Vijay Janapa Reddi
6330421ffd docs: update volume structure proposal
Updated volume organization and structure planning document
2025-12-07 06:07:52 -08:00
Vijay Janapa Reddi
56a5abff0f docs: add volume structure proposal and distribution design docs
- book/docs/VOLUME_STRUCTURE_PROPOSAL.md: Proposal for textbook volume structure
- tinytorch/docs/DISTRIBUTION_DESIGN.md: Design document for TinyTorch pip distribution
2025-12-06 21:20:57 -08:00
Vijay Janapa Reddi
7b92e11193 Repository Restructuring: Prepare for TinyTorch Integration (#1068)
* 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
2025-12-05 14:04:21 -08:00