ADR-0061 breadcrumb is the pattern navigation-item was built for, and this is where the collapses stop
#Context
Three of the last four passes removed or re-filed a roster row instead of building it. ADR-0057 removed three lists, ADR-0058 re-filed tile, ADR-0060 removed content-switcher. Each was argued on its own evidence and each stands. Together they are also a warning: a roster that only ever shrinks has stopped being an adversarial sample and become an argument the system is winning against itself. ADR-0021 took Carbon precisely because it was assembled by people who were not thinking about this system's premise; a test whose every answer is "we have that already" is not testing anything.
So section B's five remaining rows were audited together, before any of them was built, and this record reports where the test says stop as carefully as where it says collapse.
#The test now has five dimensions, and the fifth arrived last pass
ADR-0050 stated four: layer, legal levels, interactivity, governed copy — every dimension the component tier had when that record was written. ADR-0059 added one without saying so, which is worth saying now: whether the component removes elements from the frame.
That is not a style property. It has a check behind it (Salience — hidden), a mechanism the record fixes (hidden, never clipping, with an explicit [hidden] rule), and a rule about what may be inside what it removes. Two components identical on the first four and different on the fifth are two components, and tabs against breadcrumb is exactly that pair — which is how this audit found its own limit.
#Where the test says collapse: breadcrumb
Carbon's breadcrumb is a trail of links to ancestors with the current page last, plus a separator and an overflow rule. Its two documented types — location-based and path-based — differ, in the page's own words, only in *"the methods for populating the breadcrumb trail"*, and "Both types are styled the same." A data-sourcing distinction is not a component distinction, so the row is one thing before the test starts.
And navigation-item's own contract already decided this shape. That component is one entry in a navigation, not the navigation, and its header note says what holds the entries:
The containingnav/role="navigation"element is plain markup a composer supplies, the same wayrole="table"is for the table row.
Section D carries that decision as an absence: navigation-item is built and there is no navigation row on the roster. A breadcrumb is a set of navigation entries with the last one current, which is variant="current" on the last NavigationItem — the variant that component already has, in the markup pattern its contract already names.
What is left after extracting that is a separator glyph, and this system has decided against one twice. shell-header and page-header both put a drawn rule between two identity strings rather than a character, and page-header's stylesheet gives the reason in terms: *"a character here would enter the shipped font subset (ADR-0035) to do a rule's job."* A breadcrumb's / is that character, once per crumb.
Carbon's remaining claim about the row is that breadcrumbs are *"always treated as secondary and should never entirely replace the primary navigation."* Secondary is emphasis and ADR-0027 settled what emphasis is: it is the level. A breadcrumb is navigation entries at a quieter rung than the primary navigation's, which the ladder already carries.
breadcrumb is removed. Roster 53 → 52; the Carbon term 39 → 38.
#Where the test says stop, which is the more important half
Four rows survive the same test, and each survives on a different dimension. Naming them here is what stops the next pass reaching for a fourth collapse by habit.
progress-indicator — three states per member, and a direction. tabs members are in two states, selected and not, and its order carries no meaning beyond position. A progress indicator's members are complete, current or incomplete, and Carbon refuses it outright *"when the process may be completed in any order"*. A set whose order is a constraint rather than a layout is not the set tabs ranks, and three states are not two.
pagination — its subject is what is not on screen. Every Arbiter built so far ranks things the reader can see. A pagination control's content is a count of items it is not showing and a position within them; its nearest relative in this system is not tabs but region, whose count ADR-0058 made governed for the same reason — a cardinality the reader cannot verify by looking. That is a component, and it is one nothing built covers.
file-uploader — per-member state with no exclusivity. Section B's justifying sentence names *"a failed upload"* as an Arbiter case, and it is the one example on that list where the distinguished member is distinguished by having gone wrong rather than by being chosen. Several files may be uploading, several may have failed, and none of that is the exactly-one rule tabs carries as its variant name.
tree-view — and it is not a collapse, it is a conflict. Carbon's tree is branch nodes containing branch nodes to arbitrary depth. §5 says Arbiters do not nest inside Arbiters *"because breaking it makes budget resolution ambiguous"*, and a tree is that nesting as its entire subject. Carbon's own page even sends the one-level case away: *"When you only need one level of nested information … use accordion."* So the row cannot be built as specified and cannot be dismissed as already existing. It is named here as the harder of the two remaining questions and is not decided in this record — the honest options are a recursion that lives below the Arbiter tier, an argued exclusion in the manner of ai-label, or a change to §5, and each is its own pass.
#Decision
**breadcrumb is removed from the roster and enters *Not carried, with the reason*. The other four rows in section B stand and are to be built.** tree-view additionally carries an open question this record names and does not answer.
#Rejected options
Build breadcrumb as an Arbiter taking crumbs as data, the way tabs and button-group do. The strongest option, and it would work: crumbs as data, the last one granted the set's rung, the rest the rung beneath. Rejected because the grant is not what a breadcrumb needs — the current crumb is not *chosen* over its siblings, it is the one the reader is standing on, and the others are its ancestors rather than its rivals. An Arbiter that granted here would be answering a competition nobody entered. navigation-item's current variant already says "this is where you are" without claiming anything was resolved.
Remove navigation-item's row instead and build breadcrumb as the container. Symmetrical, and it lost on the direction of the dependency: navigation-item is built, carries a scene, a receipt and eight registry entries, and its contract's argument for being one entry rather than the region is sound and unrelated to breadcrumbs. Removing built work to make room for an unbuilt row would be the error ADR-0021's Decision names when it keeps the four components Carbon does not publish.
Collapse progress-indicator too, since it is also an ordered set with one current member. Genuinely tempting after three passes of collapses, and it is the reason this record exists. It lost on the count of states: two against three is not a difference of degree, and Carbon's own refusal of unordered processes makes the sequence a constraint the component enforces rather than a layout it happens to have. This is where momentum had to be checked, and checking it is the finding this record most wants to be read for.
#Consequences
Roster 52, built 30, and the shrinking stops here. Twenty-two rows remain to build and four of them are section B's. The identity roster:check derives holds: 7 dropped + 36 distinct Carbon slugs carried = 43.
ADR-0050's test is recorded as having five dimensions, the fifth being disclosure, which ADR-0059 established without amending the test it belongs to.
tree-view has an open question against §5 and it is the first row on the roster that this system's own layer model may refuse. That is the adversarial sample doing the thing it was taken for — not "we have that already", but "our model cannot express this, and one of the two is wrong."
Nothing built, no token, scene or baseline moved. A record and a table row.
#Measured
- Carbon's breadcrumb page, 2026-09-05: two types differing only in *"the methods for populating the breadcrumb trail"*, "Both types are styled the same", and *"always treated as secondary"* — the source ADR-0052 used.
navigation-item-contract.ts's own header: the containingnavis *"plain markup a composer supplies"*; section D carries nonavigationrow, which is that decision as an absence — *disk, this pass*.- The five dimensions applied to five rows: one collapses, three stand on three different dimensions, one conflicts with §5.
- Roster 53 → 52; the roster's Carbon rows 39 → 38; dropped 6 → 7; the identity 7 + 36 = 43 holds.
- Built 30, unchanged.
pnpm battery— the verdict this pass is measured by.