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): give an over-budget expression a size prescription, not the dialect trailer (#7073) (#7209)
`validateExpression` appended the same dialect trailer — "`predicate`s are bare
CEL (e.g. `record.rating >= 4`)" — to every `celEngine.compile` refusal, byte for
byte, including a `bounds` refusal. For a syntactically perfect, over-budget CEL
(an 80-clause conjunction past `maxAstNodes` 256) that sentence sends the author
to change the one thing that was never wrong; an AI author, which obeys the last
sentence it is handed, rewrites the dialect and regresses.
The refusal is unchanged. Only the prescription is now class-aware: on the
engine's own `kind: 'bounds'` verdict the trailer becomes a size prescription
naming the exceeded bound and its value (read from `parseCelToAstWithReason`,
without `admitOverLimit` so no unbounded parse or measurement is paid for), with
shrink / denormalise remedies and a caveat on splitting. A genuine dialect or
syntax fault keeps the old trailer verbatim, and the #1491 braces hint is
untouched — both directions pinned.
Fixed once at the producer, so all ~10 ADR-0032 expression slots benefit.
Also completes, text-only, `cel-pushdown-limits.ts`'s "nothing else needs to move
at GA": a third lint gate (`validateStackExpressions`) reaches the same
`sharingRules[].condition` and is mode-agnostic, so lint is stricter than the
runtime during the rc grace window — benign, tightening-direction, self-healing
at GA. No behaviour change there.
Claude-Session: https://claude.ai/code/session_016R9de1FqP7NvwKvqXi92Gh
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments