Skip to content

Commit 08378ac

Browse files
committed
test(dogfood): classify userActions row-CRUD predicates in the ADR-0058 expression ledger
The new data/object.zod.ts:visibleWhen / :disabledWhen surfaces (objectui#2614) tripped the conformance ratchet. Two rows, matching their actual fail policies: visibleWhen is fail-closed (a faulting predicate hides the row button), disabledWhen is fail-soft-log (a faulting predicate leaves it enabled; server hooks are the boundary). Both interpret on the canonical celEngine via objectui useRowPredicate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnCZhYpQjRyg2E44RHBiNE
1 parent c530876 commit 08378ac

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

packages/dogfood/test/expression-conformance.ledger.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,20 @@ export const EXPRESSION_SURFACE: ExprSurface[] = [
133133
'system/settings-manifest.zod.ts:visible',
134134
],
135135
},
136+
{
137+
id: 'cel-row-crud-visible',
138+
summary: 'built-in row Edit/Delete per-record visibility (userActions.{edit,delete}.visibleWhen, objectui#2614)',
139+
dialect: 'cel', mode: 'interpret', state: 'enforced', failPolicy: 'fail-closed',
140+
enforcement: 'console (objectui) RowActionMenu BuiltinRowActionItem + data-table DataTableBuiltinRowActionItem → useRowPredicate → @objectstack/formula celEngine (interpret); FALSE/fault hides the row button (UI gating only — write enforcement stays with permissions/hooks)',
141+
covers: ['data/object.zod.ts:visibleWhen'],
142+
},
143+
{
144+
id: 'cel-row-crud-disabled',
145+
summary: 'built-in row Edit/Delete per-record disabling (userActions.{edit,delete}.disabledWhen, objectui#2614)',
146+
dialect: 'cel', mode: 'interpret', state: 'enforced', failPolicy: 'fail-soft-log',
147+
enforcement: 'console (objectui) RowActionMenu BuiltinRowActionItem + data-table DataTableBuiltinRowActionItem → useRowPredicate → @objectstack/formula celEngine (interpret); TRUE renders the button disabled, a fault leaves it enabled (server hooks are the real boundary)',
148+
covers: ['data/object.zod.ts:disabledWhen'],
149+
},
136150
{
137151
id: 'cel-flow',
138152
summary: 'flow / sync / loader branching + filter predicates',

0 commit comments

Comments
 (0)