You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Filed unassigned by the os-dev seat implementing #11576 (PR #12266). Observation-class; recording the residual, not claiming it.
What
Measuring #11576's residual turned up CONNECT_AGENT_PAGE (packages/mcp/src/connect-ui.ts) — a raw object literal reaching the kernel through manifest.register(CONNECT_AGENT_UI_BUNDLE) (packages/mcp/src/plugin.ts:505), authored with no : Page annotation.
PR #12266 annotates it, so export-shape discovery can now see it. That closes discoverability. It does not make the page audited: packages/mcp carries no canonical-expression-envelope gate, so nothing checks that its page serves the canonical { dialect, source } envelope at every ExpressionInputSchema position.
The two packages that ship raw-literal pages and DO carry that gate:
packages/mcp is now the third package shipping a page and the only one without the gate.
Why it is worth recording rather than fixing on the #11576 PR
CONNECT_AGENT_PAGE authors zero expression keys today, so a gate over it would pass trivially. That is precisely the argument #11480's own header makes for having one anyway:
They author ZERO expression keys today, which is exactly why the gate is worth having: the hazard is the NEXT predicate added to one of them, which would ship bare with every authoring-time signal green.
The page body is a single mcp:connect-agent widget plus a page:header, and both are live SDUI surfaces that can grow a visibleWhen at any time.
It was deliberately left out of PR #12266's scope: that card's declared file surface is the repo-wide gate, explicitly not the per-package canonical-envelope gates.
Possible closures
A. Give packages/mcp the thin gate, copying the cloud-connection shape (shared detector from @objectstack/lint, the @objectstack/lint devDependency, and the anchored vitest source alias). Mechanical; the pattern is two packages deep.
No recommendation recorded. Note that the "copy the gate into the next package" step is the same per-package residual #11576's option C names, so a third hand-copy is also evidence for hoisting the population discovery rather than repeating it.
Filed unassigned by the os-dev seat implementing #11576 (PR #12266). Observation-class; recording the residual, not claiming it.
What
Measuring #11576's residual turned up
CONNECT_AGENT_PAGE(packages/mcp/src/connect-ui.ts) — a raw object literal reaching the kernel throughmanifest.register(CONNECT_AGENT_UI_BUNDLE)(packages/mcp/src/plugin.ts:505), authored with no: Pageannotation.PR #12266 annotates it, so export-shape discovery can now see it. That closes discoverability. It does not make the page audited:
packages/mcpcarries no canonical-expression-envelope gate, so nothing checks that its page serves the canonical{ dialect, source }envelope at everyExpressionInputSchemaposition.The two packages that ship raw-literal pages and DO carry that gate:
packages/platform-objects/src/pages/canonical-expression-envelopes.test.ts(A page authored as a rawPageobject literal serves everyExpressionInputSchemakey BARE, and the console silently routes bare predicates to its legacy evaluator #11255)packages/cloud-connection/src/canonical-expression-envelopes.test.ts(A raw-literalPagealso ships from@objectstack/cloud-connection— the*.page.tssweep missed it, so #11255's gate does not reach it #11480)packages/mcpis now the third package shipping a page and the only one without the gate.Why it is worth recording rather than fixing on the #11576 PR
CONNECT_AGENT_PAGEauthors zero expression keys today, so a gate over it would pass trivially. That is precisely the argument #11480's own header makes for having one anyway:The page body is a single
mcp:connect-agentwidget plus apage:header, and both are live SDUI surfaces that can grow avisibleWhenat any time.It was deliberately left out of PR #12266's scope: that card's declared file surface is the repo-wide gate, explicitly not the per-package canonical-envelope gates.
Possible closures
packages/mcpthe thin gate, copying thecloud-connectionshape (shared detector from@objectstack/lint, the@objectstack/lintdevDependency, and the anchored vitest source alias). Mechanical; the pattern is two packages deep.check:page-declaration-shapeat least guarantees it stays discoverable, so whenever the per-package gate does arrive it will see this page.No recommendation recorded. Note that the "copy the gate into the next package" step is the same per-package residual #11576's option C names, so a third hand-copy is also evidence for hoisting the population discovery rather than repeating it.