ADR-0132 A page header's title is the size the system grants it
Takes the second component of ADR-0131's list, and settles the question that record stopped at.
#Context
ADR-0131 wired page-header to its tier, watched its title fall from 24px to 18.29px, and reverted. The disagreement it exposed was three-way:
- the component drew a hard-coded
24px - the record declares
title-size: text-lead, 1.143rem - the record's own note says the title *takes the primary role at body size because it is what the route is*
Three sources, three answers, none of them consulting the other two, because nothing read the tier.
The system answers it, and the answer is in the tier rather than in anyone's taste. Across all 32 component records, exactly two type roles are ever declared: text-caption, 51 times, and text-lead, four times. text-body, text-title and text-display are declared by no component at all.
The four holding text-lead are the four things that name or lead: alert.title-size, modal.lead-size, shell-header.name-size and page-header.title-size. That is a deliberate scale, and page-header is already sitting in the right set.
So the component's 24px is the outlier. It is roughly text-title, a role for page prose that no component takes, and it was hard-coded rather than chosen: the component predates its record and nothing has ever read one against the other.
The note is wrong twice, and the second half is the more interesting. It says *the shell header's pair rotated*, and the shell header declares name-size: text-lead, context-size: text-caption while this declares title-size: text-lead, context-size: text-caption. Identical, not rotated. Then it says *at body size* while the declaration beneath it says text-lead. A note that disagrees with the two lines under it is how a record stops being read.
#Decision
The record is right. text-lead stands, the component is wired to it, and the title gets smaller.
A page header names where the reader is. It is a Scope at level 1, Ambient, and §2 puts that at or near the substrate with minimal deviation. A 24px title is not what Ambient looks like in a system whose largest component type role is 18.29px, and the shell header, which does the same job one layer up, has been drawing text-lead all along.
The note is corrected rather than deleted, and it now says which pair this is and why text-lead is the ceiling.
gap and pad come from the tier too. They were --wr-space-100 and --wr-space-200, flat 8px and 16px at any density; they are now --wr-page-header-gap and --wr-page-header-pad, both the space-inline role, 12px at comfortable and an answer to the density switch at compact.
The title takes its family from the tier as well, --wr-page-header-title-family, which resolves to the display face. The component had no family declaration and inherited the body face, so the record's title-family was the fifth thing nothing read.
#Consequences
Two scene values moved and every verdict held. 67-proof-incident and 74-proof-incident-requested, both on #scope-health, 0.044008 to 0.044171 and 0.045008 to 0.043702. 56 passing and 32 intentionally red, unchanged in both directions. The darwin record is re-recorded and the structural diff is two leaves; nothing else in the file moved.
linux-x64 is not re-recorded and CI will report it. The budget workflow compares against the linux record at an exact bound, and these two scenes will move there as they moved here. Closing it needs a push, the budget-receipts artifact from that run, and a transplant commit, which is the round trip this repository has always paid for a visual change. It is stated here rather than discovered in a red run.
Two of eleven are wired. button-group cost nothing and page-header cost two scene values and a smaller title. The remaining nine are meter, tooltip, button, checkbox, modal, accordion, empty-state, pagination and link, and ADR-0131's finding holds for each: the wiring is mechanical and the question underneath it is not.
What this record adds to that finding is a way to answer the question without arguing about it. The tier is a corpus. Where a component and its record disagree, the other thirty-one records say which of them is speaking the system's language, and here they were unanimous.
#Rejected
Change the record to text-title so the component keeps its 24px. The conservative move, and it would make page-header the only component in the system declaring a role the other thirty-one avoid. It also fits the record to the output, which ADR-0124 rejected in the same words: a number fitted to the output describes it rather than constrains it.
Take the note at its word and declare text-body. The note is the least reliable of the three sources: it is the one that is already wrong about the shell header in the same sentence. A title at body size would also make the page header the only Scope whose name is no larger than its contents.
Wire the spacing and leave the title at 24px for now. It would have moved no baseline and left the component half wired, which is the state this whole sequence of records exists to remove. A component reads its tier or it does not.