Add source linter, negative test fixtures, and fallback guidance
- scripts/lint.py: reject raw rectangles, absolute coordinates, hue-budget and callout/group/formula-order violations at the source level - tests/invalid/ + tests/lint-invalid/: negative fixtures proving the package and linter reject bad input; test.sh now runs both directions - references/fallback.md: degraded path when no LaTeX is available - tests/group-callout.tex: exercise \stgroup and \stcallout - agents/openai.yaml: agent config - Docs and .sty updated to match
This commit is contained in:
@@ -54,7 +54,18 @@ See `style.md`.
|
||||
- **A formula line placed first.** It can only be centered on a figure whose width is not
|
||||
known yet, so it ends up visibly off-center. Call `\sttopformula` after the bands.
|
||||
- **A floating commentary card between two operands.** If it is not a real operation, it
|
||||
belongs in the stage subtitle or the bottom box.
|
||||
belongs in the stage subtitle, the bottom box, or a `\stcallout` beside the whole band.
|
||||
A card anchored to a single face reads as a step in the computation, and two cards on one
|
||||
band turn the figure into a dashboard; both are lint errors.
|
||||
- **A callout that should have been the meaning box.** If the card is taller than the band
|
||||
it hangs off, it is not an aside — it is the **Mechanism** row, and leaving it as a card
|
||||
only opens white space, since the callout pushes the vertical cursor below itself.
|
||||
- **A group border used as decoration.** `\stgroup` names its members as one composite
|
||||
object; drawn around whatever happened to be adjacent, it invents a grouping the
|
||||
computation does not have. If you cannot caption the outline, do not draw it.
|
||||
- **A group whose hue invents a new object.** The outline around the three `q` sheets is
|
||||
still `q`. A fresh hue there claims a fourth tensor exists; use the members' role, or
|
||||
`neutral` when the members really are of mixed roles. See `semantics.md`.
|
||||
- **A meaning box that repeats the shapes.** The shapes are already under every block. The
|
||||
box is for what the axes *mean* and what the operation *does*.
|
||||
- **Solving crowding by shrinking type.** The type hierarchy is a hard floor; move the
|
||||
|
||||
Reference in New Issue
Block a user