ADR-0082 Sections D and G audited: four refused, one kept, and the roster is one row from complete
#Context
ADR-0081 audited section C as a group and refused all six of its unbuilt rows. It closed by naming two rows outside its own section that the same argument reaches — menu in section D and combobox in section G — and left them to their own sections' audits. This is that audit, run over both sections at once because they hold five rows between them and because two of the five are the ones ADR-0081 named.
§12's procedure, unchanged: extract the rule first, then compare what remains on eight dimensions.
#Four refused
menu is a Popover holding a ButtonGroup. It is a Scope that hosts arbitrary content anchored to a control, which is ADR-0026's hosting question, and ADR-0080 built the component that answers it. Put beside popover it is identical on all eight: scope, [1], non-interactive — its items are the things a reader acts on and it is not one of them — no vouching, no acknowledgement, no persistence, D4 *what this is about*, and D5 present, because a closed menu is absent from the frame exactly as a closed popover is. This is ADR-0076's argument arriving a second time, and that record's own sentence fits without alteration: both host arbitrary content anchored to something else, and what a system separates them on is the trigger, which this one puts in a Button beside the component. What is left over is the *set rule* — a menu's items are a set of which exactly one may be chosen — and ADR-0054 already built the Arbiter for that, in a sentence written about alarms: *"an alarm's controls arrive as a set — acknowledge, escalate, silence — of which exactly one may be the local focus."*
overflow-menu is a Button and a Popover, and section D already said the first half. That section's own prose reads *"overflow-menu is the trigger and is an Emitter; the surface it opens is a menu"* — so the row was already half-refused by its own record, and refusing menu refuses the rest. As a trigger it is identical to button on all eight, D4 included: *the action itself, named as an imperative* carries "Show three more actions" without strain. This is the fifth time this system has put the control outside the thing it controls (ADR-0050, ADR-0062, ADR-0066, ADR-0076). Its one apparent remainder — the claim that there are more actions than fit — is a count of things not on screen, which is pagination's subject, and a count spoken by a control is that control's label.
avatar is presence's mark, and the row was defended on a dimension the tier excludes. Its paragraph in section G argues that the system *"calls itself human-in-the-loop and has nothing that draws a human"* and that *"presence reports which other operators hold a view and has no mark to draw them with"*. Both sentences ask for a shape, and mark is excluded from the identity test by name — *"How the component is drawn. Downstream of a level and a variant."* This is the shape ADR-0071 caught for presence itself, where *"about the humans rather than the machines"* turned out to be a claim about subject matter that the tier does not read; here the wrong ground is drawing rather than subject.
A human figure is also not a candidate for ADR-0028's shared vocabulary, on that record's own test: a shared entry is a statement about attention — a triangle means *worth knowing* wherever it is drawn — and *this is a person* is not a statement about attention at all. So it is a private shape belonging to whichever component draws it, which is presence, exactly as the chevron belongs to accordion, select, data-table and number-input. presence currently draws no polygon; if it acquires one, it acquires it as its own.
combobox is a select whose option set is computed from what has been typed. Its section-G paragraph argues the case *"select and search leave between them"*, and ADR-0081 refused search — so half the argument is already gone. What remains is the other half: *"the set is too large to enumerate and too structured to free-text."* Too large is a quantity, and ADR-0057 removed three roster rows to keep quantities out of the tier. On the eight it is select: emitter, [1,2,3], interactive, no vouching, no acknowledgement, no persistence, the field pair for D4, and disclosure — which select has in fact and under-declares, per ADR-0081's standing item 24.
#One kept, and it is the closest call in three audits
link stands. It is separated from every built component, and — this is what makes it worth stating rather than asserting — it is separated from the two nearest ones on different dimensions, so neither separation is load-bearing alone.
From button, on D4. Both are Emitters at [1,2,3], interactive, with no vouching, acknowledgement, persistence or disclosure: identical on five of the six tier axes and on D5. What differs is the obligation. button declares *the action itself, named as an imperative*; a link's part must name where it goes. Those are different in kind — a verb against a place — and the destination is the thing a reader most plainly cannot verify by looking, which is §12's own test for D4.
From navigation-item, on D1, and the two share the D4 that separates the link from the button: that contract declares *what this destination is*, word for word what a link owes. So if the layer question went the other way, this row would collapse. It does not. §3's authority question gives two answers: a navigation entry ranks one of several siblings as current — its variants are resting and current, and it accepts an Emitter — while a link has no set to be current within and accepts nothing, AcceptedBy<'emitter'> being never. A link cannot be current. That is a capability difference and not a placement one, which matters because placement is the ground ADR-0081 found unavailable to Emitters: two Scopes may be two places (ADR-0073), and two Emitters may not.
Its ceiling is a question for the build and this record does not settle it. There is an argument that a link stops at Marked, and it would be the first ceiling in this system argued from §2's language column rather than its light column. Directed reads *"Imperative. Names the next action"*, and a part obliged to name a destination is not an imperative — so a link that reaches Directed has either stopped naming a destination or become a button. Every ceiling argued so far has come from the light column: presence at 2 and sla-countdown at 3 both turn on *is this ever the emergency*, and alert's floor and staleness's turn on the same column read downward. The row keeps 1 to 3 and the build tests it, on ADR-0069's precedent — that record corrected sla-countdown from 4 to 3 while building it, not while auditing it.
And it will move ADR-0045 before it is built. A link is the first interactive component in this system that draws no perimeter. That record makes a turned corner the one thing that says a reader may act, tokens:verify refuses an interactive component that declares no space.radius, and the single exemption is radiusExemption: 'shape' — checked against the stylesheet, and satisfied only by a component that already turns its perimeter completely, which is radio-button. A link turns nothing because it bounds nothing; what says *you may act* on a link is a rule under the text. That is either a third exemption kind or a generalisation of the rule, it is a change to a check rather than to a component, and by ADR-0077's argument it belongs in a pass whose subject is that.
#Decision
menu, overflow-menu, avatar and combobox are refused. link stands with its ceiling and its perimeter named as open questions.
menu and overflow-menu are Carbon slugs and move to the exclusion table with their reasons. avatar and combobox are Lightning rows and are recorded in section G's own prose, the way ADR-0050 recorded acknowledge and ADR-0073 recorded timeline in section F — the exclusion table is Carbon's drop list and its identity would break if a Lightning row entered it.
Roster 42 → 38. Built 37. One row remains.
#Rejected options
Keep menu because a menu is not a popover in any other system. True and not a reason. ADR-0026 left the instruction that these rows *"answer the hosting question"* when built, ADR-0076 applied it to remove toggletip, and the same word comes back a third time. A system that kept menu after removing toggletip would be keeping the one whose name is more familiar.
Keep avatar because a human-in-the-loop system should draw a human. The row's own argument and the reason it is worth refusing carefully rather than briskly. It is a request for a mark, and a mark is not a component here — the tier excludes it by name and ADR-0028 refuses it a place in the shared vocabulary because it says nothing about attention. presence may draw one. Nothing is lost but a row.
Refuse link as well and finish the roster at 37. Available, and the tidiest-looking outcome, which is the reason to distrust it. Three audits have now removed eleven rows and an audit that removes everything it is pointed at has stopped being a test. This row differs from button on what its copy is obliged to say and from navigation-item on §3's own question, and no built component covers it.
Settle link's ceiling here. The argument from §2's language column is good enough to record and not good enough to fix a ladder with, and ADR-0069 is the precedent in both directions: it corrected a ceiling, and it corrected it while building.
#Consequences
Roster 38, built 37, and link is the last row. Sections A, B, C, E, F and G are complete; section D has one row left. Phase 4's exit is one component away, and the component it is away from will move a check before it moves a token.
The identity holds: 18 dropped + 25 distinct slugs carried = 43. Section G's own count moves from five to three, and its opening sentence is corrected with it.
Three audits, eleven rows, and the pattern is now visible. ADR-0073 and ADR-0076 took two from section B, ADR-0081 took six from section C, this takes four from D and G. Nine of the eleven collapsed into a component that already exists plus a control beside it, and the control was a Button five times. The layer model has been the thing doing the removing, not taste: a component that turned out to be a host, a trigger and a set is three things this system already has.
Two of the four refusals were named in advance by ADR-0081 and neither changed on inspection, which is worth recording because it is the first time this phase's audits have predicted each other.
No token, no component, no scene, no baseline. A roster, a record, and one row left standing with two named questions.
#Measured
- Section D and section G unbuilt rows before this pass: 5 —
link,menu,overflow-menu,avatar,combobox*(roster:check, this pass)*. popoverand amenuput to the eight:scope,[1], non-interactive, no vouching, no acknowledgement, no persistence, D4 *what this is about*, D5 present — identical *(read frompopover-contract.ts, this pass)*.navigation-item: variantsrestingandcurrent,accepts: ["emitter"], D4{"label":"what this destination is"};button: D4{"label":"the action itself, named as an imperative"}*(read from the built contracts, this pass)*.tokens:verify's radius rule: an interactive component with nospace.radiusfails unlessradiusExemption: 'shape', and that exemption is verified against the stylesheet for a 50% radius — one component claims it *(disk, this pass)*.pnpm roster:check— ROSTER OK, 38 rows, 37 built, one to build; 18 dropped + 25 distinct slugs carried = 43 *(this pass)*.pnpm battery— the verdict this pass is measured by.