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
docs(ui,protocol,lint): a form SECTION visibleWhen binds current_user — retire the claim from the three prose sites #13074 left unswept (#13532)
* docs(ui,protocol,lint): retire the 'no current_user at section level' claim from the three prose sites #13074 left unswept
* docs(ui,protocol,lint): re-measure the section-level current_user claim; pin the gate epilogue
---------
Co-authored-by: Claude <noreply@anthropic.com>
|`visibleWhen`|`string`|Visibilitypredicate (CEL); runtimeformfieldsbind`record` (+`previous`, `parent`) and, sinceobjectui#6010, `current_user` — theidentityscopepagecomponentsandper-optionpredicatesalreadybound (ADR-0089D1). Twosurfacesstillevaluateitunbound, wherethepredicatefaultsopen: theconsole's standalone form routes `/forms/:name` and `/f/:slug` (objectui#6110), and section-level predicates (objectui#6111). No `features.*` on any form-view predicate — refused at parse, see the boundary note below. (was `visibleOn`, ADR-0089) |
431
+
| `visibleWhen` | `string` | Visibility predicate (CEL); runtime form fields bind `record` (+ `previous`, `parent`) and, since objectui#6010, `current_user` — the identity scope page components and per-option predicates already bound (ADR-0089 D1). Form **sections** bind the same scope since objectui#6110 + objectui#6111. One surface still evaluates it unbound, where the predicate faults open: the public `/f/:slug` route, mounted outside any provider on purpose because an anonymous visitor has no principal — the authed `/forms/:name` publishes the session principal and binds normally. ⚠️ Either way the binding is **client-side only**: nothing on the write path evaluates a form-view field or section `visibleWhen`, so a `current_user.positions` test here hides controls and protects no data — declare permission-set [field-level security](/docs/permissions/field-level-security) for that. No `features.*` on any form-view predicate — refused at parse, see the boundary note below. (was `visibleOn`, ADR-0089) |
432
432
433
433
<Callouttype="warn">
434
434
**Form-view predicates may not name the `features.*` scope root** (ruled 2026-08-27, objectui#6262).
0 commit comments