ADR-0071 The test was one axis short, and presence is the row it would have cost
#Context
presence was to be audited against tag before being built, on the reading that the two are Emitter/Emitter, 1–2 against 1–3, both non-interactive, one governed part each, neither disclosing — four of five dimensions identical, and the fifth a ceiling, which ADR-0027 says is emphasis rather than identity. The open question was whether *"reports something outside this View"* is a sixth dimension the test lacks, the way disclosure was until ADR-0059 added it.
The audit answered a question it was not asked, twice over. The comparison was against the wrong component, and the test used to make it names four of the thirteen axes the component tier actually carries.
#The test's own claim about itself is false, and it is checkable
ADR-0057 states the test and, in the same breath, its scope:
extract the rule, then ask whether what remains differs from an existing component in layer, legal levels, interactivity or governed copy — every dimension the component tier has.
ADR-0061 added a fifth, disclosure, and recorded that ADR-0059 had introduced it without saying so.
The component tier declares thirteen axes on every one of the thirty-four built components — selector, layer, interactive, vouches, acknowledges, levels, variants, mark, geometry, text, space, motion, apcaFloors — and five more on some of them. So the clause was never a description of the tier. It was a description of what the audit that wrote it happened to look at, and it has been carried into five records since as though it were a derivation.
Not all thirteen are dimensions of identity, and the tier itself makes the split. mark, geometry, text, space, motion, apcaFloors and selector answer how a component is drawn, and every one of them is downstream of a level and a variant — two components with the same layer, ladder and claim will differ in these because they are different sizes on a screen, not because they are different components. The axes that answer what kind of claim this is are the identity axes, and there are three of them the test has never named: vouches, acknowledges and variants.
#The neighbour was wrong
tag's own contract says what its subject is:
A tag classifies the thing it sits on. It resolves nothing between siblings.
Its subject is its host. presence's subject is three operators who are not on the screen and who are not a property of whatever it sits beside — an alarm is not three-operators-flavoured. Against tag the four-of-five was arithmetically right and was measuring a pair that differs on the one thing neither of the two ceilings describes.
The nearest neighbour is pagination, whose ADR-0066 kept it on exactly this ground: *"its subject is a set the reader cannot see."* Put the two side by side under the test as stated:
| Dimension | pagination | presence |
|---|---|---|
| Layer | Emitter | Emitter |
| Legal levels | 1 to 2 | 1 to 2 |
| Interactivity | false | false |
| Governed copy | one part, subject — *"what is being counted"* | one part — what is being counted |
| Disclosure | none | none |
Five of five. Under the test as stated, presence is removed as a second spelling of pagination — and the removal would have been argued in the same voice as the four before it, on a comparison nobody had made, because the audit was pointed at tag.
#The axis that separates them has been machine-read since ADR-0048
vouches. pagination's own tier entry gives the reason it declares false:
A total is a result the product computed, not a condition an external source keeps confirming, so there is no freshness input here and no retraction to render.
presence is that sentence inverted with nothing left over. There is no part of *who is holding this view* that the product computes. The claim arrives from a session source and is true only while that source keeps saying so, which is ADR-0048's thesis in its purest form — purer than status-indicator's or meter's, both of which at least report a reading the product received.
And the consequence of a stale one is the sharpest in the set. Every other vouching component's expired mark misleads the reader about the machine; an expired presence mark misleads them about the supervision. It says a human has eyes on this, and the reader's rational response to that claim is to look somewhere else. A component that can quietly cause an operator to stop looking is not a decoration on the human-in-the-loop property — it is the place that property is most easily lost.
vouches clears ADR-0059's bar for what makes a dimension, and clears it more comfortably than disclosure did. That record required a check behind it, a mechanism it fixes, and a rule about what the declaration obliges. Vouching has all three and has had them for twenty-three records: verify-output.js checks it in both directions — a component that vouches and draws no retraction *"keeps asserting a claim it cannot support, which is the whole defect"*, and one that draws a retraction without declaring it has *"a treatment no check prices and no product knows to trigger"* — and the mechanism is two-sited by design, the unvouched-mark alias re-point in the source and the broken perimeter in the stylesheet, because a colour alone fails in field-night at |Lc| 0.00 (ADR-0043).
#Decision
presence stands and is to be built, declaring vouches: true. It is the first row in this reopening kept by an axis the test did not contain, and the build is what proves the argument: a contract asserting a retraction it does not render is prose, and tokens:verify refuses it in both directions.
The identity test is restated with seven dimensions, five inherited and two recovered from the tier:
- Layer — §3.
- Legal levels — §2, and a ceiling is emphasis rather than identity (ADR-0027).
- Interactivity —
interactive, ADR-0045. - Governed copy — the contract's parts and what they are obliged to say.
- Disclosure — whether it removes elements from the frame, ADR-0059.
- Vouching —
vouches, ADR-0048. Whether the claim is one the product observes or one it owns. - Acknowledgement —
acknowledges, ADR-0050. Whether the claim can be acknowledged and descend.
And the fourth dimension is sharpened rather than restated. "One governed part each" is not an answer; what the part is *obliged to say* is. ADR-0058 made region's count governed and required because *"a set whose size is not stated makes two different screens identical"*, and ADR-0066 kept pagination on the same ground. A part carrying a cardinality the reader cannot verify by looking is not the same dimension answered as a part carrying a classification of the thing it sits on, and reading the count alone collapses region, pagination and presence into tag.
variants is named and deliberately excluded. ADR-0028 makes the variant axis the rule of one component's own set, which is a statement about that component's members rather than a comparison between two components; ADR-0060 refused a switcher variant on tabs for precisely that reason. It is a tier axis and it is not an identity dimension, and saying so here stops the next audit recovering it by the same reasoning that recovered the other two.
§12 gets the test as its stated grounds for refusing a component, which is the gap that let it drift. That section has always promised *"stated grounds for refusing a component"* in its contribution model and has never carried any; the test has lived in ADR prose since ADR-0050 and has been mis-stated in two directions from there — silently extended by ADR-0059, and described as exhaustive by ADR-0057 when it was never a derivation of anything.
#Rejected options
Remove presence on the five-of-five against pagination. The disciplined-looking answer, and the one the test as written produces. Rejected because it would have been the fifth removal in nine passes, argued on a test that had not been checked against the tier it claims to enumerate — and ADR-0061's warning is exactly this: *"a roster that only ever shrinks has stopped being an adversarial sample and become an argument the system is winning against itself."* The row that would have been lost is the one component in the set whose failure mode is an operator not looking.
Add "reports something outside this View" as a genuinely new sixth dimension, as the open question proposed. Rejected because it does not survive contact with the tier: the phrase has no mechanism, no check and no rule, and the property it gropes at is vouches, which has had all three since ADR-0048. Accepting it as new would have added a dimension with nothing behind it *and* left the real axis unnamed for a seventh audit — the worse of the two failures, since a dimension the engine cannot see is the scenery §11 refuses one level up.
Derive the dimension list from the tier at check time rather than stating seven. Attractive after ADR-0064's *one derivation per list*, and it is why this record counts the axes rather than asserting them. Rejected as specified because two of the seven — governed copy and disclosure — are contract-side and have no tier axis to derive from, so a check reading component.config.json alone would report five and be wrong in a new way. What is owed instead is narrower and is named in Consequences.
Build presence in this pass. Rejected on the unit rule: this record amends the instrument six audits have used and one that four removals were argued with. Landing that in the same commit as a contract, a stylesheet, a scene, two baselines and a fixture would make the amendment unreadable, and the amendment is the part that has to be read.
#Consequences
Roster 50, built 34, both unchanged. presence moves from *to build* on a paragraph to *to build* on an argument, which is the difference between a row and a decision.
Five records that cite the four-dimension test are not amended in place. ADR-0057, 0059, 0060, 0061 and 0067 each applied it correctly to the pair in front of them, and every one of those verdicts survives re-reading against seven — structured-list, contained-list, list, content-switcher and breadcrumb differ from what they collapse into on none of the three recovered axes, and file-uploader was decided on layer. The test was short and the answers it gave were right, which is the only reason this is an amendment and not a re-audit.
The next audit's first move changes. live-feed, timeline, combobox, avatar, link, menu, overflow-menu, popover and toggletip remain, and each is now put to seven questions rather than four. avatar in particular acquires one it did not have: section G justifies it as *"the mark presence has no way to draw"*, and once presence is built and carries its own governed count, whether a set that can state its size in words still needs a mark per member is a real question and not a rhetorical one. It is named here and not answered, in ADR-0061's manner.
A check is owed, and it is narrower than the rejected derivation. The tier can say which of its axes are identity-bearing rather than leaving the split in this record's prose: an identityAxes list beside the component entries, asserted by tokens:verify to be declared on every component and to contain no axis the tier does not carry. That leaves governed copy and disclosure stated where they live, in the contracts, and stops a third silent extension of the tier half. It is not written in this pass and this is the second check the repository owes, the first being tools/battery.js's own lists.
Nothing built, no token, scene or baseline moved. A record, a playbook section and a corrected sentence.
#Measured
component.config.json, this pass: 34 components, 13 axes declared on every one, 5 declared on some —adverseVariants10,surface27,stacking4,radiusExemption1,quietVariants1.vouches: trueon 8 of 34 —status-indicator,alert,meter,queue-item,table-row,tag,inline-loading,loading.acknowledges: trueon 3 —status-indicator,alert,staleness.- Emitters declaring exactly
[1, 2]: 4 —tooltip,empty-state,pagination,code-snippet.presencewould be the fifth. pagination's governed parts: one,subject, role *"what is being counted"* — the string this audit expected to distinguish it and did not.verify-output.js's vouching block: both directions, two files of evidence, source for the alias and stylesheet for the break — *disk, this pass*.pnpm battery— the verdict this pass is measured by.