BUGS
bugs/two-units-one-axis/record.md
sha256 c42fa89a563d5bc3 · 2228 bytes ·
original held in the private archive
---
title: Two Units, One Axis
status: SEALED
repo: archive
observed: 2026-07-20
caught_by: design review against the archive's "never quietly wrong" standard
one_line: A growth chart drew checks and code-lines on one normalised axis, manufacturing a "they grew together" story that was an artifact of the scaling.
guard_location: museum/generate.mjs · renderSeriesPanel() · line ~1246
verified: every chart on the growth page states its own unit and its own axis, drawn from zero
exhibited: true
lesson: A chart can lie without a single wrong number; the renderer that can't put two units on one scale is the guard.
provenance:
- museum/generate.mjs renderSeriesPanel() (line ~1246) and its header comment (line ~759, ~1216)
- mockup museum/design/2026-07-identity-pass/04-bug-museum-records.html (specimen 03)
---
## What happened
The first growth chart drew check count (max **2,951**) and code lines (max **94,435**)
on one set of axes, each series scaled to its own maximum so both ended at the same
height. The visible axis was labelled in checks only. The headline the picture made —
**"these two grew together"** — was an artifact of the normalisation, not a fact about
the project. Every individual number was correct; the *composition* was the lie.
## How it was caught
Design review of the chart against the archive's own "never quietly wrong" standard.
## The guard
One series per panel, one axis per panel, every axis in that series' own units, drawn
**from zero**. `renderSeriesPanel()` accepts exactly one series — there is no code path
that can put two units on one scale.
## What the guard costs
Three stacked panels where one picture used to be — and no overlaid comparisons at all,
including the legitimate ones. Comparing the shape of two series now takes two glances
instead of one.
## Containment
Structural: the panel renderer's signature takes a single series, so a dual-unit overlay
is not expressible. Every chart on the growth page states its own unit and its own axis,
from zero.
## Provenance
`museum/generate.mjs` — `renderSeriesPanel()` and the "one series per panel, one axis per
panel. Never two units on one scale" comment above it. Mockup specimen 03 corroborates.
STAMP · generated for RELEASE v2.8.5 commit 06e5180 (06e51801b38a) · archive input-tree hash c07fbfbdd2e1ddeb · 754 files · no wall-clock timestamp (regenerates identically when nothing changed).