Skip to content

Make ElemOf/KeyOf value-backed with model validation - #1519

Merged
TristonianJones merged 1 commit into
cel-expr:masterfrom
TristonianJones:cost-elem-key
Sep 29, 2026
Merged

TristonianJones merged 1 commit into
cel-expr:masterfrom
TristonianJones:cost-elem-key

Conversation

@TristonianJones

Copy link
Copy Markdown
Collaborator

ElemOf and KeyOf previously reported placeholder sizes at runtime tracking time (0 and 1), so a model whose cost depends on what a container holds was charged as if it held nothing.

TrackContext gains ArgVal, TargetVal, and ResultVal, and the projections inspect the runtime values: ElemOf and KeyOf report the largest element or key, matching the Max the estimate reports, and ElemTotal reports the exact combined element size.

Because projections are only defined over expressions that denote a value, OverloadModel.Validate rejects projections applied to computed quantities at cel.CostModel registration time.

Also updates SizeEstimate.Multiply, minExpr, maxExpr, and rangedExpr to carry the union of their operands' Key and Elem metadata, and clears Key metadata on listExpr so a list derived from a map operand does not retain the map's Key.

…tor metadata

ElemOf and KeyOf previously reported placeholder sizes at runtime tracking time
(0 and 1), so a model whose cost depends on what a container holds was charged
as if it held nothing. TrackContext gains ArgVal, TargetVal, and ResultVal, and
the projections inspect the runtime values: ElemOf and KeyOf report the largest
element or key, matching the Max the estimate reports, and ElemTotal reports the
exact combined element size.

Because projections are only defined over expressions that denote a value,
OverloadModel.Validate rejects projections applied to computed quantities at
cel.CostModel registration time.

Also updates SizeEstimate.Multiply, minExpr, maxExpr, and rangedExpr to carry
the union of their operands' Key and Elem metadata, and clears Key metadata on
listExpr so a list derived from a map operand does not retain the map's Key.
@TristonianJones
TristonianJones merged commit 12ea74f into cel-expr:master Sep 29, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants