Surfaced by the os-dev delivering slice 3 of objectui#7804 (PR objectui#9565) and filed by the dispatching domain:ui seat (session_01KSd9P5u2Mf4p8g4n4SD4Fx, os-justin) — dev seats do not file on this lane. ⛔ Not graded and ⛔ not routed by me; domain:*, type and priority:* are the triage seat's sole production.
The defect
scripts/check-handler-key-read-sites.mjs keys a registration by its raw type string. A renderer registered under a namespaced-only alias — { namespace: 'view', skipFallback: true } — is therefore judged against the arm of the bare key, which is precisely the key skipFallback exists to stop it claiming.
⇒ the census attributes a renderer's handler reads to a different component's schema, and the ledger rows it produces cannot be drained without publishing keys on a schema that should never carry them.
Measured at source by this seat on origin/main, ⛔ not taken from the report
packages/plugin-list/src/index.tsx:102-104:
ComponentRegistry.register('list', ListViewRenderer, {
namespace: 'view',
skipFallback: true,
and its own comment, :95-100, states the reason in the repo's own words:
skipFallback is required: the bare list key belongs to the bullet/numbered list DISPLAY primitive (ui:list in @object-ui/components) … Without skipFallback this alias clobbered the bare key, so a hand-authored bullet list resolved to the data-bound ListView (which requires objectName) … Object list VIEWS are rendered via type: 'list-view', never the bare list lookup.
The ledger rows this produces, counted from KNOWN_UNDECLARED_READS (lit control: the constant is present, 7 hits in the file):
| rows |
judged against |
the alias that produced them |
| 5 |
ListSchema — the bullet/numbered list display primitive |
plugin-list's view:list |
| 4 |
FormSchema |
plugin-form's view:form |
| 1 |
GridSchema.onNavigate |
plugin-grid's view:grid |
⇒ 10 rows, all the same shape. The five list::ListSchema.* rows name onAddRecord, onBulkAction, onDensityChange, onNavigate, onPageSizeChange — handlers of a data-bound list view, attributed to a bullet list.
Why it cannot simply be drained
Declaring those five on ListSchema would publish a row-density handler and a bulk-action handler on a bullet/numbered list — authorable, documented, and meaningless. The rows are not wrong because nobody got round to them; they are wrong because the question the census asked was addressed to the wrong schema.
The consequence that makes this actionable now
objectui#7804 is a burn-down, and after its slice 3 lands, 10 of the 15 remaining rows are this shape. The next slice of that card reads those rows and ⛔ cannot drain them without answering this first. ⇒ the successor is named and is already blocked.
⚠️ Scope note, so the fix is not over-reached
This card asks for the census to key a registration the way the registry resolves it (respecting namespace / skipFallback), ⛔ not for any schema to gain or lose keys, and ⛔ not for skipFallback's own semantics to change — those are correct and load-bearing, and the comment above records what broke when the alias did claim the bare key.
Dedup words
skipFallback · KNOWN_UNDECLARED_READS · namespaced alias bare type key · check-handler-key-read-sites · view:list ListSchema rows
⛔ Not deduped by me (filer attaches the words, triage runs them). ⚠️ Search on this board has produced false zeros before — any zero needs a lit control, and dedup must include CLOSED cards.
Provenance
out_of_scope_findings of the objectui#7804 slice-3 dev report (comment 5682933326), class (a). Every reading above was re-derived at source by this seat before filing.
Generated by Claude Code
Surfaced by the
os-devdelivering slice 3 of objectui#7804 (PR objectui#9565) and filed by the dispatchingdomain:uiseat (session_01KSd9P5u2Mf4p8g4n4SD4Fx,os-justin) — dev seats do not file on this lane. ⛔ Not graded and ⛔ not routed by me;domain:*,typeandpriority:*are the triage seat's sole production.The defect
scripts/check-handler-key-read-sites.mjskeys a registration by its raw type string. A renderer registered under a namespaced-only alias —{ namespace: 'view', skipFallback: true }— is therefore judged against the arm of the bare key, which is precisely the keyskipFallbackexists to stop it claiming.⇒ the census attributes a renderer's handler reads to a different component's schema, and the ledger rows it produces cannot be drained without publishing keys on a schema that should never carry them.
Measured at source by this seat on
origin/main, ⛔ not taken from the reportpackages/plugin-list/src/index.tsx:102-104:and its own comment,
:95-100, states the reason in the repo's own words:The ledger rows this produces, counted from
KNOWN_UNDECLARED_READS(lit control: the constant is present, 7 hits in the file):ListSchema— the bullet/numbered list display primitiveview:listFormSchemaview:formGridSchema.onNavigateview:grid⇒ 10 rows, all the same shape. The five
list::ListSchema.*rows nameonAddRecord,onBulkAction,onDensityChange,onNavigate,onPageSizeChange— handlers of a data-bound list view, attributed to a bullet list.Why it cannot simply be drained
Declaring those five on
ListSchemawould publish a row-density handler and a bulk-action handler on a bullet/numbered list — authorable, documented, and meaningless. The rows are not wrong because nobody got round to them; they are wrong because the question the census asked was addressed to the wrong schema.The consequence that makes this actionable now
objectui#7804 is a burn-down, and after its slice 3 lands, 10 of the 15 remaining rows are this shape. The next slice of that card reads those rows and ⛔ cannot drain them without answering this first. ⇒ the successor is named and is already blocked.
This card asks for the census to key a registration the way the registry resolves it (respecting
namespace/skipFallback), ⛔ not for any schema to gain or lose keys, and ⛔ not forskipFallback's own semantics to change — those are correct and load-bearing, and the comment above records what broke when the alias did claim the bare key.Dedup words
skipFallback·KNOWN_UNDECLARED_READS·namespaced alias bare type key·check-handler-key-read-sites·view:list ListSchema rows⛔ Not deduped by me (filer attaches the words, triage runs them).⚠️ Search on this board has produced false zeros before — any zero needs a lit control, and dedup must include CLOSED cards.
Provenance
out_of_scope_findingsof the objectui#7804 slice-3 dev report (comment5682933326), class (a). Every reading above was re-derived at source by this seat before filing.Generated by Claude Code