From 1606b1edc31717c68f618af64d86d956888ff81b Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 5 Aug 2026 16:39:16 +0000 Subject: [PATCH] Add content backlog mined from the canon Ranks the next six sins by working backwards from the references we already vouch for: six of fifteen canon entries were uncited, and each idle one points at a sin worth writing. Also records the candidates our build-time Vega-Lite pipeline can't prove honestly yet, so we stop rediscovering them. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01ULE5RRxdQE1ebwefEd2eCM --- docs/content-backlog.md | 139 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 docs/content-backlog.md diff --git a/docs/content-backlog.md b/docs/content-backlog.md new file mode 100644 index 0000000..f866971 --- /dev/null +++ b/docs/content-backlog.md @@ -0,0 +1,139 @@ +# Content backlog — what to write next + +Working document. The rule that generated this list: **every sin must be +condemned by something already in the canon** (`src/lib/references.ts`). We +don't invent authority, so the backlog is mined *from* the sources rather than +brainstormed and back-filled with citations. + +## Canon coverage + +Which references are already doing work, after the first three sins: + +| Reference | Cited by | +| --- | --- | +| `callingbullshit` | truncated-y-axis | +| `clevelandmcgill` | truncated-y-axis, pie-chart-overload | +| `tufte` | truncated-y-axis | +| `howchartslie` | truncated-y-axis, dual-axis-deception | +| `datatoviz` | dual-axis-deception, pie-chart-overload | +| `spurious` | dual-axis-deception | +| `swd` | dual-axis-deception | +| `fewpies` | pie-chart-overload | +| `junkcharts` | pie-chart-overload | +| **`munzner`** | — | +| **`wilke`** | — | +| **`healy`** | — | +| **`huff`** | — | +| **`schwabish`** | — | +| **`ftvisvocab`** | — | + +Six idle references. Each is an authority we've already endorsed on the canon +page, so a sin that leans on one is cheap to justify and strengthens the page it +sits on. The backlog is ordered to bring them all in. + +## Ranked backlog + +### 1. The Cherry-Picked Window — *Deceptive Framing*, severity 5 + +**Poke:** "You started the clock exactly where the story got good." + +The trend runs one way over five years and the other way over five months, so +the chart shows the five months. Nothing about the chart is technically false — +the axis starts at zero, the labels are honest — which is what makes it the +nastiest sin on this list and a good counterweight to the three scale/type sins +we already have. + +**Charts:** one series, two views. Bad = the flattering slice. Fixed = the full +record with the slice shaded in place. Literally the same dataset filtered, so +the "same numbers, both charts" rule holds by construction — the strongest proof +we can build. + +**Citations:** `huff` (the original con), `callingbullshit`, `howchartslie`, +`junkcharts`. + +### 2. Bars That Hide the Distribution — *Hiding the Data*, severity 4 + +**Poke:** "Four bars, four averages, and no idea whether the difference is real." + +The bar-of-means: every group collapsed to one number, so wildly different +distributions draw identical bars. Wilke devotes a section to exactly this and +Healy makes the perceptual case; it's the natural home for three of our six idle +references at once. + +**Charts:** bad = grouped bar of means. Fixed = strip/box plot over the same +observations, means still marked. + +**Citations:** `wilke`, `healy`, `schwabish`, `datatoviz`. + +### 3. The Inflated Bubble — *Perceptual Traps*, severity 4 + +**Poke:** "You doubled the number and quadrupled the ink." + +Scaling a circle's *radius* by the value instead of its *area* squares the +apparent difference. This is Tufte's Lie Factor with an actual number attached, +and it's the cleanest possible excuse to bring Munzner's channel ranking onto a +page — the same ranking that already underwrites the pie and truncated-axis +sins. + +**Charts:** bad = radius ∝ value (a `calculate` transform squaring the size +encoding). Fixed = area ∝ value, or better, the same values as a dot plot where +position does the work. + +**Citations:** `munzner`, `clevelandmcgill`, `tufte`, `howchartslie`. + +### 4. Alphabetical Is Not a Ranking — *Sloppy Craft*, severity 2 + +**Poke:** "Your categories are sorted by name. Nobody wants to know which +region starts with A." + +Venial, universal, and the single most useful page to fire at a colleague — +which is the whole product thesis. Low severity is a feature: the gallery needs +a range, and this one brings in the FT Visual Vocabulary. + +**Charts:** bad = categorical bars in alphabetical order. Fixed = same bars +sorted by value. + +**Citations:** `schwabish`, `ftvisvocab`, `swd`, `fewpies`. + +### 5. The Reversed Axis — *Misleading Scales*, severity 5 + +**Poke:** "Down means up. You flipped the axis and the trend flipped with it." + +The famous one. High drama, trivial to author (`scale: {reverse: true}`), and it +slots into an existing category. Ranked below the others only because the canon +support overlaps almost entirely with sins we've already published. + +**Citations:** `callingbullshit`, `howchartslie`, `junkcharts`. + +### 6. Squashed and Stretched — *Misleading Scales*, severity 3 + +**Poke:** "Same data, twice as tall. Aspect ratio is not a styling choice." + +Cleveland's banking-to-45° argument: the identical series reads as a crisis or a +plateau depending on the box you draw it in. Cheap to author — one dataset, two +`width`/`height` pairs — and a rare sin where the bad chart contains no false +statement at all. + +**Citations:** `clevelandmcgill`, `howchartslie`, `wilke`. + +## Not yet buildable + +Real sins, but our pipeline can't prove them honestly today. Recorded so we stop +rediscovering them: + +- **3D bars / gratuitous perspective** and **chartjunk** (Tufte, Few) — Vega-Lite + won't render the sin, and a screenshot violates the same-pipeline rule that + makes the before/after credible. +- **Counts on a choropleth instead of rates** (Cairo's set-piece) — needs + TopoJSON geometry and a build-time data dependency we don't have yet. Strong + candidate the moment we take that on. +- **Rainbow color scales for continuous data** (Wilke, Munzner) — buildable, but + the fixed chart needs a sequential ramp validated on `--chart-canvas` in both + themes. Do the palette work first (`dataviz` skill + its validator), then + write it. + +## Conventions reminder + +Anything picked up from this list still follows `CLAUDE.md`: the poke names the +general sin and never our sample's numbers, both charts share one dataset, and +the fixed chart obeys every rule the site preaches.