Taxonomy

TAXONOMY . the coding grammar and the full catalogue map

This is the index an information designer uses to talk to an agent: pick a code, name a language, get a determined visual. Example instructions: "CH-TIM-02 in DL-03", "CH-RNK-01 in DL-02, highlight Electrical".

Code grammar

FN-nn            foundation (token contract, grid, type, numbers, perception)
DL-nn            design language (complete visual identity + philosophy + constitution)
BQ-nn            business question (what is being asked -> patterns, charts, narrative)
PT-nn            analytical pattern (what the data shows -> which charts)
NR-nn            narrative skeleton (how the finding is told, per decision_style)
CH-FAM-nn        chart entry: family code + number within family
CP-FAM-nn        component entry: family code + number within family
RC-nnn           recipe: a fully determined page (DL + CH + CP set)

Built PT patterns: PT-01 TREND, PT-02 OUTLIER, PT-03 GAP-TO-PLAN, PT-04 CONCENTRATION, PT-05 MIX-SHIFT, PT-06 THRESHOLD-BREACH, PT-07 DRIVER-DECOMPOSITION, PT-08 CYCLE (see PATTERNS.md, generated). Language selection rules live in decision/engine.json (see DECIDER.md).

Codes are permanent. An entry is never renumbered and never reused; retired entries keep their code with status retired. New entries take the next free number in their family. This is what lets external skills and design systems reference codes forever.

Statuses: spec = built, validated, golden renders shipped. planned = named and scoped, not yet built. warn = will be built with heavy anti-pattern warnings (exists because people ask for it).

CH chart families

Adapted from the information-design canon (FT Visual Vocabulary lineage): choose the family by WHAT THE MESSAGE IS, then the entry by the data shape.

FamilyCodeThe message is...
RankingRNKwho is biggest/smallest, ordered
MagnitudeMAGhow big things are, natural order kept
Change over timeTIMhow it moved, trend, progress
Part-to-wholePTWhow a total splits
DeviationDEVdistance from a reference (plan, budget, zero)
DistributionDSThow values spread
CorrelationCORhow two measures relate
SpatialSPAwhere
FlowFLOmovement between states or stages
TablesTABexact values the reader will look up

CH-RNK Ranking

CodeEntryStatus
CH-RNK-01BAR-H, horizontal bar, sorted descendingspec
CH-RNK-02ORDERED COLUMN, vertical, sortedspec
CH-RNK-03LOLLIPOPspec
CH-RNK-04BUMP, rank over timespec
CH-RNK-05DOT STRIP, orderedspec
CH-RNK-06TABLE WITH BARSspec

CH-MAG Magnitude

CodeEntryStatus
CH-MAG-01COLUMN, vertical bar, input order keptspec
CH-MAG-02PAIRED COLUMN, two measures side by sidespec
CH-MAG-03PAIRED BARspec
CH-MAG-04BULLET, actual vs target vs bandsspec
CH-MAG-05PROPORTIONAL SYMBOLspec
CH-MAG-06PICTOGRAM / ISOTYPEspec
CH-MAG-07RADARspec (warn)
CH-MAG-08PARLIAMENT / SEAT CHARTspec
CH-MAG-09GAUGEspec (warn)

CH-TIM Change over time

CodeEntryStatus
CH-TIM-01LINE, trend, 2-4 seriesspec
CH-TIM-02S-CURVE, cumulative progress vs planspec
CH-TIM-03AREAspec
CH-TIM-04STACKED AREAspec
CH-TIM-05SLOPE, two-point changespec
CH-TIM-06SPARKLINE, inline micro-trendspec
CH-TIM-07CALENDAR HEATMAPspec
CH-TIM-08FAN, forecast with uncertainty bandsspec
CH-TIM-09GANTT, schedule bars with milestonesspec
CH-TIM-10CONNECTED SCATTERspec
CH-TIM-11STREAMGRAPHspec (warn)
CH-TIM-12HORIZON, dense multi-series in tight rowsspec (warn)
CH-TIM-13STEP, values that hold between changes (rates, policies, stock)spec
CH-TIM-14INDEXED LINE, series rebased to 100 at a common startspec
CH-TIM-15EVENT TIMELINE, dated milestones and annotationsspec

CH-PTW Part-to-whole

CodeEntryStatus
CH-PTW-01STACKED BARspec
CH-PTW-02100% STACKED BARspec
CH-PTW-03PIE, 3 slices maxspec (warn)
CH-PTW-04DONUTspec (warn)
CH-PTW-05TREEMAPspec
CH-PTW-06WAFFLEspec
CH-PTW-07MARIMEKKOspec
CH-PTW-08FUNNELspec
CH-PTW-09SUNBURSTspec (warn)
CH-PTW-10CIRCLE PACKspec (warn)

CH-DEV Deviation

CodeEntryStatus
CH-DEV-01DIVERGING BAR, +/- from referencespec
CH-DEV-02DUMBBELL, before/after per categoryspec
CH-DEV-03SPINEspec
CH-DEV-04SURPLUS/DEFICIT AREAspec
CH-DEV-05DIVERGING STACKED, sentiment scalesspec

CH-DST Distribution

CodeEntryStatus
CH-DST-01HISTOGRAMspec
CH-DST-02DOT PLOTspec
CH-DST-03DOT STRIPspec
CH-DST-04BOXPLOTspec
CH-DST-05POPULATION PYRAMIDspec
CH-DST-06CUMULATIVE CURVEspec
CH-DST-07BEESWARMspec
CH-DST-08VIOLINspec (warn)
CH-DST-09DENSITY CURVE (KDE)spec
CH-DST-10ERROR BARS & BANDS, uncertainty overlays for any markspec

CH-COR Correlation

CodeEntryStatus
CH-COR-01SCATTERspec
CH-COR-02BUBBLE, third measure as sizespec
CH-COR-03XY HEATMAPspec
CH-COR-04COLUMN + LINE, two measures, labeled scalesspec
CH-COR-05HEXBIN, binned scatter for hundreds of pointsspec
CH-COR-06PARALLEL COORDINATESspec (warn)
CH-COR-07SCATTERPLOT MATRIX (SPLOM)spec (warn)

CH-SPA Spatial

CodeEntryStatus
CH-SPA-01CHOROPLETHspec
CH-SPA-02PROPORTIONAL SYMBOL MAPspec
CH-SPA-03ROUTE PROGRESS, done/pending along a corridorspec
CH-SPA-04DOT DENSITYspec
CH-SPA-05FLOW MAPspec

CH-FLO Flow

CodeEntryStatus
CH-FLO-01WATERFALL, start to end via +/- stepsspec
CH-FLO-02SANKEYspec
CH-FLO-03NETWORKspec
CH-FLO-04CHORDspec (warn)

CH-TAB Tables

CodeEntryStatus
CH-TAB-01STATUS MATRIX, entities x stages with status wordsspec
CH-TAB-02HEATMAP TABLEspec
CH-TAB-03KPI TABLE, values + deltas + micro-trendsspec

CP component families

CodeEntryStatus
CP-TXT-01ACTION TITLE (with DL chrome)spec
CP-TXT-02SOURCE LINEspec
CP-KPI-01KPI CARDspec
CP-STA-01STATUS CHIP (outlined, dot + word)spec
CP-CAL-01INSIGHT CALLOUTspec
CP-KPI-02BIG NUMBERspec
CP-STA-02OUTLINED STAMP (blueprint register)spec
CP-STR-01HEADER BANDspec
CP-STR-02DRAWING TITLE BLOCKspec
CP-LAB-01LEADER-LINE ANNOTATION (standalone)spec
CP-CAL-02EXCEPTION ROWspec

RC recipes

A recipe pins everything: DL + charts + components + exact positions on the 1280x720 canvas. Recurring deliverables reference a recipe code, so a weekly deck renders identically forever.

CodeRecipeDLStatus
RC-001WEEKLY PROGRESS PAGE: title + KPI strip + S-curve + chips + calloutDL-02spec
RC-002ANALYSIS PAGE: kicker title + waterfall at 70% of pageDL-03spec
RC-003READINESS BOARD: title + status matrix + critical chip + calloutDL-04spec
RC-004EXECUTIVE BRIEF: claim + big number + bridge + decision + owner (NR-01)DL-01spec
RC-005EXCEPTION FLASH: header band + bullet board + exception rows + stamp (NR-04)DL-12spec
RC-006EVIDENCE READOUT: question + exhibit + finding + evidence-only stamp (NR-02)DL-14spec

Cross-cutting mechanisms (MX, built as specs)

CodeMechanismStatus
MX-01SMALL MULTIPLES, faceting any chart entry into a shared-scale gridspec
MX-02FIT OVERLAYS, declared fits on COR charts (no silent trend lines)spec

Specs: catalogue/mechanisms/.

Excluded, with reasons (benchmarked against Datawrapper, Flourish, Vega-Lite, Observable)

TypeWhy OVP excludes it
Bar/line chart races, animationv0.1 is a static, deterministic, print-safe protocol; motion is a future layer, not a chart
Word cloudsarea encodes string length, not value; perceptually dishonest
3D anythingviolates the AI-tells blacklist and Cleveland-McGill; no exceptions
Radial bar, pyramid pieangle+radius double-distortion (FN-06)
Ternary, Q-Q, contour, rasterscientific niches outside the reporting domain; adopt on demand via PR
Candlestickfinance-domain-specific; add when a finance adopter exists
Trail / comet marksdecoration over information
Quiz, survey cards, interactive storiesapplications, not visualizations; out of protocol scope

Output targets

The catalogue is renderer-agnostic by design: specs are exact px/hex, so any backend can consume them. Current reference implementation: SVG (tools/render.py). Planned backends, in order: PPTX (python-pptx), HTML, XLSX, Power BI themes. Not now; specs first.