Filed by the triage seat (objectstack-wide, seat post #6015, session_01AavokzJ5DndAwitDXvKy4U) as the spec half of objectstack-ai/objectui#11166, per that card's first grade. ⛔ Not a claim, ⛔ not a dispatch. Graded here: enhancement · priority:p3 · domain:spec · area:records · pm:queue.
What is declared, and what honours it
Ruling (triage, under the standing rule #18900 A′④: 「有 ⇒ 补消费端;没有 ⇒ 退役」)
RETIRE. The key has no consumer. The default-true slot has rendered empty on every page header without anyone missing a trail, and the trail it would draw is the shell's. So a renderer would duplicate the shell, not supply something missing.
- This card (spec): retire
breadcrumb from PageHeaderProps through the ADR-0087 route, the way icon was retired from the same row (ADR-0087 D2). An authored breadcrumb (true or false) on a stored or bundled page loads with the key stripped and the ADR-0087 notice. ⛔ It is never a hard refusal of an existing page. The generated artefacts, forms and docs the retirement playbook lists move in the same PR.
- The objectui half (objectui#11166): the renderer stops reading the key and drops the empty slot. The docs stop showing the key. That half lands after this one reaches objectui's install face, or reads the key defensively until it does.
- Same family, measured by this card, not assumed: the spec also declares a
nav:breadcrumb component (emptyProps, about :5311), and objectui has no renderer for it (git grep "nav:breadcrumb" over objectui packages/*/src: 0 hits). The dev measures whether any producer writes it. With none, it retires under the same rule in the same PR. With one, the report names it and it stays.
Clause-②: yes (a key leaves a published strictObject). The ADR-0087 conversion keeps stored pages loading, and the changeset carries the BREAKING banner the playbook requires.
- Pins:
- a page header authored with
breadcrumb: true and one with breadcrumb: false both load, with the key stripped and the notice recorded;
- the ADR-0087 ledger row is present;
- a page header without the key is unchanged (the control).
If the maintainer wants a page-level trail after all (for example on pages outside /apps/*, where the shell draws none), that is ENFORCE: a renderer in objectui plus a real trail source. Say so on this card and it is re-graded. The ruling above reflects no measured pull today.
Dedupe: this repo's issues were searched for breadcrumb PageHeaderProps (0 hits, as the objectui card also recorded) and nav:breadcrumb (0 open cards on it).
Filed by the triage seat (objectstack-wide, seat post #6015,
session_01AavokzJ5DndAwitDXvKy4U) as the spec half of objectstack-ai/objectui#11166, per that card's first grade. ⛔ Not a claim, ⛔ not a dispatch. Graded here:enhancement·priority:p3·domain:spec·area:records·pm:queue.What is declared, and what honours it
packages/spec/src/ui/component.zod.tsPageHeaderProps(strictObject, about:450) declaresbreadcrumb: z.boolean().default(true).describe('Show breadcrumb')(about:518).PageHeaderRenderer(packages/components/src/renderers/layout/containers.tsx) reads the key and draws an emptydiv[data-page-breadcrumb-slot]in both layouts. No code fills it (measured by the objectui#3906 dev at objectui PR driver-sql (PG): introspectPrimaryKeys reports a covering primary key's INCLUDE'd columns as key members — indkey is read whole, indnkeyatts is ignored #11162's head, and confirmed by that PR's contract review).@object-ui/app-shell'sAppHeaderrenders the breadcrumb path inside/apps/:appName/*.Ruling (triage, under the standing rule #18900 A′④: 「有 ⇒ 补消费端;没有 ⇒ 退役」)
RETIRE. The key has no consumer. The default-true slot has rendered empty on every page header without anyone missing a trail, and the trail it would draw is the shell's. So a renderer would duplicate the shell, not supply something missing.
breadcrumbfromPageHeaderPropsthrough the ADR-0087 route, the wayiconwas retired from the same row (ADR-0087 D2). An authoredbreadcrumb(true or false) on a stored or bundled page loads with the key stripped and the ADR-0087 notice. ⛔ It is never a hard refusal of an existing page. The generated artefacts, forms and docs the retirement playbook lists move in the same PR.nav:breadcrumbcomponent (emptyProps, about:5311), and objectui has no renderer for it (git grep "nav:breadcrumb"over objectuipackages/*/src: 0 hits). The dev measures whether any producer writes it. With none, it retires under the same rule in the same PR. With one, the report names it and it stays.Clause-②: yes(a key leaves a publishedstrictObject). The ADR-0087 conversion keeps stored pages loading, and the changeset carries the BREAKING banner the playbook requires.breadcrumb: trueand one withbreadcrumb: falseboth load, with the key stripped and the notice recorded;If the maintainer wants a page-level trail after all (for example on pages outside
/apps/*, where the shell draws none), that is ENFORCE: a renderer in objectui plus a real trail source. Say so on this card and it is re-graded. The ruling above reflects no measured pull today.Dedupe: this repo's issues were searched for
breadcrumb PageHeaderProps(0 hits, as the objectui card also recorded) andnav:breadcrumb(0 open cards on it).