Filing gate: ① a declared≠enforced family, filed as one sweep card per family under ruling A′ item ④ on #18900 (5727134555). This is triage's standing request 5857165909 on the seat post. Family display-annotations, seat verdict ENFORCE.
reach: the declared authoring door. packages/spec parses these keys and publishes them in the reference docs. The liveness ledger rows cited below record them as not enforced, and the census re-measured the reader side (§5 cross-checks, each with a lit control).
- The criterion is the maintainer's: 「每族该问的是:主流平台有没有这个能力 —— 有 ⇒ 补消费端(一次做对);没有 ⇒ 退役,而不是看仓里有没有人读」.
- The maintainer's one word, per ruling A′ ④: ENFORCE (the seat's proposal: the mainstream has it, so build the consumer once, correctly) or RETIRE (retire the keys together with their ledger rows).
- ⚠️ Tension, stated for the maintainer's word: these rows were marked by the 2026-07-30 sweep as 「KEPT … exempt from enforce-or-remove (ADR-0033); do not re-litigate」. Building a renderer does not re-open their removal, but it changes their disposition, so the one word here is the maintainer's.
Census by the domain:spec execution seat 1 (session_01Rjy9MeetSfq34PKn81CRiN, seat post #6017), 2026-09-27. Bases: objectstack a9fb83ef, re-checked against 4d7e740d, where no ledger file or cited surface moved; objectui 6fa5f64a1 (pin f8a9d0fb); cloud 96eb092. Ledger instrument: check-liveness.mts --json, whose byStatus equals the committed state-counts.md row for row. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim. The ranking is by value, user-visible risk × keys. This family's rank is 10 of 16. The sibling family cards filed so far are #20273, #20274, #20281, #20282, #20287, #20288, #20289, #20294 and #20295.
Capability: Human-readable label and description of a metadata item, shown in the builder or admin UI
| key |
ledger status |
ledger row |
what the ledger cites |
app.areas.description |
dead (verified 2026-08-01) |
packages/spec/liveness/app.json:183 |
note: display annotation no surface renders. Benign — docs-shaped, kept, not warned (hook.label precedent). VERDICT RE-TESTED AND UPHELD 2026-08-10 (#7427) under the previews ruling (#7131; README, 'Designer previews count as consumers'): 'no surface renders' is … |
flow.description |
dead |
packages/spec/liveness/flow.json:25 |
evidence: no reader either layer |
hook.label |
dead |
packages/spec/liveness/hook.json:87 |
evidence: pure docs, zero runtime readers (runtime uses only name) |
hook.description |
dead |
packages/spec/liveness/hook.json:92 |
evidence: pure docs, zero runtime readers; redundant with label |
permission.rowLevelSecurity.label |
dead (verified 2026-08-10) |
packages/spec/liveness/permission.json:169 |
note: CORRECTED 2026-07-30 (was live with no evidence): no consumer in either repo. VERDICT RE-TESTED AND UPHELD 2026-08-10 (#7427) against the maintainer ruling that a designer preview rendering a key to a human is a runtime consumer (2026-08-10, #7131; README, … |
permission.rowLevelSecurity.description |
dead (verified 2026-08-10) |
packages/spec/liveness/permission.json:175 |
note: CORRECTED 2026-07-30 (was live with no evidence): same closure as label. RE-TESTED AND UPHELD 2026-08-10 (#7427) with label, same measurement at objectui @e9ab52f9 — the permission preview counts RLS policies (PermissionPreview.tsx:164) and renders no fie… |
view.label |
dead (verified 2026-08-10) |
packages/spec/liveness/view.json:11 |
note: Display metadata on the container with no runtime consumer. VERDICT RE-TESTED AND UPHELD 2026-08-10 (#7427) under the maintainer ruling that a designer preview rendering a key to a human is a runtime consumer (2026-08-10, #7131; README, 'Designer previews c… |
Mainstream evidence:
- Salesforce Setup: flows show Description in the Flows list and Flow properties; sharing rules have Label + Description; App Manager shows app descriptions.
- ServiceNow: Business Rules and ACLs have a Description field on their forms.
- Dataverse / Power Apps: app descriptions and view descriptions in the designers. Sitemap-area descriptions are UNVERIFIED.
Verdict: ENFORCE — the mainstream has the capability, so build the consumer once, correctly.
Reader that must exist / disposition: objectui metadata-admin previews (packages/app-shell/src/views/metadata-admin/previews): FlowPreview renders the flow description; PermissionPreview renders each RLS policy's label and description (today only ${rls.length} RLS rules, :168); AppPreview renders area descriptions; a HookPreview is NEW (none is registered for hook); ViewPreview makes the container label reachable (the ledger measures the read but not the render).
User-visible risk (1): Display-only. The ledger calls these rows docs-shaped and benign. ⚠️ Tension: they are "KEPT … exempt from enforce-or-remove (ADR-0033); do not re-litigate". Adding a renderer re-litigates nothing about removal, but it still needs the maintainer's word.
Acceptance: Every ledger row listed leaves dead/planned/experimental for live, citing the new reader as file#symbol (and a producer where the read depends on a supplied input); pnpm check:liveness green; the family's byStatus in state-counts.md regenerated.
Lane: objectui (domain:ui) with a spec-seat parent for the ledger flips
File surface: objectui packages/app-shell/src/views/metadata-admin/previews/{FlowPreview,PermissionPreview,AppPreview,ViewPreview}.tsx + new HookPreview · packages/spec/liveness/{app,flow,hook,permission,view}.json
Dedupe: areas\.description \| flow\.description \| hook\.(label\|description) \| rowLevelSecurity\.(label\|description\|tags) \| view\.label\b \| HookPreview → 3 open hits. None carries a key of this family:
四轴:
Blocked-by: objectstack-ai/objectui#11199
Filing gate: ① a declared≠enforced family, filed as one sweep card per family under ruling A′ item ④ on #18900 (
5727134555). This is triage's standing request5857165909on the seat post. Familydisplay-annotations, seat verdict ENFORCE.reach:the declared authoring door.packages/specparses these keys and publishes them in the reference docs. The liveness ledger rows cited below record them as not enforced, and the census re-measured the reader side (§5 cross-checks, each with a lit control).Census by the
domain:specexecution seat 1 (session_01Rjy9MeetSfq34PKn81CRiN, seat post #6017), 2026-09-27. Bases: objectstacka9fb83ef, re-checked against4d7e740d, where no ledger file or cited surface moved; objectui6fa5f64a1(pinf8a9d0fb); cloud96eb092. Ledger instrument:check-liveness.mts --json, whosebyStatusequals the committedstate-counts.mdrow for row. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim. The ranking is by value, user-visible risk × keys. This family's rank is10of 16. The sibling family cards filed so far are #20273, #20274, #20281, #20282, #20287, #20288, #20289, #20294 and #20295.Capability: Human-readable label and description of a metadata item, shown in the builder or admin UI
app.areas.descriptionpackages/spec/liveness/app.json:183flow.descriptionpackages/spec/liveness/flow.json:25hook.labelpackages/spec/liveness/hook.json:87hook.descriptionpackages/spec/liveness/hook.json:92permission.rowLevelSecurity.labelpackages/spec/liveness/permission.json:169permission.rowLevelSecurity.descriptionpackages/spec/liveness/permission.json:175label, same measurement at objectui @e9ab52f9 — the permission preview counts RLS policies (PermissionPreview.tsx:164) and renders no fie…view.labelpackages/spec/liveness/view.json:11Mainstream evidence:
Verdict: ENFORCE — the mainstream has the capability, so build the consumer once, correctly.
Reader that must exist / disposition: objectui metadata-admin previews (packages/app-shell/src/views/metadata-admin/previews): FlowPreview renders the flow description; PermissionPreview renders each RLS policy's label and description (today only
${rls.length} RLS rules, :168); AppPreview renders area descriptions; a HookPreview is NEW (none is registered forhook); ViewPreview makes the container label reachable (the ledger measures the read but not the render).User-visible risk (1): Display-only. The ledger calls these rows docs-shaped and benign.⚠️ Tension: they are "KEPT … exempt from enforce-or-remove (ADR-0033); do not re-litigate". Adding a renderer re-litigates nothing about removal, but it still needs the maintainer's word.
Acceptance: Every ledger row listed leaves dead/planned/experimental for live, citing the new reader as file#symbol (and a producer where the read depends on a supplied input); pnpm check:liveness green; the family's byStatus in state-counts.md regenerated.
Lane: objectui (domain:ui) with a spec-seat parent for the ledger flips
File surface: objectui packages/app-shell/src/views/metadata-admin/previews/{FlowPreview,PermissionPreview,AppPreview,ViewPreview}.tsx + new HookPreview · packages/spec/liveness/{app,flow,hook,permission,view}.json
Dedupe:
areas\.description \| flow\.description \| hook\.(label\|description) \| rowLevelSecurity\.(label\|description\|tags) \| view\.label\b \| HookPreview→ 3 open hits. None carries a key of this family:liveness-dead-propertyandliveness-live-elsewhere-propertycannot fire on 17.3.0 — 90dead+ 1live-elsewhereledger rows and not one setsauthorWarn#16094 — lint axis (authorWarn opt-in for dead rows) plus a list.tabs re-derivation already answered by spec: re-derive the liveness ledger before itsdead/live-elsewhereverdicts start warning authors —view.jsonlist.tabsre-read plus a sampled audit of the 90deadrows (ledger half of #16094) #16362 (closed); not an enforce-or-remove carrierlabel: NamedListView (listViews entry) label, not the view container labellabel: NamedListView (listViews entry) label, not the view container label四轴:
job.label/job.description, TranslationPreview renderstranslation.label/.name#7131 预览即消费者的裁决,渲染之后这些行变为 live。ADR-0033 保留它们是为了给下一位读者(常是 AI)留意图,渲染出来正好兑现这个目的。Blocked-by: objectstack-ai/objectui#11199