Files
dela de917a2fbd Harden \stgroup and tighten the callout budget (review follow-up)
- Bracket ink is part of the fit: \st@facebody drops -inkw/-inke extreme
  coordinates and \stface/\ststack register them with the enclosing
  group/col/row fit, so a group outline can no longer be crossed by a
  member's bracket arms
- \stlink inside \stgroup or \stcol is now a package error: sub-flow
  members never terminate a pending connector, so the arrow was dropped
  silently while the label still rendered
- \stgroup requires role= (explicit role=neutral for mixed groups) and
  must bind at least two members or one \stcol partition; a lone stack
  or face inside a group is a dirty-build warning
- lint: default budget is one \stcallout per figure; the
  allow-multiple-callouts directive relaxes it to one per band
- build.sh: clean-build hint no longer names hue budget (lint owns it)
- tests/group-callout.tex reworked: multi-member group with a bracketed
  member as a regression probe, single callout; new negative fixtures
  group-link, group-norole, group-single, callout-budget
- api.md, checklist.md, style.md, layout.md, SKILL.md updated to match
2026-08-05 17:03:14 +08:00

3.4 KiB
Raw Permalink Blame History

Pre-delivery checklist

build.sh already checks the source rules, package invariants, missing glyphs and text-box overflow. The math, semantics and rendered relationships below still require inspection. 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×a is 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.

  • Every lint exemption in the source is genuinely required and explained; deliverables normally have none.
  • 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.
  • Every \stgroup outline names a composite the computation actually has, binds at least two members or a \stcol partition, is captioned, and carries its members' role hue (neutral only, and explicitly, for genuinely mixed members).
  • At most one \stcallout in the figure (exemption comment if more), an aside about its whole band, no taller than it, nothing in it that belongs in \stmeaningbox.
  • Top zone compact (≤2 formula lines, no shape underbraces).
  • Bottom box: one column, ≤3 rows, no overflow, no shrunken type.
  • If requested, signature is outside the box, one line, accurate, unclipped and subdued.
  • 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.
  • .tex source and vector artifact (PDF/SVG) linked.
  • Any degraded path stated explicitly — no CJK font, no pdftocairo, fallback renderer, inferred shapes or conventions.