Design system / rev A

Event Storming Board

A modelling surface for change-management requests. The chrome is monochrome steel on paper; all color in the product belongs to the sticky grammar, so the timeline reads as a legend at a glance. Conventions follow eventstorming.com, adapted where the digital medium can do better than a paper wall.

base
Industry
ground
#f2f2f3
steel
#5980a6
grid
8px / lane 208

Two primitives, five places

The ordinal chip and the matrix. Build once, reuse everywhere.

Everything the board is about to gain — influence, interest, governance rights, value priority, classification, exposed aggregates — is either a rank on a short scale or a list of named rows. Two components carry all of it. Neither introduces colour, because rank is not a hue and a table is not a chart.

Ordinal chip
  • HIGH Influence, 3 of 3
    three of three, filled
  • MEDIUM Influence, 2 of 3
    frame lightens with the rank
  • LOW Influence, 1 of 3
    never zero — unset is a different chip
  • NOT RANKED Influence, 0 of 3
    dashed, 72% — the assumption treatment
  • DECISION MAKER GovernanceRight, 4 of 5
    five cells for the rights ladder
Five scales, one component: stakeholder influence, stakeholder interest, value priority, value impact, governance right. Cell count follows the enum length; the label is always the enum’s own word, never a number.
REAL CALLERS TODAY · bounded-context-canvas/ClassificationChipRowREAL CALLERS TODAY · crossing/CrossingPanel — DOWNSTREAM RIGHT
Fidelity: §19 counts five callers where the built system has two components carrying five scales. §22 and §23 consume the same `domain/ordinal.ts` scales through `canvas/Ground`’s axis rails and `canvas/Lattice` rather than through the chip — the kernel is shared, the drawing is not always a chip.
Matrix
EXPOSED AGGREGATECONSUMED BYSTATE
ChangeRequestRisk & ComplianceAGREED
RiskRatingSchedulingAGREED
VendorRecordFinanceASSUMED
— not named —ServiceNowIN QUEUE
One table, three uses: the glossary panel, exposed-aggregate lists, and the ubiquitous-language field of the bounded context canvas. Header in mono, rows on hairlines, last column right-aligned and always a state. A row that cannot be filled is not deleted — it reads — not named — and appears in the review queue.
REAL CALLERS TODAY · glossary/GlossaryPanelREAL CALLERS TODAY · crossing/CrossingPanel — EXPOSED AGGREGATESREAL CALLERS TODAY · bounded-context-canvas/BoundedContextCanvas
Fidelity: §19’s third use is "the value register", which is not built. The bounded context canvas’s ubiquitous-language field is the third caller in its place, and it renders the same component with the same state column.
The same chip, in a real caller
DOMAIN
CORE DomainClass, 3 of 3
BUSINESS MODEL
COMPLIANCE BusinessModel, 1 of 3
EVOLUTION
CUSTOM BUILT Evolution, 2 of 4
DOMAIN ROLES
ANALYSIS CONTEXT DomainRole, 1 of 3
BUSINESS MODEL
NOT RANKED BusinessModel, 0 of 3
bounded-context-canvas/ClassificationChipRow OVER §10’S BOARD — FOUR SCALES AND ONE UNSET CHIPNO SECOND CHIP, NO SECOND SCALE: domain/ordinal.ts IS THE ONLY LADDER
Collapsible
18 STICKIES · 3 TRACKS · 2 OPEN ITEMS
OPEN · CLOSED · DISABLED — THE THIRD IS A REGION SOMEONE ELSE HOLDS
One disclosure behind three collapsing things: §09’s regions, §11’s tracks and §12’s detail ladder. The summary is a snippet rather than a string, because what collapses here is a header carrying its own counts and marks. It wraps Bits UI, which supplies aria-expanded, aria-controls and the disclosure keyboard.
Fidelity: §19 is drawn as two primitives. The built system has three, and this is the one the drawing does not count — the rule stating it is §19’s "one disclosure behind three collapsing things".