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
fix(formula): retire the js expression dialect (#3278) (#3291)
* chore: bump objectui to 2e7d7f0f7ee7
feat(evaluator): route CEL-dialect component/action predicates to the canonical engine (#2664)
objectui@2e7d7f0f7ee76b838f580e8a36b74f1309b204fc
* fix(formula): retire the `js` expression dialect (#3278)
`js` was declared in `ExpressionDialect` but never shipped — only a registry
stub with no engine and no author helper (`cel`/`F`/`P` → CEL, `tmpl` →
template, `cron` → cron; nothing ever emitted `js`). Remove it from the enum
(now `{cel, cron, template}`) per ADR-0049 (enforce-or-remove), and fix a
latent `hasDialect` bug that reported the stub as a real engine (a
false-positive `true` — the stub-detection checked for a `stub:` prefix that
no registered engine ever carries).
Procedural JS is unaffected: it remains the L2 `ScriptBody { language: 'js' }`
sandboxed, capability-gated surface — a separate enum, not an expression
dialect.
- spec: narrow `ExpressionDialect`; regenerate reference docs (js drops from
the ~50 Expression-holding declarations — the only generated churn)
- formula: drop the stub + dead stub-detection; `hasDialect` now reports only
registered real engines; registry test asserts `hasDialect('js') === false`
so the gate can actually go red
- ADR-0058: addendum + inline amendments recording the retire
No runtime behavior changes for any valid persisted artifact — no producer
ever emitted `dialect: 'js'` (open-core, cloud: 0).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
|**active**|`boolean`| optional | Is active (Deprecated: use status) |
111
111
|**runAs**|`Enum<'system' \| 'user'>`| optional | Execution identity for the run: system = elevated (bypasses RLS), user = the triggering user (RLS-respecting). A schedule-triggered run has no trigger user, so under user it runs UNSCOPED (elevated) — declare system to make that explicit. |
0 commit comments