design.tex carries the contract — invariants, algorithms, public API, roadmap, the canonical D1..D19 decision index, and a new System Walkthrough (§17) that derives the geometry from first principles for a graduate-engineering reader: vector rotations and the inward-normal formula, the shoelace signed area, segment intersection via Cramer, Sutherland–Hodgman half-plane clipping, the DCEL next-pointer rule with worked square example, per-edge depth-cap ray-cast, corner-parcel construction in two flavors, frontage walk, the shared-vertex registry, propose-then-apply deform, and end-to-end traces for both subdivide_all and apply_road_edit(MoveNode). journal.tex carries the live record — Self-Decisions Checklist at the top, sessions 1-4 rewritten condensed with explanatory Rust snippets, and a Spec Deviations Log indexed chronologically. Makefile builds both PDFs (`make all`, `make design`, `make journal`, `make watch-design`, `make watch-journal`, `make figs`). Old single-file journal content lives in git history per user. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
38 lines
932 B
Makefile
38 lines
932 B
Makefile
# Build the design document and the implementation journal.
|
|
# Requires: pdflatex, latexmk, and rsvg-convert for the figs target.
|
|
|
|
DOCS = design journal
|
|
|
|
.PHONY: all clean watch figs design journal
|
|
|
|
all: design journal
|
|
|
|
design: design.pdf
|
|
|
|
journal: journal.pdf
|
|
|
|
design.pdf: design.tex figures/*.pdf
|
|
latexmk -pdf -interaction=nonstopmode design.tex
|
|
|
|
journal.pdf: journal.tex figures/*.pdf
|
|
latexmk -pdf -interaction=nonstopmode journal.tex
|
|
|
|
# Convert any SVG figures generated by the Rust crate into PDFs for inclusion.
|
|
figs:
|
|
@for svg in figures/*.svg; do \
|
|
[ -f "$$svg" ] || continue; \
|
|
pdf="$${svg%.svg}.pdf"; \
|
|
echo "Converting $$svg -> $$pdf"; \
|
|
rsvg-convert -f pdf -o "$$pdf" "$$svg"; \
|
|
done
|
|
|
|
watch-design:
|
|
latexmk -pdf -pvc -interaction=nonstopmode design.tex
|
|
|
|
watch-journal:
|
|
latexmk -pdf -pvc -interaction=nonstopmode journal.tex
|
|
|
|
clean:
|
|
latexmk -C
|
|
rm -f *.aux *.log *.out *.toc *.fls *.fdb_latexmk *.synctex.gz
|