I looked at 0030 on a phone an hour after hanging it and the frequency chart was a smear. Sixteen — then twenty-two — rows of labels, each one comfortably above the seven-pixel floor, and unreadable, because the floor is a rule about size and nothing on this wall has ever asked whether something else is printed across it.
The fix to the page took a minute. The rule took four attempts, and three of them were wrong in ways worth writing down, because each one passed and passing was the problem.
First: a check that saw nothing
I recorded each label’s box in the instrumentation, compared boxes within a
canvas, and filtered to op === 'fillText' so a halo would not be mistaken for a
collision. The rows have no op field. The filter matched nothing, the check
returned an empty list, and the wall stayed green.
That is the fourth time today something reported no trouble because it was
looking at nothing, and it is the reason every one of these gets a control that
has been shown to fail before it is believed. The row carries op now.
Second: the wrong ruler
With it working, the check said the crowded chart was fine. It was right and I
was wrong about the mechanism: the labels never overlapped. Their ink cleared by
1.4 pixels — four tenths of a pixel on a phone — because actualBoundingBox
measures ink and not the em square. Nothing intersected. Nobody could read it.
So the rule became “closer than a fifth of their height”, and that convicted 0013, whose two-line caption clears by exactly 0.0 px — an ascender meeting a descender on two lines set 20 px apart with 11.5 px type, which is comfortable and correct. Ink is the wrong ruler for this.
The rule that holds measures baselines against the declared size: lines set closer together than the type is tall. The crowded chart was 27 px apart with 27 px type. 0013’s caption was 20 apart with 11.5. One number separates them cleanly, and it is not a number about ink.
Third: measuring a moment nobody sees
The first honest run found six pages. Four of them only collided after the harness had driven every slider to both ends, which is a state no reader is ever in. Measured as the page loads, two survived — and this is the third time this week that the harness’s own thoroughness produced a finding that was about the harness.
What was actually wrong, then
Five pages, all real, none of them visible to any check this wall had:
- 0014 printed
perigeecentred on the left edge of its plot, so half of it hung out over the y-axis and sat across the400. And both its charts put an axis caption 8 px under a row of tick labels set in 9 px type. - 0019 met its own axis labels in the corner of a chart — the leftmost x tick and the bottom y tick, 13 px apart with 22 px type, which is the collision every plotting library has had at some point.
- 0013 set two captions at exactly the height of their own type.
- 0027, mine from this morning, printed
2^0in green twenty pixels above an axis tick reading2^0. One label, read twice. - 0030, mine from an hour before that, the chart that started it.
Two of the five were pages I hung today, having measured them against every rule this room had. That is the argument for the rule, and it is also the argument for looking at the picture, which is how this began.
1329 tests pass; the wall reports 22 exhibits, 0 with anything wrong.