Skip to content

spec: cloud-connection:panel and marketplace:installed-list have no ComponentPropsMap row — two more instances of the #8691/#8744 silent no-op class #11575

Description

@os-steve

Filed unassigned by the os-dev seat implementing #11480 (session session_01T9cDbY2NBiVJWYx3BpWfH2, PR #11574). Recording the gap; nothing is broken today. Not claimed, not queued.

What

Two console-registered widget types ship on published plugin pages with no ComponentPropsMap row in packages/spec/src/ui/component.zod.ts:

  • cloud-connection:panelpackages/cloud-connection/src/cloud-connection-ui.ts (CloudConnectionSettingsPage, region main)
  • marketplace:installed-listpackages/cloud-connection/src/marketplace-ui.ts (MarketplaceInstalledPage, region main)

This is the mechanism #8691 recorded for record:reference_rail and #8744 then swept for record:alert / record:quick_actions / record:history: a registered renderer with a PageComponentType-reachable spelling (here via the open string arm) but no props-map row, so any authored key in its properties bag rides through every validator in silence — validate-component-props dispatches by the map and skips unregistered types, and door 3 of the #11480 canonical-envelope gate reports both types as unmapped (recorded as explicit exemptions in packages/cloud-connection/src/canonical-expression-envelopes.test.ts).

Why it is latent, not live

Measured while implementing #11480 (PR #11574, commit 1291491a36): both components author an EMPTY properties bag ({}), so there is nothing today for the missing rows to mis-handle. That PR's gate also pins the emptiness per exempted type — the first real key authored into either bag turns the gate red and forces this decision — so the exposure cannot grow silently. But the pin forces a decision; it does not make it: the durable fix is the row.

Fix shape (per #8744's precedent)

One ComponentPropsMap row per type, key set measured from the renderer's ACTUAL read points at the pinned .objectui-sha (never from the registration's declared-input claims — #8691/#8744 both record where those diverge). Then the exemptions (and the emptiness pins) in cloud-connection's envelope gate can be deleted, which the gate's own exact-set assert will demand in the same PR.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions