The measure has to match the complaint
The first instinct was to print contrast ratios, which is what the other experiments do. It would have been useless here: every candidate passes contrast comfortably, including the one that prompted the experiment. The complaint was that the control is too loud, and loudness is the fill's separation from the page, not the label's separation from the fill. Measuring the wrong quantity would have produced six green ticks and no answer.
The invented percentages were why this could not be closed
The first set ran on a 14% tint, a 26% hover and a 16% outline fill. None of them came from anywhere. Settling the experiment would have meant settling those numbers, and any later system would have regenerated them — which is precisely why the experiment was left open rather than decided. Every value in this version is a step on a scale, so the set is now judgeable on what it looks like rather than on where its numbers came from.
The tint did nothing, and now there is a reason
Carried over, and confirmed twice. The old note recorded that a 14% tint measured 1.03:1 against an unfilled 1.00:1 — the fill moved luminance by three hundredths and on screen the two were nearly the same button. The cause was the base: the page sits at 0.009 relative luminance, so mixing anything into it barely moves the result. The soft fills are now built the other way round, as the card surface tinted with the accent, and they measure 1.31:1 and 1.37:1. Better by about a third of a point and still almost nothing. Three constructions have now been tried and the number barely moves, which is the finding: a soft fill on a base this dark is faint by arithmetic, not by choice, and it is why C and D carry a border rather than relying on the fill.
The instrument is blind to chroma
Carried over, narrowed. Separation is a luminance ratio and has no chroma term, so it cannot distinguish C from D even though one is visibly bluer than the other. The old set made the same point twice, with a near-white candidate that measured loudest and was expected to feel calmest; that candidate is gone with the rest of the old set, but the limit it exposed is not. It is stated here rather than patched: the numbers rank the candidates honestly on one axis, and the eye settles the rest.
Each treatment hovers on its own axis
A solid moves to step 10; a soft fill moves up one strength of the tint, 8% to 12%; an outline gains the fill it does not have at rest, at the hovered strength rather than the resting one. That replaces the old arrangement, where fills dimmed by an opacity step and tints brightened by twelve percentage points, so the two sides of the set hovered in opposite directions. They still do, in a sense: a solid at step 10 is slightly darker than at 9, while a soft at 12% is lighter than at 8%. The difference is that the direction is now a property of the ladder rather than a choice made per candidate, and one rule produces both. The outline taking the hovered strength is the one deliberate exception, and it is there because at the resting strength a hovered E and a resting C would paint the same fill.
The soft hover is a pressed step wearing a hover's name
Open, and the next thing to settle. The soft fills step 8, 12 and 16 per cent, which looks like a ladder and is not one: the rest-to-hover move measures 2.4 points of lightness cool and 3.3 warm, while every other hover on this site — a card taking the shared hover token — moves 7.0. On screen it is barely visible. Raising the strengths to 8, 20 and 24 matches the site's step and was tried on 2026-09-21, but the outline candidates fill to the same token on hover, so it drags E's hover off the value Rey picked by eye. Either the outline gets its own strength, or the hover moves something other than the fill. Recorded here rather than patched, because picking between those two is the same kind of decision this experiment exists to make.
Solids only have two states
The scale gives step 9 for rest and step 10 for hover and stops. There is no step 11 for a solid, because 11 is text. So A and B press to the same colour they hover to, and the distinction is carried by the focus ring and by the pointer itself. Recorded as a limitation rather than solved with an invented value, which would put back exactly what this regeneration removed.
The ruler impersonated the thing it was measuring
Carried over. The secondary button was declared constant so it could serve as a fixed reference, and then given a hover that took the accent on both its border and its label — which was a candidate's rest state exactly. Hovering the secondary produced two identical buttons and destroyed the hierarchy the band exists to demonstrate. Found by hovering the wrong button, which is the only way it could have been found: at rest the band was correct, and every number the page printed was correct too. A control has to be a control in every state, not only the one that gets screenshotted. The border does move now, one step up the gray ramp — the lesson was about the accent, not about movement, and holding the ruler still in every respect had started to read as the ruler being broken.
A missing cell is a confound, not an omission
Carried over, and now structural. The first set had cyan in three treatments and gold in two, which made the question unanswerable: no comparison between an unfilled cyan candidate and a filled gold one can separate the hue from the treatment. This version is a full 4 × 2 with no empty cells, and the grid below is drawn so a hole cannot reopen quietly.
Flex stretch hid a 2px mismatch until the buttons wrapped
Carried over. A border adds 1px a side, so a bordered button is 2px taller than a filled one at the same padding. In a flex row the two stretch to match and the difference is invisible — until 360px, where they wrap onto separate lines, the stretch stops and the mismatch appears. The live home page had it too, for the same reason and with the same pair. Fixed by giving every candidate a border, transparent where there is nothing to show: one box model beats a compensation rule that has to be remembered every time a candidate is added.
A hover you just triggered measures as the state you left
Carried over. Forcing the hover class and reading getComputedStyle immediately reported every candidate's hover as identical to its rest state — unchanged numbers, which looked like a correct result rather than a broken probe. The cause is the 150ms transition: computed style returns the value as currently animated, and at the instant the class lands that is still the old one. Taking transitions off for the duration of the read fixes it. Worth keeping because the failure was silent and self-consistent, which is the kind that survives review.
The control is the shipped state, not a straw man
Carried over. A is exactly what is live on the home page, down to the class list, rather than a reconstruction of it. That matters because the whole comparison is an argument for changing it, and an experiment that quietly makes its control worse than reality is not evidence of anything.
Renumbering was the lesser harm
The old page warned that renumbering mid-experiment would invalidate every note written against the letters, and it was right. It was done anyway, because the alternative was worse: six letters pointing at seven things, two of which no longer exist. The rule the warning was protecting — that a letter means one thing forever — survives within a set, not across a regeneration that replaces the set. The old letters are not reused with new meanings by accident; they are reassigned deliberately and the fact is recorded here.