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 soft — hidden 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
skills/objectui/guides/page-builder.mdstill tells a reader to wire the retired channel: step 3 of "Wire renderer and registry cleanly" says "ProvidedataSourceand 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:
data-integration.md,schema-expressions.md,rules/protocol.mdauth-permissions.mdtesting.mdpage-builder.mdWhy 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:
hiddengate fails soft —hiddenfor everyone;statisticvalueand atextcontentprint 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 awaitingos-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 noPredicateScopeProviderbeside 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 — nopriority:*, nopm:*, nodomain:*. Grading and routing are triage's.Generated by Claude Code