Level 2, and the molecule that gave the most away. A thread, a composer, a sorter and a signed-out prompt: 36 comments, 9 replies, 72 action buttons and 9 sorters on 9 painted screens. Three controls left this file and what stayed is a layout. Measured 2026-08-08 in a browser, in both pointer branches.
A composer, the controls, and the comments with their avatars, badges and actions. 21 elements against 50.
These always go to the wire. I am holding my position and adding if it dips.
The committee bloc looks firmer this time though.
Volume jumped right after the headline. Watching how it settles.
First bet here. The resolution source being official notices makes this easy to trust.
These always go to the wire. I am holding my position and adding if it dips.
The committee bloc looks firmer this time though.
Volume jumped right after the headline. Watching how it settles.
First bet here. The resolution source being official notices makes this easy to trust.
The level and its reason stay on the molecules page. What needs the room here is what this file GAVE UP, three times in three days, and one number that shows a decision recorded in this file is no longer what the product does.
Volume jumped right after the headline. Watching how it settles.
The committee bloc looks firmer this time though.
Volume jumped right after the headline. Watching how it settles.
The committee bloc looks firmer this time though.
A reply is the comment with one declaration changed, a 32px indent, and that is the only structural difference in the whole thread. 9 of the 36 are replies.
The avatar is a PLACEHOLDER and the file says so out loud. Two sample faces alternate down the thread, and the product will write the real one on the element, the way the event photograph is written on the card. They are here rather than there only because there are 198 of them and a stand needs faces.
| what left | when | the argument |
|---|---|---|
| the sort chip | 2026-08-05 | Its four painted rules were the same declaration block, byte for byte, as the chart range in tabs.css: one control drawn twice in two files. Neither file could take the other, because a file that styles another component's classes is exactly what the rules forbid. It is chip now, and what stayed here is the WELL it sits in |
| the signed-out prompt | 2026-08-07 | A full-width box on a well with a hairline, a 10 corner, muted semibold and a brass-edged hover. That is a fifth EMPHASIS of the button family, the only one that is an invitation rather than an action, so it is .btn.btn-prompt.btn-lg.btn-block now. Its font moved 13 to 14, the ramp's lg step, which is the single visible change the adoption made |
| the grey-layer leftovers | 2026-08-07 | Two rules kept "for the wireframes" that the wireframes cannot see, because wireframes/ links no stylesheet from components/ |
The third one is the lesson, and an instrument caught it. The two rules drew a divider between segment buttons and had always LOST to the painted rule below them, at (0,3,1) against (0,2,1). When the chip left, the painted rule became a two-class selector at (0,2,0) and these won: a proof run reported 45 screens and 180 elements changed, a 1px right border arriving on 90 chips. A rule kept for a tree that cannot see it is a rule waiting for the day something stops outranking it.
Measured 2026-08-05 under a coarse pointer at 390 on all painted screens, the Reply and Like controls rendered 23x17 to 29x17: the smallest control in the product and the only one failing WCAG 2.5.8 on BOTH axes, 72 placements. Four pixels all round took them to at least 31x25 with the label and the count still reading as text.
The file then says 44 was NOT taken here and gives a reason: it is a text
control in a meta line, and 44 would make the comment row taller than the comment. Measured today
with a finger, they render 44. The 72 buttons carry btn btn-bare, and the one
touch floor written in components/base.css on 2026-08-08 names .btn, so
the family-wide rule reached a control whose own file had argued its way out.
Neither half is obviously wrong, which is why this is a row and not an
edit. A family floor is what stops six files each remembering a different part of the
product; a per-control argument written down is what stops a floor from breaking a layout nobody
re-read. What cannot stand is a file stating a decision the product has stopped making.
docs/backlog.md 59.
| 2026-08-05, before | after the 4px | today, with a finger | |
|---|---|---|---|
| Reply / Like | 23x17 to 29x17 | 31x25 to 37x25 | 31x44 to 37x44 |
A container keeps the well and gives up the control. Every rule this file lost was a control; every rule it kept is a place: the list, the row, the indent, the gap under the prompt, the well around the sorter.
Sameness is measured, not felt. The sorter left because two files held the same declaration block byte for byte, and nobody had put the two readings side by side.
Never keep a rule for a tree that cannot see it. Two of them sat here harmlessly for as long as something else outranked them, and arrived on 90 chips the day it stopped.
Never let a file own a control by category. The tab file held the comment sorter because "that file owns every switcher", and every one of its seven rules was scoped to this component's container.
Never leave a written decision behind the product. This file still explains why its actions are not 44, and they are 44.
The level and its reason: the molecules
page. The stylesheet: components/comments.css. The sorter's chip:
chip. The prompt's emphasis: button. The
floor: components/base.css. The open row: docs/backlog.md 59.