150 lines
16 KiB
TeX
150 lines
16 KiB
TeX
\relax
|
||
\providecommand\hyper@newdestlabel[2]{}
|
||
\providecommand\HyField@AuxAddToFields[1]{}
|
||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {1}Project Context and Motivation}{3}{section.1}\protected@file@percent }
|
||
\newlabel{sec:context}{{1}{3}{Project Context and Motivation}{section.1}{}}
|
||
\newlabel{sec:context@cref}{{[section][1][]1}{[1][3][]3}{}{}{}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Why Build This}{3}{subsection.1.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Scope of This Document}{3}{subsection.1.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Audience}{3}{subsection.1.3}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {section}{\numberline {2}Core Invariants}{3}{section.2}\protected@file@percent }
|
||
\newlabel{sec:invariants}{{2}{3}{Core Invariants}{section.2}{}}
|
||
\newlabel{sec:invariants@cref}{{[section][2][]2}{[1][3][]3}{}{}{}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {3}Geometric Foundations}{4}{section.3}\protected@file@percent }
|
||
\newlabel{sec:geometry}{{3}{4}{Geometric Foundations}{section.3}{}}
|
||
\newlabel{sec:geometry@cref}{{[section][3][]3}{[1][4][]4}{}{}{}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Coordinate System and Numerical Type}{4}{subsection.3.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Road Network as a Planar Graph}{4}{subsection.3.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Block Extraction}{5}{subsection.3.3}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Inward Offsetting}{5}{subsection.3.4}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {section}{\numberline {4}Subdivision Algorithm}{5}{section.4}\protected@file@percent }
|
||
\newlabel{sec:subdivision}{{4}{5}{Subdivision Algorithm}{section.4}{}}
|
||
\newlabel{sec:subdivision@cref}{{[section][4][]4}{[1][5][]5}{}{}{}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Frontage-First Subdivision}{5}{subsection.4.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Inputs.}{5}{subsection.4.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Procedure.}{5}{subsection.4.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Edge Classification}{6}{subsection.4.2}\protected@file@percent }
|
||
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Edge classification scheme.}}{6}{table.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Regularization Pass}{6}{subsection.4.3}\protected@file@percent }
|
||
\newlabel{sec:regularization}{{4.3}{6}{Regularization Pass}{subsection.4.3}{}}
|
||
\newlabel{sec:regularization@cref}{{[subsection][3][4]4.3}{[1][6][]6}{}{}{}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {5}Road Edit Handling}{6}{section.5}\protected@file@percent }
|
||
\newlabel{sec:edit-handling}{{5}{6}{Road Edit Handling}{section.5}{}}
|
||
\newlabel{sec:edit-handling@cref}{{[section][5][]5}{[1][6][]6}{}{}{}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Edit Types}{7}{subsection.5.1}\protected@file@percent }
|
||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Road edit enum.}{7}{lstlisting.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Deformation Pipeline}{7}{subsection.5.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Regeneration Thresholds}{7}{subsection.5.3}\protected@file@percent }
|
||
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Thresholds that trigger regeneration or condemnation. $\alpha _{\max }$ defaults to $30^\circ $.}}{7}{table.2}\protected@file@percent }
|
||
\gdef \LT@i {\LT@entry
|
||
{1}{140.0374pt}\LT@entry
|
||
{1}{182.71652pt}\LT@entry
|
||
{1}{111.58464pt}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Determinism and Idempotence}{8}{subsection.5.4}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Building Footprint Preservation}{8}{subsection.5.5}\protected@file@percent }
|
||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}Building persistence hook.}{8}{lstlisting.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {section}{\numberline {6}Degenerate Cases}{8}{section.6}\protected@file@percent }
|
||
\newlabel{sec:degenerate}{{6}{8}{Degenerate Cases}{section.6}{}}
|
||
\newlabel{sec:degenerate@cref}{{[section][6][]6}{[1][8][]8}{}{}{}}
|
||
\@writefile{lot}{\contentsline {table}{\numberline {3}{Required degenerate-case tests. Each must exist by name and pass.}}{9}{table.3}\protected@file@percent }
|
||
\newlabel{tab:degenerate}{{3}{9}{Required degenerate-case tests. Each must exist by name and pass}{table.3}{}}
|
||
\newlabel{tab:degenerate@cref}{{[table][3][]3}{[1][8][]9}{}{}{}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {7}Crate Architecture}{9}{section.7}\protected@file@percent }
|
||
\newlabel{sec:architecture}{{7}{9}{Crate Architecture}{section.7}{}}
|
||
\newlabel{sec:architecture@cref}{{[section][7][]7}{[1][9][]9}{}{}{}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Module Layout}{9}{subsection.7.1}\protected@file@percent }
|
||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Crate structure.}{9}{lstlisting.3}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Public API Surface}{10}{subsection.7.2}\protected@file@percent }
|
||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}Public API in \texttt {lib.rs}.}{10}{lstlisting.4}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Error Types}{10}{subsection.7.3}\protected@file@percent }
|
||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}Error enum.}{10}{lstlisting.5}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.4}Dependencies}{11}{subsection.7.4}\protected@file@percent }
|
||
\@writefile{lot}{\contentsline {table}{\numberline {4}{\ignorespaces Dependency manifest.}}{11}{table.4}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {section}{\numberline {8}Idiomatic Rust Requirements}{11}{section.8}\protected@file@percent }
|
||
\newlabel{sec:idioms}{{8}{11}{Idiomatic Rust Requirements}{section.8}{}}
|
||
\newlabel{sec:idioms@cref}{{[section][8][]8}{[1][11][]11}{}{}{}}
|
||
\gdef \LT@ii {\LT@entry
|
||
{2}{168.13437pt}\LT@entry
|
||
{2}{188.11266pt}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {9}Testing Strategy}{12}{section.9}\protected@file@percent }
|
||
\newlabel{sec:testing}{{9}{12}{Testing Strategy}{section.9}{}}
|
||
\newlabel{sec:testing@cref}{{[section][9][]9}{[1][12][]12}{}{}{}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Three Layers}{12}{subsection.9.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Unit tests}{12}{subsection.9.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Integration tests}{12}{subsection.9.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Property tests}{12}{subsection.9.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Snapshot Testing}{12}{subsection.9.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {9.3}Coverage Requirement}{12}{subsection.9.3}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {section}{\numberline {10}Visualization and Figures}{12}{section.10}\protected@file@percent }
|
||
\newlabel{sec:figures}{{10}{12}{Visualization and Figures}{section.10}{}}
|
||
\newlabel{sec:figures@cref}{{[section][10][]10}{[1][12][]12}{}{}{}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {10.1}Required Figures}{12}{subsection.10.1}\protected@file@percent }
|
||
\@writefile{lot}{\contentsline {table}{\numberline {5}{Required figure deliverables.}}{13}{table.5}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {10.2}Color Conventions}{13}{subsection.10.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {10.3}Inclusion in This Journal}{13}{subsection.10.3}\protected@file@percent }
|
||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}Including a generated figure.}{13}{lstlisting.6}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {section}{\numberline {11}Performance Targets}{13}{section.11}\protected@file@percent }
|
||
\newlabel{sec:performance}{{11}{13}{Performance Targets}{section.11}{}}
|
||
\newlabel{sec:performance@cref}{{[section][11][]11}{[1][13][]13}{}{}{}}
|
||
\@writefile{lot}{\contentsline {table}{\numberline {6}{\ignorespaces Performance targets. Measured via Criterion.}}{13}{table.6}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {section}{\numberline {12}Out of Scope}{13}{section.12}\protected@file@percent }
|
||
\newlabel{sec:oos}{{12}{13}{Out of Scope}{section.12}{}}
|
||
\newlabel{sec:oos@cref}{{[section][12][]12}{[1][13][]13}{}{}{}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {13}Claude Code Contract}{14}{section.13}\protected@file@percent }
|
||
\newlabel{sec:contract}{{13}{14}{Claude Code Contract}{section.13}{}}
|
||
\newlabel{sec:contract@cref}{{[section][13][]13}{[1][14][]14}{}{}{}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {14}Open Questions}{15}{section.14}\protected@file@percent }
|
||
\newlabel{sec:open}{{14}{15}{Open Questions}{section.14}{}}
|
||
\newlabel{sec:open@cref}{{[section][14][]14}{[1][15][]15}{}{}{}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {15}Design Decisions}{15}{section.15}\protected@file@percent }
|
||
\newlabel{sec:decisions}{{15}{15}{Design Decisions}{section.15}{}}
|
||
\newlabel{sec:decisions@cref}{{[section][15][]15}{[1][15][]15}{}{}{}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {16}Revisions and Deviations}{16}{section.16}\protected@file@percent }
|
||
\newlabel{sec:revisions}{{16}{16}{Revisions and Deviations}{section.16}{}}
|
||
\newlabel{sec:revisions@cref}{{[section][16][]16}{[1][16][]16}{}{}{}}
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {16.1}2026-04-25 --- Session 1: Milestone 0.1, rectangle end-to-end}{16}{subsection.16.1}\protected@file@percent }
|
||
\newlabel{sec:session-1}{{16.1}{16}{2026-04-25 --- Session 1: Milestone 0.1, rectangle end-to-end}{subsection.16.1}{}}
|
||
\newlabel{sec:session-1@cref}{{[subsection][1][16]16.1}{[1][16][]16}{}{}{}}
|
||
\@writefile{toc}{\contentsline {paragraph}{Goal of the session.}{16}{subsection.16.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{What got built.}{17}{subsection.16.1}\protected@file@percent }
|
||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces The first figure produced by the crate: a $200 \times 100$ rectangular block subdivided at default parameters ($w_f=20$, $d_p=30$, $d_s=1$, $\rho =0$). Roads in black; parcel frontage edges in blue, side edges gray, back edges light-gray dashed. Corner pie-slice parcels are the bisector-clipped triangles at each block corner. The empty central strip is the medial gap: the block's vertical extent ($100$\,m) exceeds $2 d_p$, so the depth cap stops parcels short of the centerline. Generated by \texttt {cargo run --example generate\_figures --features viz}.}}{17}{figure.1}\protected@file@percent }
|
||
\newlabel{fig:grid-block}{{1}{17}{The first figure produced by the crate: a $200 \times 100$ rectangular block subdivided at default parameters ($w_f=20$, $d_p=30$, $d_s=1$, $\rho =0$). Roads in black; parcel frontage edges in blue, side edges gray, back edges light-gray dashed. Corner pie-slice parcels are the bisector-clipped triangles at each block corner. The empty central strip is the medial gap: the block's vertical extent ($100$\,m) exceeds $2 d_p$, so the depth cap stops parcels short of the centerline. Generated by \texttt {cargo run --example generate\_figures --features viz}}{figure.1}{}}
|
||
\newlabel{fig:grid-block@cref}{{[figure][1][]1}{[1][17][]17}{}{}{}}
|
||
\@writefile{toc}{\contentsline {paragraph}{Tooling gates.}{17}{figure.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Test status.}{17}{figure.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Design decisions locked in this session.}{18}{figure.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Spec deviations recorded this session.}{18}{figure.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Open questions touched.}{20}{figure.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Next session --- milestone 0.2 queue.}{20}{figure.1}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {subsection}{\numberline {16.2}2026-04-25 --- Session 2: Milestone 0.2 (corner parcels, sticky back edges, preserve-on-deform)}{20}{subsection.16.2}\protected@file@percent }
|
||
\newlabel{sec:session-2}{{16.2}{20}{2026-04-25 --- Session 2: Milestone 0.2 (corner parcels, sticky back edges, preserve-on-deform)}{subsection.16.2}{}}
|
||
\newlabel{sec:session-2@cref}{{[subsection][2][16]16.2}{[1][20][]20}{}{}{}}
|
||
\@writefile{toc}{\contentsline {paragraph}{Goal of the session.}{20}{subsection.16.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Decisions locked in at session kickoff.}{20}{subsection.16.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Status during writing.}{21}{subsection.16.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Performance instrumentation.}{21}{subsection.16.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Corner parcel rework.}{22}{subsection.16.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Preserve-on-deform pipeline.}{22}{subsection.16.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{New figures.}{22}{subsection.16.2}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{Deviations from spec.}{22}{figure.5}\protected@file@percent }
|
||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Default 200×100 rectangle subdivided by milestone 0.2. Compare with milestone 0.1: the four corners are now proper rectangle corner parcels rather than bisector-clipped triangles.}}{23}{figure.2}\protected@file@percent }
|
||
\newlabel{fig:grid-block-v02}{{2}{23}{Default 200×100 rectangle subdivided by milestone 0.2. Compare with milestone 0.1: the four corners are now proper rectangle corner parcels rather than bisector-clipped triangles}{figure.2}{}}
|
||
\newlabel{fig:grid-block-v02@cref}{{[figure][2][]2}{[1][22][]23}{}{}{}}
|
||
\@writefile{toc}{\contentsline {paragraph}{Performance.}{23}{figure.5}\protected@file@percent }
|
||
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Y intersection. Three roads at 120° from the origin meet three outer triangle vertices; corner parcels appear at the inner 120° corners (origin) and are skipped at the 30° outer corners.}}{24}{figure.3}\protected@file@percent }
|
||
\newlabel{fig:y-intersection}{{3}{24}{Y intersection. Three roads at 120° from the origin meet three outer triangle vertices; corner parcels appear at the inner 120° corners (origin) and are skipped at the 30° outer corners}{figure.3}{}}
|
||
\newlabel{fig:y-intersection@cref}{{[figure][3][]3}{[1][22][]24}{}{}{}}
|
||
\@writefile{toc}{\contentsline {paragraph}{Test status.}{24}{figure.5}\protected@file@percent }
|
||
\@writefile{toc}{\contentsline {paragraph}{What's next --- milestone 0.3 queue.}{24}{figure.5}\protected@file@percent }
|
||
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Before: \cref {fig:grid-block-v02}'s rectangle.}}{25}{figure.4}\protected@file@percent }
|
||
\newlabel{fig:edit-before}{{4}{25}{Before: \cref {fig:grid-block-v02}'s rectangle}{figure.4}{}}
|
||
\newlabel{fig:edit-before@cref}{{[figure][4][]4}{[1][22][]25}{}{}{}}
|
||
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces After: bottom-right corner moved 8\,m right; deformed parcels are green.}}{25}{figure.5}\protected@file@percent }
|
||
\newlabel{fig:edit-after}{{5}{25}{After: bottom-right corner moved 8\,m right; deformed parcels are green}{figure.5}{}}
|
||
\newlabel{fig:edit-after@cref}{{[figure][5][]5}{[1][22][]25}{}{}{}}
|
||
\@writefile{toc}{\contentsline {section}{\numberline {A}Notation Reference}{25}{appendix.A}\protected@file@percent }
|
||
\newlabel{app:notation}{{A}{25}{Notation Reference}{appendix.A}{}}
|
||
\newlabel{app:notation@cref}{{[section][1][]A}{[1][24][]25}{}{}{}}
|
||
\gdef \@abspage@last{25}
|