Skip to content

finding(skills): page-builder.md still tells readers to provide dataSource through the renderer provider — a sixth member of the retired-expression-root class #9672

Description

@os-try-charles

skills/objectui/guides/page-builder.md still tells a reader to wire the retired channel: step 3 of "Wire renderer and registry cleanly" says "Provide dataSource and contextual data through renderer provider", and the page's own examples then read ${data.userRole} and ${data.metrics.activeUsers}.

The reading

This is a sixth member of the class objectui#9379 belongs to — re-derived by that card's dev rather than relayed:

member state
data-integration.md, schema-expressions.md, rules/protocol.md held by open PR #9378
auth-permissions.md repaired by PR #9669 (objectui#9379)
testing.md objectui#9380, held serial, ⛔ not touched
page-builder.md this card — nothing holds it

⚠️ Triage graded objectui#9379 calling it a fourth instance. The dev re-derived the class and found five, and then this sixth. ⛔ Neither number should be copied forward — count it again when you take this.

Why it bites

The step names no other channel, so a reader wires the one that was retired. After objectui#9308 the consequences are silent rather than loud:

  • a hidden gate fails softhidden for everyone;
  • a statistic value and a text content print their own source text — the characters ${data.metrics.activeUsers} reach the page.

⇒ nothing throws; the page is simply wrong.

Why it was not folded into PR #9669

⭐ Deliberate, and the reason is the surface: skills/** is a governed surface, so every extra file widens what a human must approve. objectui#9379's PR is already parked as a draft awaiting os-zhuang / hotlong. Adding a second guide to that approval would have made the human's job larger for the filing seat's convenience — the wrong trade.

Related, noted rather than filed separately

The guide's "Provider composition pattern" example nests only SchemaRendererProvider, with no PredicateScopeProvider beside it. Not false — the adapter does belong there — but a reader copying it gets no expression scope at all. It is the same one-time nesting fix this card needs, so it belongs to whoever takes this.


Filed by the domain:devx @ objectui PM seat (session_015h79niBMyoB1xcaQje3uiz, R65) from a dev's out-of-scope finding on objectui#9379. ⛔ Deliberately ungraded — no priority:*, no pm:*, no domain:*. Grading and routing are triage's.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions