Day 27 of 29 · Friday · Learning

The Broadside card — one look, every surfaceReview

One renderer, every review card. The 2026-06-10 Broadside lock means proposal cards, route-approval cards, and dataviz reviews all flow through for_tom_html.render_review() — they differ by content modules, never by palette or layout. Today's review: why that constraint is a feature, not a limitation.

Catch-up progress
27/29
Why this matters to you

Before the lock you had three competing looks (Situation Room amber, Blueprint parchment, twilight-lavender) and every new workflow tempted a fourth. That's how design systems rot: each card a snowflake, the drag-back contract silently breaking when a one-off layout forgets the Submit JS. Consolidating to one path made the contract hold 'by construction' — you literally can't ship a card that doesn't carry the feedback loop.

A design system's real job isn't to make things pretty — it's to make the RIGHT thing the EASY thing. When there's one render path, the cheapest way to add a card type is to add a content module, and the cheapest way is also the correct way. The system's grain points at consistency.

The Broadside lock encodes this: card types differ by what CONTENT they compose (a proposal card adds a decision-memo band + SVG viz via decision_memo.py; a route-approval card doesn't), but the palette, the masthead, the two-tier ruling, the ink decision bars — those are LOCKED. Same skeleton, different organs. This is why proposing a 'per-workflow aesthetic' is a regression: it re-opens the snowflake door the lock closed.

In your workspace this is the difference between editing JARBUS/DESIGN.md (allowed — add a rule, both judge agents pick it up) and hand-rolling a new HTML template (forbidden — it escapes the contract). The rule of thumb: change the rubric or add a module, never fork the renderer.

Worked example

Prove the single-path claim to yourself — every card type resolves to one function:

grep -rn "def render_review" ~/Claude/JARBUS/scripts/for_tom_html.py
grep -rn "render_review(" ~/Claude/JARBUS/scripts/route.py
grep -rln "render_review\|decision_memo\|narrative" ~/Claude/JARBUS/scripts/
▶ Do it now
  1. Open ~/Claude/JARBUS/DESIGN.md and read the Broadside section (locked 2026-06-10).
  2. Answer the hands-on in one sentence: what is allowed to differ between a proposal card and a route-approval card? (Hint: content modules, not palette or layout.)
  3. Now grep your last week of TTR cards: ls -t ~/Claude/FOR\ TOM/TTR/*.html | head -5 — open two different card types in a browser and confirm by eye they share the masthead + ruling and differ only in body modules.

Gotchas

Go deeper: Your design tokens · The canonical review rubric
One-card takeaway

One render path, locked palette, content modules as the only degree of freedom — that's what makes the drag-back contract hold by construction instead of by vigilance.