ADR-0083 A closed select's options were never in the frame, and ADR-0081 was wrong about it
#Context
ADR-0081 audited section C and found four built components — input-field, text-area, select and number-input — identical on all eight of §12's dimensions. It then separated two of them and said so:
selectis separated on D5 and does not declare it. It renders a native<select>with an<option>per member, and a closed one paints only the selected option — so the rest are in the frame and not rendered, which is ADR-0059's test word for word.
That is wrong, and the way it is wrong is the reason this record exists rather than a quiet edit. The sentence asserts a rendering behaviour — *a closed select paints only the selected option, so the rest are in the frame and not rendered* — that was never measured. It was reasoned from what a browser does, not read off this repository's own artifacts, and the artifacts say something else.
#What the frame actually is
measure.js collects the frame with one selector:
const ATTR_SEL = `[${ATTR.layer}],[${ATTR.level}],[${ATTR.slot}]`;An element is in the frame because it declared itself into it. Nothing else is there — not the scene's layout divs, not a <nav>, not a scrollbar, and not an <option>.
Select.tsx writes no data-wr-* attribute on any option, and the committed scene proves it: **fixture 37 holds twenty <option> elements and zero of them carry any data-wr-* attribute.** So no option is in dom.nodes, no option has a rendered flag, and Salience — hidden — which §12 names as where D5 lives — cannot see one.
A closed select's options are not hidden. They were never there.
#The rule this generalises to
A component that delegates a behaviour to the user agent does not carry the dimension that behaviour would give it, because the frame carries only what declares itself into it.
select delegates its disclosure. The option list is drawn by the browser, outside the document this system measures: it is not chrome the budget governs, not a node the engine reads, and not something ADR-0040's rule can reach. That is a legitimate design and not a defect — but it means the component does not have D5, rather than having it and failing to say so.
It is also contingent rather than permanent. A Select that became a custom listbox would acquire D5 the moment it did, because its options would then be elements this system declares. The dimension follows the declaration, not the visual behaviour.
And it sits next to ADR-0079 rather than contradicting it. That record said a frame carries properties and never identities. This one says what the frame carries at all: what declares itself. The engine was not asking the wrong element here — there was no element.
#Decision
ADR-0081's select finding is retracted. select does not carry D5, and there is nothing for it to declare.
Standing item 24 is restated and it is worse than it was recorded. ADR-0081 wrote it as *three* built controls with two separable; it is four built components alike on all eight dimensions, and only one of them has an available separation:
input-field— no separation available.text-area— no separation available; what distinguishes it frominput-fieldis a line count, and ADR-0057 removed three roster rows to keep quantities out of the tier.select— no separation available. Its disclosure is the user agent's.number-input— separable on D4 and under-declaring it. A numeric field owes its unit and its permitted range:71is not a reading and71 degrees, 40 to 90is, and neither can be verified by looking, which is the property that maderegion's count required (ADR-0058) and keptpagination(ADR-0066).
Nothing is removed and nothing is declared in this pass. The correction is the unit.
#Rejected options
Edit ADR-0081 in place and say nothing. The efficient option and the one this repository has refused every time it has come up — six corrections were recorded rather than quietly fixed in the pass that built Presence and LiveFeed alone. A record that silently acquires a different claim is a record a reader cannot trust about anything else it says. ADR-0081 is amended with a pointer here, and the wrong sentence is left legible.
Declare D5 on select anyway, on the reading that a reader cannot see the options. Available, and it would have been the shortest path to separating one of the four. Rejected because it makes the dimension mean two different things: §12 anchors D5 to Salience — hidden, ADR-0040's rule is about a demand that cannot be seen, and neither reaches an element the engine has no record of. A dimension that means one thing in a check and another in an audit is the drift ADR-0071 found twice.
**Give <option> elements data-wr-* attributes so the frame can see them.** It would make the claim true, which is the reason to distrust it. Attributes exist to declare what a component *is*, and adding them to make an audit's sentence correct is the tail wagging the dog — it would also put twenty elements per select into every scene's node set and into the pairing matrix's reach, for nothing.
Treat this as a defect in ADR-0081's method rather than in one sentence. Tempting, and it overstates. The method found the four-way collision, which is real and stands; what failed was one assertion inside it, made about a browser rather than about an artifact, in a record whose other eleven claims were each read off disk. The lesson is narrow and is already written in this repository's own rules: no rendering fact without a tool call producing it in the same pass.
#Consequences
The collision ADR-0081 found is one component wider than it recorded, and three of the four have no separation available rather than two. That makes the text-area question sharper rather than softer: it is not one row failing the test, it is a bucket of four in which one component can be separated.
select's option list is named as outside the frame, which had not been stated anywhere. Its budget consequence is nil — the browser's dropdown paints outside the document the engine screenshots, the way a scrollbar does — and that is worth having written down before someone measures a select and wonders where the options went.
ADR-0081's Decision and Measured sections are amended with a pointer to this record. Its select bullet in the three named units is withdrawn; the other two stand unchanged.
No token, no component, no scene, no baseline, no check. One retraction and one rule.
#Measured
measure.js, this pass: the frame is[data-wr-layer],[data-wr-level],[data-wr-slot]and nothing else — *disk, this pass*.packages/budget/fixtures/37-select-calm.html, this pass: **20<option>elements, 0 carrying anydata-wr-*attribute** — *disk, this pass*.Select.tsx, this pass: nodata-wr-*written on any option; the onlyhiddenin the file is the statichiddenon the placeholder option and twoaria-hiddens — *disk, this pass*.discipline.test.js's disclosing set is derived fromhidden={in the component source, andselectdoes not appear in it: the five it reports aretoast,tooltip,accordion,tabs,popover— *react:test, this pass*.pnpm battery— the verdict this pass is measured by.