mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-07-16 14:42:29 -05:00
[PR #1556] [MERGED] feat(footnotes): citation-adjacency placement audit + binder rule #15572
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/harvard-edge/cs249r_book/pull/1556
Author: @profvjreddi
Created: 4/26/2026
Status: ✅ Merged
Merged: 4/26/2026
Merged by: @profvjreddi
Base:
dev← Head:feat/footnote-citation-polish📝 Commits (10+)
c4338e1fix(intro): anchor Viola-Jones footnote to concept, not citationacae94cfix(ml_workflow): decouple Waterfall footnote from Royce citation756fbc3fix(nn_computation): anchor concept footnotes to terms, not citations675f398fix(benchmarking): anchor cuDNN and SQuAD footnotes to terms, not citations37723e2fix(ml_ops): anchor Prometheus footnote to tool name, not citationa158659fix(responsible_ai): anchor concept footnotes to terms, not citationsff7c462fix(edge_intelligence): anchor Gboard footnote to product name, not citatione588634fix(fault_tolerance): anchor Hamming footnote to ECC concept, not citation339d151fix(sustainable_ai): decouple TSMC water-scale footnote from citation1dcf03efix(robust_ai): anchor C&W attack footnote to attack name, not citation📊 Changes
12 files changed (+54 additions, -21 deletions)
View changed files
📝
.pre-commit-config.yaml(+1 -1)📝
book/cli/commands/validate.py(+34 -1)📝
book/quarto/contents/vol1/benchmarking/benchmarking.qmd(+2 -2)📝
book/quarto/contents/vol1/introduction/introduction.qmd(+1 -1)📝
book/quarto/contents/vol1/ml_ops/ml_ops.qmd(+1 -1)📝
book/quarto/contents/vol1/ml_workflow/ml_workflow.qmd(+1 -1)📝
book/quarto/contents/vol1/nn_computation/nn_computation.qmd(+6 -6)📝
book/quarto/contents/vol2/edge_intelligence/edge_intelligence.qmd(+1 -1)📝
book/quarto/contents/vol2/fault_tolerance/fault_tolerance.qmd(+1 -1)📝
book/quarto/contents/vol2/responsible_ai/responsible_ai.qmd(+4 -4)📝
book/quarto/contents/vol2/robust_ai/robust_ai.qmd(+1 -1)📝
book/quarto/contents/vol2/sustainable_ai/sustainable_ai.qmd(+1 -1)📄 Description
12 commits from the games-polish worktree that landed locally during today's polish loop, replayed onto current dev tip.
What this PR does
Sweeps every chapter that had a
**Term**[@cite][^fn-...]adjacency pattern (footnote attached directly to a citation) and re-anchors the footnote to a concept term rather than to the citation marker. Then adds a binder check + pre-commit rule to prevent the pattern from regressing.Footnote placement fixes (10 chapters)
Each fix anchors a footnote to a concept/term/product/tool rather than to the immediately-adjacent citation:
intro— Viola-Jones footnote → concept, not citationml_workflow— Waterfall footnote → decoupled from Royce citationnn_computation— multiple concept footnotesbenchmarking— cuDNN and SQuAD footnotesml_ops— Prometheus footnote → tool nameresponsible_ai— concept footnotes → termsedge_intelligence— Gboard footnote → product namefault_tolerance— Hamming footnote → ECC conceptsustainable_ai— TSMC water-scale footnote → decoupled from citationrobust_ai— C&W attack footnote → attack nameBinder enforcement
feat(binder): catch [@cite][^fn-...] adjacency in footnote placement check— adds the audit checkfix(binder): tolerate whitespace in [@cite][^fn-...] detection— false-positive fixProvenance
These commits originated in the
MLSysBook-games-polishworktree where they were committed locally todevbut never pushed. They were rebased clean onto currentorigin/dev(1 patch was auto-dropped as already upstream). Pushing them as a feature branch instead of force-pushing to dev directly.Test plan
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.