ADR-0044 Quiet is what "fine" looks like, and a condition may not be whispered
#Context
ADR-0043 repaired emitter-ambient in all four themes and scheduled its own second unit: reassign level 1, across the 47 variant rows in 17 components that currently give level 1 the level-2 role, from the borrowed role to the restored rung. It described that reassignment as mechanical. It is not, and counting the rows properly is what showed why.
31 of the 47 borrow emitter-marked, a plain ladder rung with no meaning of its own. There the substitution is exactly what ADR-0043 describes. The other 16 borrow a status role — status-positive, status-caution or status-critical — and there the substitution erases the variant's colour at level 1 and leaves shape or pattern to carry it alone. That is a design decision about what a level *means*, not a token edit.
Level 1 is where it matters most, because level 1 is most of the screen. Counted from the committed fixtures: 455 level-1 elements render in the unthemed set and 1,447 in the themed set, against 208 and 698 at level 2. And the level-1 population is lopsided in a way that locates the answer:
| variant rendered at level 1 | count | |
|---|---|---|
ok | 186 | a fleet at rest — the normal state of a monitoring screen |
attention | 11 | a named condition, rendered as though it were resting |
critical | 1 | the same, worse |
Two questions are tangled here and they have different answers.
What should a healthy thing look like? Today ok at level 1 resolves through status-positive and renders green — 186 times on one screen. That is the sea-of-green dashboard, and it is the exact failure a system that rations attention exists to prevent: an operator who sees 186 coloured marks saying "fine" learns to stop reading the colour channel, and the one mark that is not fine arrives into a screen nobody is looking at any more. semantic.config.json has said the principle out loud since Phase 1 — status-positive is *"Nominal. Never level 3 or above: a healthy system does not demand attention"* — but it declared only a ceiling, and the floor is where the cost is.
What should an adverse thing be allowed to look like? A critical variant declared at level 1 is a component saying two contradictory things at once: this names a critical condition, and this is resting content that may not deviate from the substrate. §2 defines Ambient as "resting content." A condition is not resting. The declaration should not be available.
The two questions are separable, and answering only one produces an incoherent system. Repaint level 1 without a floor and a critical condition can still be whispered. Add a floor without repainting and 186 green dots keep shouting that everything is fine.
#Decision
Two rules. Level 1 is quiet in colour for every variant, and a variant that names an adverse condition may not be declared at level 1 at all.
Rule 1 — the rung is the colour. Every component's level 1 resolves through emitter-ambient and never through a variant's own status role. The variant is carried by shape, weight and pattern, which is §4's field-first encoding and already true in field-night, where one locked hue angle leaves nothing else to carry it. 37 rows take this. Thirty-six of them are ADR-0043's collapsed 47 — the 31 that borrowed emitter-marked and the 5 non-adverse rows that borrowed a status role, button/destructive, inline-loading/complete, meter/ok, status-indicator/ok and tag/positive. The thirty-seventh is data-table/sorted, which was never in the collapsed set because it declares a level 1 and no level 2 at all: nothing was duplicated there, so ADR-0043's count did not reach it, and Rule 1 does — the rung is the colour whether or not a second rung exists to collide with. 48 rows in the roster declare a level 1; 37 are repainted and 11 lose it.
Rule 2 — an adverse variant's floor is Marked. A variant naming a live adverse condition may not be declared at level 1. 11 of the 48 take this and lose their level-1 entry rather than being repainted: attention and critical on status-indicator and meter, caution and critical on tag, failed on inline-loading, and invalid on all four form Emitters. Enforced in the type, as ADR-0042 enforced toast's ceiling: the props become a discriminated union on the variant, so an adverse variant at level 1 is a compile failure and not a lint.
destructive is not adverse and keeps level 1. It names a property of an action, not a live condition — a Delete button sitting unused in a toolbar is resting, and its octagon already carries the warning. positive and ok keep level 1 for the opposite reason and it is the whole point of Rule 1: nominal is exactly what belongs at Ambient, and Ambient is now quiet.
The floor is a property of a variant, which is new. Every level bound this system has declared until now — toast's ceiling, modal's floor, the Arbiter ceiling — was a property of a component. AMBIENT_LEVEL's own doc in @wolf-rayet/core already anticipated the general shape: *"a component whose floor is higher than Ambient has to say which rung it excludes… the exclusion is a property of a kind of component rather than of one component."* This record extends "kind of component" to "kind of variant" and names the rung once, in core, as the floor an adverse variant takes.
Rule 3 — the Ambient rung carries its own contrast floor. Found while implementing the first two and recorded here rather than deferred, because it is the same discovery: a single component-wide minLc applied at every rung *denies the ladder it is applied to*. §2 defines level 1 as "at or near the substrate: minimal deviation in either direction", and a floor forcing a level-1 mark as far from its ground as a level-3 one forbids exactly that. The contradiction had stood since Phase 1 and was invisible for the reason everything else in this thread was invisible — no component had ever resolved a level-1 role, so the rule was never exercised. Declared per theme like every other floor: interior-light 30 → 15, and the other three unchanged. Only one theme moves and the reason is structural rather than stylistic — interior-light's substrate sits near the top of its range, so the quiet region between surface-raised and surface-inset is narrow by construction and no ramp step lies both inside it and 30 Lc from both grounds. field-day keeps 45 at every rung: glare is a physical constraint and does not relax for a quiet mark.
#Rejected options
Floor every status-carrying variant at Marked, uniformly. The option this investigation recommended before it counted the fixtures, and the one with the cleanest rule: a status role names a condition, conditions are not ambient, so no status variant may be declared level 1. It was refused by measurement rather than by argument. ok renders 186 times at level 1, more than any other variant at any other level in the system, and it is *correct* every time: a fleet of eighteen units mostly nominal is the ordinary state of the screen this system exists to serve. A uniform floor forbids the most common and most right declaration in the roster to catch twelve wrong ones. The rule that survives contact with the data is narrower and better: the floor belongs to *adverse* conditions, and "nominal" is not one.
Reassign all 47 rows to emitter-ambient and add no floor. ADR-0043's own text, executed literally, and it delivers the larger half of the benefit — the sea of green goes quiet. It lost because it makes the contradiction *invisible* instead of impossible: a critical variant at level 1 would render in exactly the neutral the healthy ones use, so the loudest thing on the roster and the quietest would be told apart by shape at the smallest size the ladder reaches. The system would have removed the only channel that flagged the mistake while leaving the mistake declarable. A rule that makes a wrong state harder to see is worse than no rule.
Reassign the 31 unambiguous rows and defer the 16. The smallest honest step, and it ships today. It lost because the 16 are the components the identity is about — status-indicator, meter, tag, inline-loading are the monitoring primitives, and four of the remaining rows are the form Emitters' invalid. Deferring them leaves the ladder flat in exactly the place attention is being rationed, and leaves Rule A printing an unused-rung note about a job half done. It also splits one decision across two baselines' worth of re-recording for no gain, since both halves move the same scenes.
Leave level 1 resolving through the variant's status role, and declare the ladder four rungs. Costs nothing, changes nothing, and has a real argument: colour-coding health is what every operations product does, operators expect it, and a green dot is instantly legible. It lost on this system's own thesis. The budget engine exists because attention is finite and every mark spends some; 186 marks spending it to say "nothing is happening" is the largest single misallocation in the roster, and it is measured rather than asserted — moving ok at level 1 from status-positive to emitter-ambient is 25–52% quieter per mark in every theme. A system that priced attention and then spent it on reassurance would not deserve the engine.
#Consequences
The most common element on screen becomes the cheapest. Deviation from the substrate for a level-1 ok mark, committed values against the proposed binding:
| theme | status-positive | emitter-ambient | change |
|---|---|---|---|
interior-light | 0.3471 | 0.1679 | −51.6% |
interior-dark | 0.8450 | 0.5442 | −35.6% |
field-day | 0.7132 | 0.3719 | −47.9% |
field-night | 0.5946 | 0.4479 | −24.7% |
That direction matters beyond this record. Emission moves down on the most-rendered element in the set, so the pass buys headroom rather than spending it — and the tightest margins in the system are field-day calm scenes at 13.9% and 14.9% unspent, which is the corridor every later decision about radius, elevation and type has to fit inside.
Twelve rendered elements become illegal and move to Marked. Eleven attention and one critical currently render at level 1 in the committed fixtures. They are scene edits, and the scenes' declared verdicts must not change — a scene that started failing because a mark got louder would be this decision breaking something rather than fixing it.
A new must-fail, and it is a compile failure. The refusal is a declaration a component may not make, not a frame the engine may not accept, so it belongs in tsc exactly where ADR-0042 put toast's. The engine reads rendered frames and has no opinion about what was permitted to be declared.
meter's state-encoding exemption narrows without being touched. Its three variants are told apart by fill length, which is why ADR-0039 granted it an exemption. Under Rule 2 only ok is legal at level 1, so at that rung there is nothing for the exemption to cover; it continues to apply at 2 and 3 where the variants co-occur. The exemption was not the target of this record and is not amended by it — it simply has less surface.
The enforcement surface grows by one type shape and no check kind. No new engine check, no new rule text in verify-output.js, and the pairing matrix stays keyed on layers and levels rather than variants. What is added is a discriminated props union per affected component and one named floor in core.
ADR-0043's second unit is superseded by this record rather than performed. Its Decision paragraph says every component's level 1 is reassigned to emitter-ambient; that is Rule 1 here and it is carried out for 36 of the 47 rows. The other 11 are not reassigned, because this record finds that they should not be declarable. ADR-0043's arithmetic is left as written — the correction footnote there already records that its row count was wrong — and this record is where the split is decided.
#Measured
Everything below is darwin-arm64, this pass.
The rows. 48 declare a level 1; 37 repainted to emitter-ambient, 11 floored. The generator and the verifier each refuse the pair independently, and both carry the positive half ADR-0041 requires — an adverse variant that still bound an Ambient mark would fail rather than have that binding silently ignored.
The direction, which is the claim. 221 Scope values moved: 208 got quieter, 13 louder, net −0.087938 across both baselines (56 unthemed, 165 themed). The 13 are the adverse row marks and meters stepping from Ambient to Marked, which is Rule 2 working rather than a cost. The pass buys headroom on the most-rendered element in the set.
Verdicts unchanged. The unthemed suite reports 9 of 40 failing and the themed suite 30 of 128, both exactly the declared must-fail sets, and both engines exit 0. Twelve rendered elements moved to Marked — eleven attention and one critical — and zero adverse-at-Ambient elements remain across all 171 fixtures, asserted by scanning the built HTML rather than by trusting the generators.
Two predictions this record made, both confirmed by measurement. emitter-ambient is now referenced by the component tier — Rule A reports 7 of 7 declared mark roles referenced, and its unused-rung note prints zero for the first time since ADR-0043 added it. And meter's state-encoding exemption narrowed without being amended: 6 variant pairs → 3, all at level 2, because its three variants no longer co-occur at Ambient. Rule B's checked population fell with it, 68 pairs → 37, for the same reason.
One shape the implementation added that the decision did not anticipate. The narrowing helpers live in @wolf-rayet/react rather than in either consumer, because the docs registry and the Storybook specimens both hold un-narrowed variants and two copies of that branch would be two chances for one to widen quietly. Four specimens were demonstrating states that no longer exist — the indicator's ladder starting at Ambient with a critical variant, a table row rendering attention at rest, the tag matrix's first column, and a level-cycling demo wrapping to Ambient on an adverse variant — and each was corrected rather than exempted.