Figures were positioned by hand-written offsets. Every gap was a magic number tuned against the content that happened to be there, so a label that grew two characters landed on the next tensor, and two stages started from two different x shared no rail. Both failures compile cleanly. Replace it with a cursor. Objects placed with an empty coordinate argument reserve their own width -- including a stack's offset sheets and a bracket's overhang -- and gaps are declared once (\stgutter, \strowgap, \stblockgap). The gap belongs to the object that follows it and the first object in a band gets none, so every band starts flush on a shared rail and gap=0pt states that two shards tile exactly. \stlink makes a connector's label a flow object, which is what removes the label-wider-than-its-arrow failure entirely. \stcol is a vertical sub-flow for a split along the contracted axis. \strow declares its height, so an object that does not fit -- or a column that does not add up to what it declared, and is therefore drawn off-center -- becomes a package warning, which build.sh fails on. Absolute placement is unchanged: passing a coordinate takes the original code path, and \sttrack folds a hand-placed node back into the cursor. All three golden examples and the new tests/flow.tex are converted and build clean.
3.1 KiB
3.1 KiB
Pre-delivery checklist
A clean build.sh proves only that TeX was happy. Nothing below is checked by the compiler.
Work through it against the rendered PNG. Any mandatory violation means redraw, not patch.
1. Math (before looking at the picture)
- Every shape recomputed independently from the source formula or code.
- Block multiplication, broadcasting, reductions and sharding algebra verified.
- Axis identities that the figure asserts actually hold in the numbers drawn
(
d = h·d_h,Σ_e n_e = T·k, shards summing to the parent).
2. Semantics ledger
- Every discrete or overloaded symbol has one type, domain and range.
- Score, index and mask are three distinct objects in three distinct grammars.
- Producer-to-consumer chain closed: scores → indices → gather/mask → values.
- Shared selectors drawn once, with the reuse axis marked.
3. Geometry ledger
- Equal shapes have identical faces everywhere.
a×ais square; every transpose physically swaps the face.- Both occurrences of each contracted axis have the same edge length.
- Shards tile their parent exactly; concat reverses split; elisions use an ellipsis.
4. Full-size visual audit
Open the PNG at 100 %. Most of the first three items are automatic under the flow layout; they still need looking at, because the cursor only guarantees that objects do not push into each other, not that the figure reads correctly.
- No absolute coordinate that a
\strow/\stcolcould have expressed. Every remaining hand-placed node is wrapped in\sttrack. \sttopformulacalled after the bands, so the formula is centered on the real figure.- No forbidden intersection, tangency, clipping or occlusion — including stack offset sheets, brackets, arrow labels and the meaning box.
- Every connector's white label underlay covers only its own connector.
- No connector crosses a box that is not its endpoint.
- Symbols and shapes sit on two flat lanes per row; stage headings share a left rail.
- Top zone compact (≤2 formula lines, no shape underbraces).
- Bottom box: one column, ≤3 rows, no overflow, no shrunken type.
- Signature outside the box, one line, names what the figure actually shows, not clipped and not visually dominant.
- Structural support exact: known zeros unfilled, masks and diagonals exactly right.
5. Thumbnail audit
Open *-thumb.png (360 px).
- ≤4 active hue families per row plus gray; each role keeps one hue across stages.
- Base colors still muted, not saturated.
- Three visibly separated lightness levels where values vary; nothing is uniform pastel.
- Borders neutral, not tensor-colored.
- Dense texture reads as noise, not as stripes, checkerboard or a symmetric motif.
- The main structural claim of the figure is still legible at this size.
6. Delivery
- PNG preview shown.
- Short mechanism explanation in prose.
.texsource and vector artifact (PDF/SVG) linked.- Any degraded path stated explicitly — no CJK font, no
pdftocairo, fallback renderer, inferred shapes or conventions.