Found while implementing #119 (which corrected the expression on this same line and deliberately left the key alone — different defect class, so it wanted its own card rather than a rider).
content/docs/build/interface/pages.mdx spells the page-component conditional-visibility key as visibility, in two places:
- line 81, in the Components code example:
visibility: "'sales_manager' in os.user.positions", - the component property table below it: a
visibility row described as "CEL visibility predicate"
ADR-0089 makes visibleWhen the single canonical name for that concept across every layer. On objectstack@origin/main, packages/spec/src/ui/page.zod.ts declares both, and the deprecated one says so in its own describe text:
visibleWhen: ExpressionInputSchema.optional().describe("Visibility predicate (CEL) — component rendered only when TRUE. ...")
/** @deprecated ADR-0089 — use `visibleWhen`. Accepted and normalized to `visibleWhen` at parse. */
visibility: ExpressionInputSchema.optional().describe('[DEPRECATED → `visibleWhen`] Visibility predicate (CEL). Normalized to `visibleWhen` at parse.')
packages/spec/src/shared/visibility.ts carries the same table: page component legacy visibility → canonical visibleWhen, folded once at the schema boundary.
Severity is lower than #119's, which is why it is filed separately
This is not an absent key — visibility still parses and is normalized, so an author copying the example gets working metadata. What they get is metadata written in the name the platform deprecated, from the only page in the corpus that still spells it that way.
A corpus grep for the three spellings across the English pages finds visibility: exactly once (this line); every other conditional-visibility mention already uses the canonical or the view-layer name:
content/docs/build/interface/views.mdx:233 visibleOn (view form sections/fields — correct for that layer)
content/docs/build/interface/views.mdx:256 visibleOn
content/docs/build/interface/pages.mdx:81 visibility ← this finding
content/docs/build/data/formulas.mdx:16 visibleWhen
content/docs/build/data/formulas.mdx:171 visibleWhen
content/docs/build/data/validation-rules.mdx:66 visibleWhen
So the fix is one page: rename the key in the example and the property-table row, and decide whether the row should still mention the deprecated alias as accepted.
Note the schema's own guidance map for pages already phrases the advice in canonical terms — "put visibleWhen on the COMPONENT inside a region" — so an author who reaches for the wrong key is told visibleWhen, then finds visibility in the published docs.
Verified against objectstack@origin/main (f6c71ea) and objectos@origin/main (599037c).
Found while implementing #119 (which corrected the expression on this same line and deliberately left the key alone — different defect class, so it wanted its own card rather than a rider).
content/docs/build/interface/pages.mdxspells the page-component conditional-visibility key asvisibility, in two places:visibility: "'sales_manager' in os.user.positions",visibilityrow described as "CEL visibility predicate"ADR-0089 makes
visibleWhenthe single canonical name for that concept across every layer. Onobjectstack@origin/main,packages/spec/src/ui/page.zod.tsdeclares both, and the deprecated one says so in its own describe text:packages/spec/src/shared/visibility.tscarries the same table: page component legacyvisibility→ canonicalvisibleWhen, folded once at the schema boundary.Severity is lower than #119's, which is why it is filed separately
This is not an absent key —
visibilitystill parses and is normalized, so an author copying the example gets working metadata. What they get is metadata written in the name the platform deprecated, from the only page in the corpus that still spells it that way.A corpus grep for the three spellings across the English pages finds
visibility:exactly once (this line); every other conditional-visibility mention already uses the canonical or the view-layer name:So the fix is one page: rename the key in the example and the property-table row, and decide whether the row should still mention the deprecated alias as accepted.
Note the schema's own
guidancemap for pages already phrases the advice in canonical terms — "putvisibleWhenon the COMPONENT inside a region" — so an author who reaches for the wrong key is toldvisibleWhen, then findsvisibilityin the published docs.Verified against
objectstack@origin/main(f6c71ea) andobjectos@origin/main(599037c).