)]}'
{
  "log": [
    {
      "commit": "110016cbe68bd7b66089833b05f74b11530f57ff",
      "tree": "f0319626b3258e7c0225df22c41e4fc076e81cd3",
      "parents": [
        "6c34e246a22c635a2f29690597882e06de67f8fa"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Aug 24 18:39:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 18:39:44 2026"
      },
      "message": "Switch to direct observation of costs on a per-operation basis (#1430)"
    },
    {
      "commit": "6c34e246a22c635a2f29690597882e06de67f8fa",
      "tree": "1372fbd5c19e8ad996a560e8a15a9ef0bc7632d2",
      "parents": [
        "1ad169dd8cf724167028a63a9b9c304d1feabdd6"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Aug 24 18:38:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 18:38:55 2026"
      },
      "message": "Improve size calculation and memoization (#1431)"
    },
    {
      "commit": "1ad169dd8cf724167028a63a9b9c304d1feabdd6",
      "tree": "5ccf0aef552376ad8406d726bb338262895b6399",
      "parents": [
        "d9ae4c8d179ed2ebb10ee52254a7bcf9662e03fc"
      ],
      "author": {
        "name": "Nilesh Patil",
        "email": "128893479+nileshpatil6@users.noreply.github.com",
        "time": "Mon Aug 24 17:00:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 17:00:15 2026"
      },
      "message": "parser: parenthesize unary operands that would reparse differently (#1434)\n\n* parser: parenthesize unary operands that would reparse differently\n\nvisitCallUnary decides whether to parenthesize its operand with\nisComplexOperator, which only returns true for a call with two or more\narguments. It was added by #262 to fix `-(1 + 2)`, and never covered an\noperand that is itself a unary call or a negative numeric literal.\n\nTwo grammar rules make that unsound. `unary` parses a run of leading \u0027-\u0027\nor \u0027!\u0027 tokens as one expression and drops the operator when the count is\neven, and `literal` binds a leading \u0027-\u0027 into an int or double constant.\nSo the unparser emits text that either means something else or does not\nparse:\n\n    !(!a)                     -\u003e !!a                     reparses as a\n    -(-a)                     -\u003e --a                     reparses as a\n    -(-(-a))                  -\u003e ---a                    reparses as -a\n    -(!a)                     -\u003e -!a                     syntax error\n    !(-a)                     -\u003e !-a                     syntax error\n    -(-1)                     -\u003e --1                     reparses as 1\n    -(-9223372036854775808)   -\u003e --9223372036854775808    invalid int literal\n\nSince AstToString is the public way to render a checked AST back to\nsource, round-tripping changes evaluation: `-(-x)` with x \u003d MinInt64 must\nraise integer overflow but returns -9223372036854775808 afterwards, and\n`!(!a)` on a non-bool must raise no such overload but returns a value.\n\nParenthesize an operand that is a single-argument logical-not or negate\ncall, or a negative int or double literal. math.Signbit is used for\ndoubles so negative zero is covered too.\n\n* parser: simplify the unary operand check to the function name\n\nThe member-function and argument-count guards cannot change the outcome,\nsince the logical-not and negate operator names are unary by definition."
    },
    {
      "commit": "d9ae4c8d179ed2ebb10ee52254a7bcf9662e03fc",
      "tree": "3c24f0de2b74b85af86ae154a4f4ab3d0406819c",
      "parents": [
        "077d3f4de5866604b0526ab845e2cf89503dbd17"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Fri Aug 21 21:55:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 21:55:00 2026"
      },
      "message": "Add SLSA + Sigstore signing of build artifacts (#1426)\n\n* Add SLSA + Sigstore signing of build artifacts\n* Fixes for Zizmor findings\n* Update repo badges"
    },
    {
      "commit": "077d3f4de5866604b0526ab845e2cf89503dbd17",
      "tree": "c2ca4d3c06fb375f0c6eb4688b19f67139544293",
      "parents": [
        "7bd18ac7d05f4d5064684eb40dcf7892896070ca"
      ],
      "author": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Fri Aug 21 21:34:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 21:34:19 2026"
      },
      "message": "Add FAQ entry explaining pkg.go.dev module paths (#1432)"
    },
    {
      "commit": "7bd18ac7d05f4d5064684eb40dcf7892896070ca",
      "tree": "edadb7ea48df3fd31c1e2617f5003d769ce68956",
      "parents": [
        "ca021874c35ecdce89fcdf63f00645be4182175d",
        "a774979fb6c9a30653a89b031d1d1619d382eaf0"
      ],
      "author": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Fri Aug 21 18:03:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 18:03:54 2026"
      },
      "message": "Merge pull request #1427 from cel-expr/pratt-parser\n\n[Pratt parser] Port Pratt parser from cel/cpp"
    },
    {
      "commit": "a774979fb6c9a30653a89b031d1d1619d382eaf0",
      "tree": "3912bde178803bd652bd557a804f2dc9250c4097",
      "parents": [
        "8fa278501fad79ac6f8197f2c681d05f3fb6bb50"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 22:09:14 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 22:09:14 2026"
      },
      "message": "[Pratt parser] Rename parseBalancedLogicalChain to parseLogicalChain\n"
    },
    {
      "commit": "8fa278501fad79ac6f8197f2c681d05f3fb6bb50",
      "tree": "9c7dfb323b7b3526b23ea5d08f1b9cef5ae8d911",
      "parents": [
        "b6b2bd723ed389cd556976ed18cff6cab957c3b8"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 22:00:28 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 22:00:28 2026"
      },
      "message": "[Pratt parser] Test multiple errors on disabled ident escape syntax\n"
    },
    {
      "commit": "b6b2bd723ed389cd556976ed18cff6cab957c3b8",
      "tree": "d8cfd3da39ef9cf7ff09d383a7ab871779042e04",
      "parents": [
        "52a1a2d4c0c315b19df967ac6a638f870fd92229"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 18:06:49 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 18:06:49 2026"
      },
      "message": "[Pratt parser] Inline newWorker into Parse\n"
    },
    {
      "commit": "52a1a2d4c0c315b19df967ac6a638f870fd92229",
      "tree": "6a432974a68c3aea2bf2b1ed304a2ab80bfb6367",
      "parents": [
        "bdd1d2464ef531d15812023a6fe36312b26f962c"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 18:03:32 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 18:03:32 2026"
      },
      "message": "[Pratt parser] Check expression size limit before allocating worker\n"
    },
    {
      "commit": "bdd1d2464ef531d15812023a6fe36312b26f962c",
      "tree": "403a7f900720ba59562c22580ce79806d4443c7a",
      "parents": [
        "f2039bc647bca407d882d90436fc8b91bab1ae62"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 19:56:37 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Thu Aug 20 01:19:28 2026"
      },
      "message": "[Pratt parser] Port Pratt parser from cel/cpp\n"
    },
    {
      "commit": "ca021874c35ecdce89fcdf63f00645be4182175d",
      "tree": "67f15cfa8ecd06c0512631a962cb5b9e17f85351",
      "parents": [
        "f2039bc647bca407d882d90436fc8b91bab1ae62"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Wed Aug 19 21:07:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 21:07:34 2026"
      },
      "message": "mem-track: Add memory tracker, scale-down string and byte sizes (#1418)\n\n* Scale sizes for strings and bytes, add memory tracker\n\n* resolve merge conflicts and update memory tracking guidelines\n\n* Update package imports"
    },
    {
      "commit": "f2039bc647bca407d882d90436fc8b91bab1ae62",
      "tree": "943937e51fb53e97838f8eb353a1c751322ed089",
      "parents": [
        "4715f2fa377b704358bfd2ee77be28168a4a594e",
        "78514224a5fd1d4a43e92c1c74567a2c8d9ac6a5"
      ],
      "author": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 17:33:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 17:33:13 2026"
      },
      "message": "Merge pull request #1413 from cel-expr/vanity-cel-go-import\n\nSwitch module and import paths to cel.dev/cel-go"
    },
    {
      "commit": "78514224a5fd1d4a43e92c1c74567a2c8d9ac6a5",
      "tree": "943937e51fb53e97838f8eb353a1c751322ed089",
      "parents": [
        "aadbbf98d7e37886a6bde42432ab9846a7fc2a29"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 16:55:06 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 16:55:06 2026"
      },
      "message": "Revert \"Skip policy conformance tests when run outside Bazel\"\n\nThis reverts commit aadbbf98d7e37886a6bde42432ab9846a7fc2a29.\n"
    },
    {
      "commit": "aadbbf98d7e37886a6bde42432ab9846a7fc2a29",
      "tree": "8fdb8cb50e20b09a02bbee73edad6b1c27d601f0",
      "parents": [
        "2628ca84d83f5fc2ebd2c964a2ddd0bd4f46d846"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 16:48:43 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 16:48:43 2026"
      },
      "message": "Skip policy conformance tests when run outside Bazel\n"
    },
    {
      "commit": "2628ca84d83f5fc2ebd2c964a2ddd0bd4f46d846",
      "tree": "943937e51fb53e97838f8eb353a1c751322ed089",
      "parents": [
        "fc6a53ca6468b21b36f13856c8657a7c22c601a4",
        "4715f2fa377b704358bfd2ee77be28168a4a594e"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 16:35:05 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 16:35:05 2026"
      },
      "message": "Merge branch \u0027master\u0027 into vanity-cel-go-import\n"
    },
    {
      "commit": "4715f2fa377b704358bfd2ee77be28168a4a594e",
      "tree": "9d73ca28ea2b5f2419dd1731396ff2579878356d",
      "parents": [
        "f513cf83d763c2964bd2f1fe0bbe2f0cdc00f4c6",
        "b02bd0a2ced3b32f53c2483394398869d554be04"
      ],
      "author": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Wed Aug 19 00:34:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 00:34:06 2026"
      },
      "message": "Merge pull request #1422 from cel-expr/parser-benchmarks\n\nAdd parser benchmarks"
    },
    {
      "commit": "b02bd0a2ced3b32f53c2483394398869d554be04",
      "tree": "2b55c026e83d23210aa2afa2268dca4f0ac5251d",
      "parents": [
        "c9ce5a25920d5d72632b57b8ff533f3fca5d3aee"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Tue Aug 18 22:28:52 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Tue Aug 18 22:33:42 2026"
      },
      "message": "Fold by-category benchmark tests into parser_test.go\n"
    },
    {
      "commit": "f513cf83d763c2964bd2f1fe0bbe2f0cdc00f4c6",
      "tree": "4549c9f489cef1e76e76723f5d3dd0613061c3c0",
      "parents": [
        "49f20a19b060a176819b7ed0561cc74154458c64"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Tue Aug 18 21:39:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 21:39:05 2026"
      },
      "message": "Fix data race for aggregate size computation (#1423)\n\nThe aggregate size memoization on immutable lists and maps is now accessed\natomically since values may be shared across concurrent evaluations, and\nsizes from computations aborted at the calculator\u0027s depth or traversal\nlimits are no longer memoized, as they depend on where in the traversal the\nvalue was encountered. EstimateAggregateSize additionally distinguishes\ngenuine uint32 saturation from computations aborted at the limits."
    },
    {
      "commit": "49f20a19b060a176819b7ed0561cc74154458c64",
      "tree": "6a728adb9029a78fecc43e7baa23eba9873a9419",
      "parents": [
        "425a3e9e0eb8ac7eef6f06d4f3805e369a5ca602"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Aug 17 23:36:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 23:36:48 2026"
      },
      "message": "Consolidate saturating cost arithmetic into common/cost (#1420)\n\nThe same saturating arithmetic existed in four places under three names:\n`safeAdd`/`safeMul` in `interpreter`, byte-identical copies in `ext`, and\n`addUint64NoOverflow`/`multiplyUint64NoOverflow`/`multiplyByCostFactor` in\n`checker`. Costs and sizes are uint64 values where math.MaxUint64 doubles as\n\"unbounded\", so every operation on them has to saturate rather than wrap;\nhaving one implementation of that per package made it easy for the domains to\ndrift.\n\n`common/cost` now owns the single exported set: SafeAdd, SafeMultiply,\nSafeMultiplyByFactor, and SafeCeil. The package depends on nothing but `math`,\nso `checker`, `interpreter`, and `ext` can all reach it without cycles.\n\nBehavioral notes, all in extreme-value territory:\n\n- `CostTracker.costCall` computed the `matches` and `contains` products with an\n  unguarded `*` while `safeMul` sat unused in the same file. Those products now\n  saturate instead of wrapping, which matters as soon as an operand size can\n  itself be saturated.\n- Inline `uint64(math.Ceil(float64(x)*factor))` conversions became\n  SafeMultiplyByFactor, which is identical in range and returns MaxUint64\n  rather than an implementation-defined value out of range.\n- Truncating conversions (`uint64(float64(size)*costFactor)`) were left alone\n  so that no in-range cost changes value.\n\nLocals named `cost` in the touched functions were renamed to `total`/`estimate`\nso the package identifier is not shadowed."
    },
    {
      "commit": "425a3e9e0eb8ac7eef6f06d4f3805e369a5ca602",
      "tree": "e686f55e9d678451eecec94e5ccb412b4f9cb384",
      "parents": [
        "9f82d0778528cd729bfb0906ff6b16ed0a5a48c5"
      ],
      "author": {
        "name": "l46kok",
        "email": "sokwhan@google.com",
        "time": "Mon Aug 17 22:30:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 22:30:00 2026"
      },
      "message": "Fix agent_tool_execution_governance policy example to match cel-policy conformance test (#1424)"
    },
    {
      "commit": "9f82d0778528cd729bfb0906ff6b16ed0a5a48c5",
      "tree": "3c00244bc183664854756fb0cb2f88b1f598a57f",
      "parents": [
        "f38faa2d9a3c1b0dad08d371466be4271391217e"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Aug 17 20:55:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 20:55:24 2026"
      },
      "message": "Aggregate semantics in Policy Compiler (#1408)\n\n* Aggregate policy evaluation semantics support\n* Additional aggregation tests showcasing multiple aggregation rules with nested match behavior\n* Replace \u0027emit\u0027 with \u0027output\u0027 to conform to spec update\n* Updates to the composition base step and aggregation"
    },
    {
      "commit": "f38faa2d9a3c1b0dad08d371466be4271391217e",
      "tree": "1f0ee501583904ac1b70749c98896fed0978056c",
      "parents": [
        "4622a98087fcf80f1f152d04154970cf8d6160d0"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Aug 17 20:55:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 20:55:02 2026"
      },
      "message": "Scale sizes for strings and bytes (#1421)\n\nString and bytes values now count as one element per ten bytes, rounding up\nwith a minimum of one element, configurable via SizeCalculatorStringUnitLength.\nSizes are measured in bytes rather than characters so that sizing large values\nis O(1) rather than a full UTF-8 scan per observation; byte length is never\nsmaller than the character count, so byte-based sizing is conservative for\nlimit enforcement."
    },
    {
      "commit": "c9ce5a25920d5d72632b57b8ff533f3fca5d3aee",
      "tree": "c4ed99bd0d1257f9e5f476e05078da1e2c32e545",
      "parents": [
        "f74ac421377cd73f45ac10437a308b22e8e174a7"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Mon Aug 17 20:27:34 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Mon Aug 17 20:30:40 2026"
      },
      "message": "Add parser benchmarks\n"
    },
    {
      "commit": "4622a98087fcf80f1f152d04154970cf8d6160d0",
      "tree": "f47170f87d54bafbfe5e17cf4518872ed1b3c348",
      "parents": [
        "76c0a6d4825573bd4e906f85258f5a180fb523a9"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Aug 17 19:32:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 19:32:56 2026"
      },
      "message": "HMAC verify / compute library (#1416)"
    },
    {
      "commit": "76c0a6d4825573bd4e906f85258f5a180fb523a9",
      "tree": "8d965be8dab9ae9716a22c32d8d577c10b34f65c",
      "parents": [
        "41262f37127a411e485d49cc94a7ffe691213450"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Aug 17 17:51:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 17:51:40 2026"
      },
      "message": "Report every evaluation step to every observer (#1419)\n\nCost tracking silently reported a cost of zero whenever state tracking was also\nenabled:\n\n\tcel.CostTracking(nil)                                 -\u003e 5\n\tcel.CostTracking(nil) + cel.EvalOptions(OptTrackState)   -\u003e 0\n\tcel.CostTracking(nil) + cel.EvalOptions(OptExhaustiveEval) -\u003e 0\n\nEach observer installed its own decorator, and decObserveEval returns a node\nwhich is already wrapped in a watcher untouched. Since the planner applies\ndecorators in order, the state observer\u0027s decorator wrapped each node first and\nthe cost observer\u0027s decorator then found a watcher and left it alone, so the\ncost observer\u0027s per-node callback was never installed. ObservableInterpretable\nstill ran the tracker\u0027s InitState and GetState, so evaluation produced a\nCostTracker reporting a cost of zero rather than an error or a nil result --\nincluding for programs configured with a cost limit, which then could not be\nexceeded.\n\nObservers now register only as observers, and the planner installs a single\ndecorator which reports each observation to all of them."
    },
    {
      "commit": "41262f37127a411e485d49cc94a7ffe691213450",
      "tree": "d49737d81dcca08a0c166389819c564de97c5f4a",
      "parents": [
        "ef240479443ae9bbf89edd93430b1be2173350a7"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Aug 17 17:11:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 17:11:33 2026"
      },
      "message": "Fix native type panic during field traversal of nil-valued structs (#1417)"
    },
    {
      "commit": "ef240479443ae9bbf89edd93430b1be2173350a7",
      "tree": "c1191d6ebdec0e2039680aaf13ca7e544a4b5c85",
      "parents": [
        "931e003859104219ead50a27d3c290e008746709"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Sat Aug 15 01:57:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 15 01:57:44 2026"
      },
      "message": "Support aggregate size computations over list, maps, and structs (#1404)\n\n* Support aggregate size computations over list, maps, and structs\n* Depth and traversal limits for aggregate size calculations\n* Enhancements to use Foldable and reduce duplication in native size computations"
    },
    {
      "commit": "931e003859104219ead50a27d3c290e008746709",
      "tree": "e915441e4941e165222b44aa0c12af671c174758",
      "parents": [
        "f74ac421377cd73f45ac10437a308b22e8e174a7"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Sat Aug 15 01:11:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 15 01:11:11 2026"
      },
      "message": "JWT data types with Parse and claim helpers (#1415)\n\n* Add Go-native JSON type support into NativeToValue\n* JWT object rep and helpers for inspecting claims\n* JWT data types, parse, and claim helpers"
    },
    {
      "commit": "f74ac421377cd73f45ac10437a308b22e8e174a7",
      "tree": "dc3b1484a58125f358ef1eca953b1b9b82d5c989",
      "parents": [
        "b6027c466d6a21efd89811256b4cea0070b02ac3"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Fri Aug 14 23:50:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 23:50:42 2026"
      },
      "message": "Add Go-native JSON type support into NativeToValue (#1402)"
    },
    {
      "commit": "b6027c466d6a21efd89811256b4cea0070b02ac3",
      "tree": "6e802244968ec8e8383335744e839d9142071f60",
      "parents": [
        "a3027a4d358fcba46cc8420411eafeeac6f0a212"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Fri Aug 14 23:23:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 23:23:38 2026"
      },
      "message": "Parsing helper for working with different types and formats of timestamp (#1414)\n\n* Parsing helper for working with different types and formats of timestamp\n* Add overflow checks and negative tests"
    },
    {
      "commit": "a3027a4d358fcba46cc8420411eafeeac6f0a212",
      "tree": "9fa4255a5a11b165c35d44ae667301f9d4f28c3f",
      "parents": [
        "424f95422e8b464379054ef4c822917be9e11ed4"
      ],
      "author": {
        "name": "Jonathan Tatum",
        "email": "jdtatum@google.com",
        "time": "Fri Aug 14 18:09:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 18:09:13 2026"
      },
      "message": "Enable list_ext conformance tests. (#1412)"
    },
    {
      "commit": "fc6a53ca6468b21b36f13856c8657a7c22c601a4",
      "tree": "6e7b6d75854173369a675236e3c5406b697789b2",
      "parents": [
        "fc1b523bbeefbbb970dd9d98aec7f59914b4788b"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Fri Aug 14 00:59:12 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Fri Aug 14 00:59:12 2026"
      },
      "message": "Update README.md badges and links for cel.dev/cel-go\n"
    },
    {
      "commit": "fc1b523bbeefbbb970dd9d98aec7f59914b4788b",
      "tree": "5d2325c28a9fe78c5a0d0ae49edc03bb84ba1e11",
      "parents": [
        "424f95422e8b464379054ef4c822917be9e11ed4"
      ],
      "author": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Fri Aug 14 00:47:36 2026"
      },
      "committer": {
        "name": "dplotnikov",
        "email": "dplotnikov@google.com",
        "time": "Fri Aug 14 00:47:36 2026"
      },
      "message": "Switch module and import paths to cel.dev/cel-go\n\nFollowing the repository relocation and adoption of the cel.dev domain,\nupdate the module path in go.mod files from github.com/google/cel-go to\ncel.dev/cel-go. Update all internal package imports and Bazel BUILD\ndefinitions accordingly.\n"
    },
    {
      "commit": "424f95422e8b464379054ef4c822917be9e11ed4",
      "tree": "6468a9acbe9122a8b31bc73274e392912cd15326",
      "parents": [
        "2cf1626d370454e40dff68b977f27382c59f170a"
      ],
      "author": {
        "name": "l46kok",
        "email": "sokwhan@google.com",
        "time": "Thu Aug 13 21:55:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 21:55:29 2026"
      },
      "message": "Fix shorthand type specifier parsing to allow newlines and tab characters (#1411)"
    },
    {
      "commit": "2cf1626d370454e40dff68b977f27382c59f170a",
      "tree": "5827a7fe14e71703e8937484d77ef1ebb9679a48",
      "parents": [
        "b74d3036464a222fb1ea1f1c7c89cdf2a6499dde"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Fri Aug 07 20:32:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 20:32:57 2026"
      },
      "message": "Env copy on write (#1405)\n\n* Program plan optimizations\n\n| Benchmark Case | Before (ns/op) | After (ns/op) | Δ Time | Before (B/op) | After (B/op) | Δ Memory | Before (allocs) | After (allocs) | Δ Allocs |\n| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n| BenchmarkProgramPlan/Default | 8,153 | 930 | **-88.6%** | 8,320 | 1,416 | **-83.0%** | 36 | 26 | **-27.8%** |\n| BenchmarkProgramPlan/OptimizeUnneeded | 7,344 | 1,150 | **-84.3%** | 8,784 | 1,512 | **-82.8%** | 50 | 32 | **-36.0%** |\n| BenchmarkProgramPlan/OptimizeNeeded | 8,370 | 2,164 | **-74.1%** | 10,224 | 2,976 | **-70.9%** | 67 | 52 | **-22.4%** |\n\n* Minor refactor of the initialization logic to reduce program size\n\n* Copy-on-write semantics for types.Registry and cel.Env internals\n\n* Ensure shared declarations aren\u0027t copied unless necessary within the checker\n\n* Capture NewEnv setup benchmarks as well\n\n* Fix race-related issue with copy-on-write mutability check\n\n* Eliminate dead-code from former Copy() approach. More tests\n\n* Bug fix to support disabling declarations when using inherited declarations"
    },
    {
      "commit": "b74d3036464a222fb1ea1f1c7c89cdf2a6499dde",
      "tree": "9b4447e42b5a101c2cced8113cc6617ae239be96",
      "parents": [
        "9d5baaf22da5b1e59604d0912718331f4716d10c"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Fri Aug 07 17:01:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 17:01:16 2026"
      },
      "message": "Fold list concat expressions together (#1406)\n\n* Fold list concat expressions together\n* Test cases for optional tracking"
    },
    {
      "commit": "9d5baaf22da5b1e59604d0912718331f4716d10c",
      "tree": "afea99d8ae43b7b6bc67f2a5c55e85cac9904608",
      "parents": [
        "1a53cb79284be4b96b5c289673d075e7f7377d33"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Wed Aug 05 21:15:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 21:15:44 2026"
      },
      "message": "Program plan optimizations (#1399)\n\n* Program plan optimizations\n\n| Benchmark Case | Before (ns/op) | After (ns/op) | Δ Time | Before (B/op) | After (B/op) | Δ Memory | Before (allocs) | After (allocs) | Δ Allocs |\n| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n| BenchmarkProgramPlan/Default | 8,153 | 930 | **-88.6%** | 8,320 | 1,416 | **-83.0%** | 36 | 26 | **-27.8%** |\n| BenchmarkProgramPlan/OptimizeUnneeded | 7,344 | 1,150 | **-84.3%** | 8,784 | 1,512 | **-82.8%** | 50 | 32 | **-36.0%** |\n| BenchmarkProgramPlan/OptimizeNeeded | 8,370 | 2,164 | **-74.1%** | 10,224 | 2,976 | **-70.9%** | 67 | 52 | **-22.4%** |\n\n* Minor refactor of the initialization logic to reduce program size\n\n* Shift the dispatcher-reuse to the environment rather than the program"
    },
    {
      "commit": "1a53cb79284be4b96b5c289673d075e7f7377d33",
      "tree": "00bc6391c785ca816b01e4ac6808d9a6e8e2e325",
      "parents": [
        "f10a2e6441f175adc281484251a0fcbab92bd8a6"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Wed Aug 05 21:11:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 21:11:45 2026"
      },
      "message": "Release Tag Automation for go submodules (#1401)"
    },
    {
      "commit": "f10a2e6441f175adc281484251a0fcbab92bd8a6",
      "tree": "88c714ba6c58ad07e81709dbd2dbb2b37ed13e37",
      "parents": [
        "ab72257a23dbb7dc60711e83e127bb6f8ee19e5d"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Wed Aug 05 21:11:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 21:11:26 2026"
      },
      "message": "Optimize NativeToValue call paths (#1400)\n\n* Optimize NativeToValue to minimize allocs\n\n- **Unified `NativeToValue` Dispatch**: Consolidated private `nativeToValue` and `Registry.NativeToValue` into a single authoritative receiver method. `DefaultTypeAdapter` delegates directly to `emptyRegistry.NativeToValue`.\n- **Reflection \u0026 Allocation Reduction**:\n  - Replaced dynamic `.Convert().Interface().(T)` reflection conversions for type aliases with direct zero-allocation primitive getters (`.Int()`, `.Uint()`, `.Float()`, `.Bool()`, `.String()`).\n  - Integrated custom struct descriptor lookups directly into the reflection branch using `reflect.TypeOf(value)` for instant map matching.\n  - Eliminated duplicate `reflect.ValueOf()` instantiations and redundant nil pointer checks across conversion paths.\n---\n\n| Benchmark Target | `master` Baseline | Refactored Branch | Delta | Allocs / Op |\n| :--- | :---: | :---: | :---: | :---: |\n| `proto/TestAllTypes` | 177.0 ns/op | **87.91 ns/op** | 🚀 **+50.3% faster** | 1 alloc |\n| `nativeStruct/pointer` | 20.59 ns/op | **13.18 ns/op** | 🚀 **+36.0% faster** | 0 allocs |\n| `nativeStruct/value` | 17.25 ns/op | **13.52 ns/op** | 🚀 **+21.6% faster** | 0 allocs |\n| `ref.Val/String` | 4.81 ns/op | **2.62 ns/op** | 🚀 **+45.5% faster** | 0 allocs |\n| `ref.Val/Int` | 3.73 ns/op | **2.69 ns/op** | 🚀 **+27.9% faster** | 0 allocs |\n| `int/1` | 3.86 ns/op | **2.55 ns/op** | 🚀 **+33.9% faster** | 0 allocs |\n| `bool/true` | 2.91 ns/op | **2.11 ns/op** | 🚀 **+27.5% faster** | 0 allocs |\n\n| Benchmark Target | `master` Baseline | Refactored Branch | Delta |\n| :--- | :---: | :---: | :---: |\n| `nested_proto_field` | 141.3 ns/op | **124.7 ns/op** | 🚀 **+11.7% faster** |\n| `nested_proto_field_with_index` | 577.5 ns/op | **540.6 ns/op** | 🚀 **+6.4% faster** |\n| `index` | 122.3 ns/op | **108.1 ns/op** | 🚀 **+11.6% faster** |\n| `index_list_int_uint_type_index` | 42.87 ns/op | **38.22 ns/op** | 🚀 **+10.8% faster** |\n| `index_cross_type_float_uint` | 264.4 ns/op | **240.0 ns/op** | 🚀 **+9.2% faster** |\n| `select_subsumed_field` | 14.27 ns/op | **13.05 ns/op** | 🚀 **+8.5% faster** |\n| `select_custom_pb3_optional_field` | 43.96 ns/op | **41.71 ns/op** | 🚀 **+5.1% faster** |\n| `complex_qual_vars` | 338.4 ns/op | **323.1 ns/op** | 🚀 **+4.5% faster** |\n\n* Consistency fix for safe field getter\n\n* Remove test added by mistake"
    },
    {
      "commit": "ab72257a23dbb7dc60711e83e127bb6f8ee19e5d",
      "tree": "a1f6f2159a72bbbdccb87f73359d5cb08d0d86f3",
      "parents": [
        "ba6c27ebc0d232ae79907d778f3378a3ec741cf3"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Tue Aug 04 04:11:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 04:11:04 2026"
      },
      "message": "Move native type support into the Core CEL library (#1396)"
    },
    {
      "commit": "ba6c27ebc0d232ae79907d778f3378a3ec741cf3",
      "tree": "6e22b15ae91045ac68ade3d645ffa0ed40a4bab4",
      "parents": [
        "7c1df6b3f0dc75c64bdf199227f4a5335c181df3"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Fri Jul 31 20:59:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 20:59:35 2026"
      },
      "message": "Support self-describing, self-adapting struct types (#1395)\n\n* Support self-describing, self-adapting struct types\n* Safer duplicate type detection"
    },
    {
      "commit": "7c1df6b3f0dc75c64bdf199227f4a5335c181df3",
      "tree": "3ef849b95b0b33ebf297f2fcec57795c75ef55bc",
      "parents": [
        "c15365a7610acb37a6c8e26b6af6ee0eaf7c10ce"
      ],
      "author": {
        "name": "pranit more",
        "email": "pranit@sproutxp.com",
        "time": "Fri Jul 31 19:22:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 19:22:35 2026"
      },
      "message": "reject out-of-range hours in timezone offset parsing (#1391)"
    },
    {
      "commit": "c15365a7610acb37a6c8e26b6af6ee0eaf7c10ce",
      "tree": "16331684d97c30c6ec156118da1573c400428a8b",
      "parents": [
        "8c1485e1cbf94f8973b4b0616f466a681012d5db"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jul 30 04:25:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 04:25:16 2026"
      },
      "message": "Simplify support for native object types (#1393)\n\n* Simplify support for native object types\n\nShift most of the logic from the NativeTypeProvider over to the NativeObject\nwrappers. This change is a stepping stone to consolidating type providers\ninto the common/types package and making it less painful to manage type\nadaptation.\n\n* Fix for embedded type field traversal\n\n* Robustness checks for field retrieval with nil embedded pointers to structs\n\nSince promoted fields were previously not discovered, field setting\nalso needed to be updated to ensure nested pointers to structs with\npromoted fields were initialized properly.\n\n* Note for future work"
    },
    {
      "commit": "8c1485e1cbf94f8973b4b0616f466a681012d5db",
      "tree": "fd5afddbbee9b9c493a9033546dcb3bc66d91ad6",
      "parents": [
        "8bbb639931c782be1de2c55c009f0dc0e079ff6c"
      ],
      "author": {
        "name": "Jonathan Tatum",
        "email": "jdtatum@google.com",
        "time": "Wed Jul 29 19:12:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 19:12:15 2026"
      },
      "message": "Correct documented default max value for range (#1392)"
    },
    {
      "commit": "8bbb639931c782be1de2c55c009f0dc0e079ff6c",
      "tree": "fecc102e80e28316fcffd2d1a7b37d328bd18fa2",
      "parents": [
        "32243258a4b24d1ba45ee7a0c9d91a865b61f898"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Tue Jul 28 20:44:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 20:44:27 2026"
      },
      "message": "Fix the expression limit node test (#1390)"
    },
    {
      "commit": "32243258a4b24d1ba45ee7a0c9d91a865b61f898",
      "tree": "cc6cee436c53ef33613946db939614e703b994a3",
      "parents": [
        "fa407aa28b01a4a1c475e6796fc2190078020e35"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Jul 27 19:38:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:38:15 2026"
      },
      "message": "Improve the efficiency of optMap / optFlatMap (#1387)"
    },
    {
      "commit": "fa407aa28b01a4a1c475e6796fc2190078020e35",
      "tree": "9a87c7795244930a91748c85359a6fa494734740",
      "parents": [
        "5e219300a1260d9568c4192a3b05271d62594fce"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Jul 27 18:08:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 18:08:15 2026"
      },
      "message": "Regex program plan size controls (#1383)\n\n* Regex program plan size controls\n\nThis implementation mirrors the logic used in RE2 within cel-java\nand cel-cpp. Regex implementations across platforms do not guarantee\nequivalent program plan sizes, but this at least provides a means\nto control the plan size per-platform.\n\n* Minor refactor for maintenance of limit extraction\n\n* Minor updates to test setup"
    },
    {
      "commit": "5e219300a1260d9568c4192a3b05271d62594fce",
      "tree": "e02a6d13594bb03e7018f34e81739b7facf864e5",
      "parents": [
        "a492a702877fee0079ad2863d58b53e5ac79d1da"
      ],
      "author": {
        "name": "Roshan Singh",
        "email": "35294369+lopster568@users.noreply.github.com",
        "time": "Mon Jul 27 17:37:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 17:37:54 2026"
      },
      "message": "Respect composed adapter for unregistered structs (#1384)\n\nnativeTypeProvider.NativeToValue routed every struct-kind value to\nnewNativeObject, regardless of whether the type was registered via\next.NativeTypes. Every other method on the provider checks the\nnativeTypes registry first and falls back to the composed base adapter\nwhen a type is not registered; NativeToValue was the exception, so a\ncustom adapter added with cel.CustomTypeAdapter never saw unregistered\nstructs it wanted to convert itself.\n\nMirror the registry check from NewValue: only wrap registered struct\ntypes as native objects, and delegate the rest to the base adapter.\n\nFixes #1343"
    },
    {
      "commit": "a492a702877fee0079ad2863d58b53e5ac79d1da",
      "tree": "18c465f6d9777e58d139735aab81cfaec6f787be",
      "parents": [
        "b85d3bce2d83993674b326825d2f434875543aa8"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Sat Jul 25 00:08:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 00:08:13 2026"
      },
      "message": "Expression node limits for parser and checker (#1386)\n\n* Expression node limits for parser and checker, defaults to 100k"
    },
    {
      "commit": "b85d3bce2d83993674b326825d2f434875543aa8",
      "tree": "0d9449ff3336251e23b683514b6d09e819ae06b0",
      "parents": [
        "6f3625d264a9116a95f48de55678335b2d11613b"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jul 23 19:51:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 19:51:51 2026"
      },
      "message": "Add cost tracking to ext/math.go (#1353)"
    },
    {
      "commit": "6f3625d264a9116a95f48de55678335b2d11613b",
      "tree": "7cf8e429cd68c2d700edb233fcc48640ca4ff7a6",
      "parents": [
        "e15d3ca027e764e1171dfe73edee85a65aaaf4c4"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jul 23 18:45:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 18:45:05 2026"
      },
      "message": "Allow validators to be reconfigured (#1379)"
    },
    {
      "commit": "e15d3ca027e764e1171dfe73edee85a65aaaf4c4",
      "tree": "d87c3a59aa8aa23c082574221410183fcd3dfb72",
      "parents": [
        "36ff97ded3066ac9a04eea8dc398cb6731b9a323"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jul 23 18:44:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 18:44:51 2026"
      },
      "message": "Introduce cel.bind nesting limit (#1378)"
    },
    {
      "commit": "36ff97ded3066ac9a04eea8dc398cb6731b9a323",
      "tree": "4452849fbb55c3aa600b384c4b969ffa81334bc4",
      "parents": [
        "af38f759ad330fa856f0f2586e6969df98ae9d9b"
      ],
      "author": {
        "name": "pranit more",
        "email": "pranit@sproutxp.com",
        "time": "Thu Jul 23 15:52:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 15:52:13 2026"
      },
      "message": "copy operands in Bytes.Add to avoid aliasing the receiver (#1381)\n\nBytes values are immutable, but Add grew the receiver with append. When the\nreceiver\u0027s backing array had spare capacity the second operand was written\ninto it and the returned slice aliased the receiver, so two concatenations\nsharing a receiver corrupted each other. Allocate a fresh slice and copy\nboth operands, matching list concatenation."
    },
    {
      "commit": "af38f759ad330fa856f0f2586e6969df98ae9d9b",
      "tree": "c1a14a52a399d0fa8262e0000ebe954f335d378e",
      "parents": [
        "0175dbb694f6b92c45eb037e7ed9d2cdaa166d33"
      ],
      "author": {
        "name": "pranit more",
        "email": "pranit@sproutxp.com",
        "time": "Thu Jul 23 15:40:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 15:40:36 2026"
      },
      "message": "Fix unsound constant folding of `x in [x]` for NaN values (#1374)\n\n* Fix unsound constant folding of x in [x] for NaN values\n\nMatching an identifier needle against a list element by name assumes the value is equal to itself, which is not true of a NaN double, so the optimizer rewrote expressions that evaluate to false into true. Limit the identifier match to the scalar types that cannot hold a NaN.\n\n* Allow type and self-equal aggregates in the in-list ident match"
    },
    {
      "commit": "0175dbb694f6b92c45eb037e7ed9d2cdaa166d33",
      "tree": "ea2823b387609abacb902308c3cbed18ddbb4388",
      "parents": [
        "7ff0141e7a80434eb3d4a81908d3e7a210fd7cfc"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jul 23 04:08:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 04:08:19 2026"
      },
      "message": "Ensure logical operator fold expressions are bool (#1380)"
    },
    {
      "commit": "7ff0141e7a80434eb3d4a81908d3e7a210fd7cfc",
      "tree": "5911a0d5fcde011c8124c970a1fe99ef0e54c5ae",
      "parents": [
        "270df174e6cdb4d85d35236d744d31f1f8c60f1a"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Tue Jul 21 21:02:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 21:02:32 2026"
      },
      "message": "Add runnable examples for all expressions in celbyexample.com (#1373)\n\n* Add runnable examples for all expression in celbyexample.com\n* Cosmetic improvements to examples for Go style and clarity"
    },
    {
      "commit": "270df174e6cdb4d85d35236d744d31f1f8c60f1a",
      "tree": "b66498f7c7fce81af3533941c3be5f6edc072500",
      "parents": [
        "94b0ccedeebeb2e6a925bf3f5a3de496799a001f"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Tue Jul 21 21:02:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 21:02:15 2026"
      },
      "message": "async: Introduce Timeout and Retry wrappers (#1367)"
    },
    {
      "commit": "94b0ccedeebeb2e6a925bf3f5a3de496799a001f",
      "tree": "a5ab71d91498a39fb53481c3a8ccdeba3260999b",
      "parents": [
        "5933d078036193b6579b8aecef9894d3cbb097ef"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Tue Jul 21 20:10:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 20:10:31 2026"
      },
      "message": "Concurrent Eval with context.Context bound functions (#1369)\n\n* Concurrent evaluation support\n* Memoize sidecar state objects during concurrent eval.\n* Shift to lazy async calls, rather than eager, and update optimizers to use ConcurrentEval\n* panic-recovery in ConcurrentEval\n* Added leak check to the ConcurrentEval tests\n* Changed default strategy to DrainReady w/ small timeout"
    },
    {
      "commit": "5933d078036193b6579b8aecef9894d3cbb097ef",
      "tree": "a999a85a9178817c4b4b78fc42fa22396c5c3008",
      "parents": [
        "82a222f46994cfdf3d161480ca00d06dac341f96"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Jul 20 20:05:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 20:05:20 2026"
      },
      "message": "Fix constant folding and local variable resolution (#1371)\n\n* Fix constant folding and local variable resolution\n* Simplified the error logic, don\u0027t produce eval errors when something can\u0027t be folded\n* Additional fixes for comprehension variable tracking and repro cases"
    },
    {
      "commit": "82a222f46994cfdf3d161480ca00d06dac341f96",
      "tree": "2cc82c70c21dd07c8880bde7c1ab4e72a0b35900",
      "parents": [
        "1d92000ff4ce59c02e6218aa17c6a5a29493e641"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Sat Jul 18 00:32:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 00:32:40 2026"
      },
      "message": "Graceful NaN ordering (#1370)"
    },
    {
      "commit": "1d92000ff4ce59c02e6218aa17c6a5a29493e641",
      "tree": "05fc245e194b85242f4776f7a2482871144061b5",
      "parents": [
        "646511d2f167294e54567152e94e55b69e5b6e90"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jul 16 19:33:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 19:33:38 2026"
      },
      "message": "async: Introduce DrainStrategy, DrainAction, Observer, and Call types (#1364)"
    },
    {
      "commit": "646511d2f167294e54567152e94e55b69e5b6e90",
      "tree": "befa1676a091687fa4f617ce4d4bdb8e65b31558",
      "parents": [
        "e4e56368db0132b54f7c6cf9731e08e9105b33c0"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jul 16 18:36:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 18:36:29 2026"
      },
      "message": "Cost library for ext/network (#1345)"
    },
    {
      "commit": "e4e56368db0132b54f7c6cf9731e08e9105b33c0",
      "tree": "c304a807a18aa472c9416725cf3ba063d33775ad",
      "parents": [
        "12328e54486469305f93f57b877e44b9937df7c4"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jul 16 00:23:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 00:23:02 2026"
      },
      "message": "Update lists library cost computations for improved accuracy (#1352)\n\n* Update list distinct / sort cost computations to use item hints\n* Improve list flatten estimation in v4 of lists lib"
    },
    {
      "commit": "12328e54486469305f93f57b877e44b9937df7c4",
      "tree": "0ab4f5fef5329df9ce280497c9b119bb43a90e19",
      "parents": [
        "be9dacd3025c8615df95acf4e18a91cb96dd6c86"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Wed Jul 15 19:57:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 19:57:54 2026"
      },
      "message": "Fix non-determinism in json encoding, add dummy \u0027infinite\u0027 costs (#1365)"
    },
    {
      "commit": "be9dacd3025c8615df95acf4e18a91cb96dd6c86",
      "tree": "a5f036e23538d647c79b5016bb8fb6c05a3df5f6",
      "parents": [
        "41d9149fcbe0c22a91683c10ceed46f8434678ca"
      ],
      "author": {
        "name": "William Yang",
        "email": "77467499+wilyan09007@users.noreply.github.com",
        "time": "Wed Jul 15 15:16:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 15:16:36 2026"
      },
      "message": "Add depth validation for ASTs loaded through ParsedExprToAst / Checke... (#1334)\n\ncommon/ast: depth-validate ASTs from non-parser ingestion\n\nASTs loaded via ParsedExprToAst / CheckedExprToAst bypass the parser\u0027s\nrecursion limit, so a deeply nested loaded AST could exhaust the Go\nstack during checking or planning and crash the process instead of\nreturning a normal error.\n\nAdd ast.ExceedsMaxDepth, a bounded traversal (default limit 250, the\nsame as the parser\u0027s maxRecursionDepth) that Env.Check and\nEnv.PlanProgram run before recursing, returning an ordinary error when\nthe limit is exceeded. Includes a regression test that loads a\nsynthetic over-deep AST.\n\nCo-authored-by: Tristan Swadell \u003ctswadell@google.com\u003e"
    },
    {
      "commit": "41d9149fcbe0c22a91683c10ceed46f8434678ca",
      "tree": "8ec3006c4618f475468772616e77897b5ce6fe8a",
      "parents": [
        "3d507116bdf3a50636ce217de0ac940af052da25"
      ],
      "author": {
        "name": "alhuda",
        "email": "50839256+alhudz@users.noreply.github.com",
        "time": "Wed Jul 15 15:13:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 15:13:10 2026"
      },
      "message": "reject non-RFC3339 timestamp strings in timestamp() conversion (#1338)\n\n* reject non-rfc3339 timestamp strings in timestamp() conversion"
    },
    {
      "commit": "3d507116bdf3a50636ce217de0ac940af052da25",
      "tree": "cf7f76fe58a7f75dbdca6364f7be11d65cd6c5de",
      "parents": [
        "83eed56b0fe697952d3bbae964e5539c16cf3a09"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Tue Jul 14 17:00:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 17:00:42 2026"
      },
      "message": "Async function execution internals (#1355)\n\nAsync function execution internals with context cancellation notification and observable async calls with completions"
    },
    {
      "commit": "83eed56b0fe697952d3bbae964e5539c16cf3a09",
      "tree": "68f42f97c5ce2fb57387f4551744e03475759a61",
      "parents": [
        "c7c7f04d7f69af2248a9f8ccdaf96ab6fdba3291"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Tue Jul 14 00:40:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 00:40:09 2026"
      },
      "message": "Prevent indexing on sentinel json field \u0027-\u0027 (#1349)"
    },
    {
      "commit": "c7c7f04d7f69af2248a9f8ccdaf96ab6fdba3291",
      "tree": "7c9b2b9ed9b48c2baad51ba05250821727a3dcd8",
      "parents": [
        "ecb49cce13fbe3e02318143c030c972843038e3a"
      ],
      "author": {
        "name": "Stanley Cheung",
        "email": "39173600+stanleyycheung@users.noreply.github.com",
        "time": "Thu Jul 09 17:11:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 17:11:47 2026"
      },
      "message": "Fix syntax error at main (#1362)\n\nCo-authored-by: stanleyycheung \u003cstanleyhy@google.com\u003e"
    },
    {
      "commit": "ecb49cce13fbe3e02318143c030c972843038e3a",
      "tree": "74354c9b8777b5a734aec619c13bf2b608cae82c",
      "parents": [
        "97611dc314dd41c9a4827b79f5196489f8a14201"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Wed Jul 08 09:05:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 09:05:01 2026"
      },
      "message": "Add cost tracking for encoders (#1354)\n\n* Add cost estimation for encoders\n\n* Additional encoder cost tests"
    },
    {
      "commit": "97611dc314dd41c9a4827b79f5196489f8a14201",
      "tree": "9874c07840b4ae9d16b1c9a457336f348ccbb5f0",
      "parents": [
        "91b2a931bdee891fe73fa757f9dd361c38e330a6"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Wed Jul 08 08:42:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 08:42:07 2026"
      },
      "message": "Update lists.go runtime cost calculator (#1360)\n\nEnsure negative cost factors are normalized to 1.0 to safeguard against error inputs."
    },
    {
      "commit": "91b2a931bdee891fe73fa757f9dd361c38e330a6",
      "tree": "80761f6dc5b71d73fb89289f54c3bcbf34ddcfd5",
      "parents": [
        "6d10c557e30a27f85aafde8185698c499e50b156"
      ],
      "author": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Sat Jul 04 01:42:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 04 01:42:31 2026"
      },
      "message": "Normalize cel/prompt_test.go to LF, add missing newline in prompt.go (#1361)\n\n#1359 converted cel/prompt.go to LF line endings but left the file\nwithout a trailing final newline (not gofmt-clean), and left the CRLF\nline endings in cel/prompt_test.go in place.\n\nFix both, and add a .gitattributes that normalizes text files to LF so\nCRLF cannot ship in a release again (see kubernetes/kubernetes#140205\nfor the downstream impact of CRLF in the v0.29.0 module zip).\n\nSigned-off-by: Davanum Srinivas \u003cdavanum@gmail.com\u003e"
    },
    {
      "commit": "6d10c557e30a27f85aafde8185698c499e50b156",
      "tree": "d40d572752450696b8d04d463b1b2d9d8e8239f1",
      "parents": [
        "fa16799e423d709cfb1a20c10c1db7dc6e640e55"
      ],
      "author": {
        "name": "Patrick Ohly",
        "email": "patrick.ohly@intel.com",
        "time": "Fri Jul 03 14:32:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 14:32:24 2026"
      },
      "message": "cel/prompt.go: convert CRLF to LF line ending (#1359)\n\n940c13e097bbf487ab24712b90319d3726723ac9 converted the entire file to CRLF line\nending. This is causing confusion downstream during vendoring because \"go mod\n-vendor\" creates the file with CRLF which \"git commit\" then might not preserve,\ndepending on the projects or user\u0027s autolf settings."
    },
    {
      "commit": "fa16799e423d709cfb1a20c10c1db7dc6e640e55",
      "tree": "e25e4e9e850fe0c1ad37cfc12255c304dcc18faa",
      "parents": [
        "ea3d5c059bf6a1739d4a2ff30f925a8adffdb4ea"
      ],
      "author": {
        "name": "Patrick Ohly",
        "email": "patrick.ohly@intel.com",
        "time": "Thu Jul 02 07:47:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 07:47:47 2026"
      },
      "message": "avoid repeated construction of cost tracker (#1357)\n\nMost fields in the CostTracker struct are only set once during\nconstruction. This takes a surprising amount of allocations, in particular for\nthe overload map. Constructing the tracker once and cloning it for each\nevaluation avoids doing that work repeatedly.\n\nIn a Kubernetes benchmark exercising (among other things) CEL expression\nevaluation, the cumulative CPU time and allocs for Eval dropped from 3.87s to\n1.99s resp. from 3.85G to 2.1G."
    },
    {
      "commit": "ea3d5c059bf6a1739d4a2ff30f925a8adffdb4ea",
      "tree": "19cfe59a9328d8b99df81646a917ef3c17b7e2e5",
      "parents": [
        "a4d0d643deeea6408654de2ec9944895d23f36a5"
      ],
      "author": {
        "name": "Rohan Patnaik",
        "email": "rohanpatnaik1997@gmail.com",
        "time": "Fri Jun 26 20:56:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 20:56:06 2026"
      },
      "message": "feat(ext): add json encoder (#1340)\n\n* feat(ext): add json encoder\n\n---------\n\nCo-authored-by: Rohan Patnaik \u003c22250758+rohan-patnaik@users.noreply.github.com\u003e"
    },
    {
      "commit": "a4d0d643deeea6408654de2ec9944895d23f36a5",
      "tree": "68a4f1f1f9746e0cef1469e6946b58a3fb3d1312",
      "parents": [
        "d4efa7716addf9d7f0e080311359b9711c6f1222"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Jun 22 20:37:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 20:37:33 2026"
      },
      "message": "startsWith / endsWith runtime cost agreement with checked cost (#1351)"
    },
    {
      "commit": "d4efa7716addf9d7f0e080311359b9711c6f1222",
      "tree": "552737da5b940752edbafb0b77de80a653b54e3d",
      "parents": [
        "13cff33f367085ae4ce20ddd472cbc41bd477682"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Jun 22 19:04:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 19:04:28 2026"
      },
      "message": "Ensure receiver and global matches cost estimates agree (#1350)\n\nEnsure receiver and global matches cost estimates agree"
    },
    {
      "commit": "13cff33f367085ae4ce20ddd472cbc41bd477682",
      "tree": "c970dc856401775ad4ac244b250cc6085b60987e",
      "parents": [
        "f0ffa7e32eef67fad74d72b1fe0f422f0c10d65c"
      ],
      "author": {
        "name": "marwan9696",
        "email": "57067080+marwan9696@users.noreply.github.com",
        "time": "Mon Jun 22 17:35:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 17:35:42 2026"
      },
      "message": "ext/lists: add max size check to genRange() to prevent OOM (#1310)\n\n* ext/lists: add max size check to genRange() to prevent OOM\n\nlists.range(N) allocates N elements with no upper bound. A large\nvalue like 2147483647 allocates ~16 GB and crashes the process.\n\nAdd configurable maxRangeSize (1M) check and reject negative values."
    },
    {
      "commit": "f0ffa7e32eef67fad74d72b1fe0f422f0c10d65c",
      "tree": "27487eef905e4f519eef00e8b8ffcdb7e8288e9f",
      "parents": [
        "f1ec2f6fe571afa8a226933c1bc51078b4f2d985"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jun 18 21:02:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 21:02:32 2026"
      },
      "message": "Execution frame integration with updated IntepretableV2 (#1344)\n\n* ExecutionFrame support within the cel.Program and interpreter layers\n* Simplify activation / frame pooling and fix lifecycle issues\n* Defensive checks and lifecycle fixes for ExecutionFrame\n* Fix allocation bug in bindings / block, address review feedback"
    },
    {
      "commit": "f1ec2f6fe571afa8a226933c1bc51078b4f2d985",
      "tree": "af4b794b097ffd0272277a0a020a97d40999d273",
      "parents": [
        "258e7c89f4c3facbc8be8f7c6bc3f932684283c3"
      ],
      "author": {
        "name": "alhuda",
        "email": "50839256+alhudz@users.noreply.github.com",
        "time": "Thu Jun 18 18:16:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 18:16:32 2026"
      },
      "message": "guard int32/uint32 map key narrowing in qualifyInternal (#1337)\n\n* guard int32/uint32 map key narrowing in qualifyInternal\n* parameterize narrow map key qualifier test"
    },
    {
      "commit": "258e7c89f4c3facbc8be8f7c6bc3f932684283c3",
      "tree": "05eb64cb20b1d5bd3adc7f5cca6a3b00cf85abc1",
      "parents": [
        "14f6746a286f198c2a976749331b7bf4aa2d4bd2"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Mon Jun 15 19:41:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 19:41:20 2026"
      },
      "message": "Managed execution frame with async call foundations (#1316)\n\n* Managed execution frame with async call support\n* Pare the ExecutionFrame down to just capturing current functionality\n* Update the lifecycle expectations for AsyncOp"
    },
    {
      "commit": "14f6746a286f198c2a976749331b7bf4aa2d4bd2",
      "tree": "e211fa096903f929efcdffd021b59fe2ceb7ab08",
      "parents": [
        "783267d0a5f2f94396e4ec90a109127bf9754591"
      ],
      "author": {
        "name": "alhuda",
        "email": "50839256+alhudz@users.noreply.github.com",
        "time": "Fri Jun 12 01:43:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 01:43:22 2026"
      },
      "message": "validate offset on empty-string path in indexOf and lastIndexOf (#1335)\n\n* validate offset on empty-string path in indexOf and lastIndexOf\n\n* clamp empty-string offset to string length in indexOf and lastIndexOf\n\n---------\n\nCo-authored-by: alhudz \u003cal.hudz.k@gmail.com\u003e"
    },
    {
      "commit": "783267d0a5f2f94396e4ec90a109127bf9754591",
      "tree": "7dd5e7aec72993cf4fc9cf83e4cca8afa5563131",
      "parents": [
        "551cdfeee3e8545fa77813448ab9cf593a2f05c9"
      ],
      "author": {
        "name": "alhuda",
        "email": "50839256+alhudz@users.noreply.github.com",
        "time": "Fri Jun 12 01:43:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 01:43:04 2026"
      },
      "message": "reject out-of-range minutes in timezone offset parsing (#1336)\n\nCo-authored-by: alhudz \u003cal.hudz.k@gmail.com\u003e"
    },
    {
      "commit": "551cdfeee3e8545fa77813448ab9cf593a2f05c9",
      "tree": "6715622a49d2603dde07cdcf2dec8ed37b47ace6",
      "parents": [
        "940c13e097bbf487ab24712b90319d3726723ac9"
      ],
      "author": {
        "name": "Thomas Desrosiers",
        "email": "53981668+tdesrosi@users.noreply.github.com",
        "time": "Mon Jun 08 16:39:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 16:39:19 2026"
      },
      "message": "Upstreaming network.IP/CIDR to CEL-go from kubernetes (#1238)\n\n* upstreaming CIDR and IP support to cel-go\n* adding type adapter and exporting types IP and CIDR\n* upgrade network to use net/netip to more appropriately mirror k8s/apiserver implementation\n* preserve chain of type adapters with wrapping, use opaque types for IP and CIDR\n* Update overloads, types, error messages, functions consistent with k8s.\n* updating to split declaration and implementation to remain AST-compliant with k8s implementation\n* check overloads and memberoverloads for parity with k8s\n* add mandatory version, add cidr/ip_to_string missing from k8s\n* add static validator, fix alphabetical order and other reviwer comments\n* resolve kubernetes issue 134224 by adding isStrictCIDR and isInterfaceAddress\n* remove strict cidr and interface address checks and add isMask to check CIDR host bits"
    },
    {
      "commit": "940c13e097bbf487ab24712b90319d3726723ac9",
      "tree": "f8147d084ba1275fbaf622432c989121028c8f82",
      "parents": [
        "f456a6ec60db68b418851535ac572c51703caa48"
      ],
      "author": {
        "name": "Mr.invincible",
        "email": "78592816+Mr-In4inci3le@users.noreply.github.com",
        "time": "Mon Jun 08 16:38:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 16:38:27 2026"
      },
      "message": "cel/prompt: example of sanitizing user input (#1311)\n\nProvide a test case that demonstrates best practices for working with templates."
    },
    {
      "commit": "f456a6ec60db68b418851535ac572c51703caa48",
      "tree": "1f5509416c339e123c46aaa7c6d6ee34b903c472",
      "parents": [
        "22f1b2c0ff023b0585882f07432b56cf62057a31"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Thu Jun 04 19:00:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 19:00:06 2026"
      },
      "message": "Minor updates to test coverage and code quality (#1318)"
    },
    {
      "commit": "22f1b2c0ff023b0585882f07432b56cf62057a31",
      "tree": "e69c6930ac2df13eb2af443659e5ab3870856b7e",
      "parents": [
        "7ce3e732185c69b30c5a8199b9ef267bda9e4e1f"
      ],
      "author": {
        "name": "Rohan Patnaik",
        "email": "rohanpatnaik1997@gmail.com",
        "time": "Thu Jun 04 18:59:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 18:59:20 2026"
      },
      "message": "fix(containers): allow simple alias targets (#1327)"
    },
    {
      "commit": "7ce3e732185c69b30c5a8199b9ef267bda9e4e1f",
      "tree": "443c018f2b7e205e5a82b42ecb65b7ad64cf6df3",
      "parents": [
        "4a19ace0ace079d82d4e571fa97e0505552b1865"
      ],
      "author": {
        "name": "l46kok",
        "email": "sokwhan@google.com",
        "time": "Tue Jun 02 18:25:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 18:25:44 2026"
      },
      "message": "Remove duplicate policy tests covered by policy conformance tests (#1332)\n\n* Update repositories.bzl\n\n* Remove duplicate YAML files\n\n* Update test runner to support canonical repository label\n\n* Remove duplicate cel_go_test for policies\n\n* Restore test policies that demonstrate go specific behaviors\n\n* Restore pb and k8s for cel_test macro colocation\n\n* Undo cel_go_test changes\n\n* Fix failing test"
    },
    {
      "commit": "4a19ace0ace079d82d4e571fa97e0505552b1865",
      "tree": "ffbaf89c0c17afa3a223f89bf468502bb8f588d1",
      "parents": [
        "36d7b9cccc399fea5935559af55b99e84d82d336"
      ],
      "author": {
        "name": "l46kok",
        "email": "sokwhan@google.com",
        "time": "Wed May 27 17:29:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 17:29:04 2026"
      },
      "message": "Minor Google3 import fixes (#1331)\n\n* Google3 import fixes\n\n* Remove redundant cel_policy fallback"
    },
    {
      "commit": "36d7b9cccc399fea5935559af55b99e84d82d336",
      "tree": "32bb6a7a72d87633372d296a3a67bd7a71071a79",
      "parents": [
        "7b03f12461bbdf1e6b8d852fd0a79750292c9872",
        "4c28e0fe943d93f4ba744483dfd7359bf3401256"
      ],
      "author": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Tue May 26 22:08:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 22:08:29 2026"
      },
      "message": "Merge pull request #1330 from google/dmitriplotnikov-patch-1\n\nAdd migration warning to README"
    },
    {
      "commit": "4c28e0fe943d93f4ba744483dfd7359bf3401256",
      "tree": "32bb6a7a72d87633372d296a3a67bd7a71071a79",
      "parents": [
        "7b03f12461bbdf1e6b8d852fd0a79750292c9872"
      ],
      "author": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Tue May 26 21:58:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 21:58:57 2026"
      },
      "message": "Add migration warning to README\n\nAdded a warning about repository migration on June 16, 2026."
    },
    {
      "commit": "7b03f12461bbdf1e6b8d852fd0a79750292c9872",
      "tree": "100eabdcfa52062b70d6367320437a6ffd3e40df",
      "parents": [
        "02d6e2bca5699f35bb779589dd2f0767d27d32d5"
      ],
      "author": {
        "name": "Moraneus",
        "email": "48603901+moraneus@users.noreply.github.com",
        "time": "Thu May 21 19:08:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 19:08:50 2026"
      },
      "message": "parser/unparser: emit valid CEL for doubles in scientific notation (#1326)\n\nstrconv.FormatFloat with \u0027g\u0027 and precision -1 emits scientific\nnotation for doubles of magnitude \u003c 1e-4 or \u003e\u003d 1e+21 (e.g. \"1e-05\",\n\"1e+30\"). The previous guard appended \".0\" whenever the formatted\nstring lacked a \".\" so that the literal would parse as a double\nrather than an int — but scientific notation already produces a\nvalid double literal, so appending \".0\" produced invalid output\nlike \"1e-05.0\" that the parser rejects.\n\nTreat the exponent marker \u0027e\u0027/\u0027E\u0027 as also indicating a valid double\nliteral, only appending \".0\" when neither \".\" nor \"e\"/\"E\" is\npresent.\n\nAdds regression test cases covering small/large magnitudes,\nnegative exponents, and uppercase \u0027E\u0027.\n\nFixes #1325"
    },
    {
      "commit": "02d6e2bca5699f35bb779589dd2f0767d27d32d5",
      "tree": "0365d2e1f67efb923c7481e23fe3f5a5d9923621",
      "parents": [
        "3c645ee17729d05dbc6cadb99ee7fe6a723914be"
      ],
      "author": {
        "name": "0xASTRA",
        "email": "47869173+0xASTRA@users.noreply.github.com",
        "time": "Thu May 21 17:22:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 17:22:24 2026"
      },
      "message": "Fix has() unknown propagation during partial evaluation (#1324)\n\nFix has() unknown propagation during partial evaluation"
    },
    {
      "commit": "3c645ee17729d05dbc6cadb99ee7fe6a723914be",
      "tree": "c5b47f2708f54cf02c73b7a8a0307ccbce00eaec",
      "parents": [
        "2814acd9e1edc48811cbd88c6f60432638334e5a"
      ],
      "author": {
        "name": "Jonathan Tatum",
        "email": "jdtatum@google.com",
        "time": "Thu May 21 17:07:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 17:07:21 2026"
      },
      "message": "Update documentation for nested first-match rules (#1323)\n\n* Update documentation for nested first-match rules\n\nFirst match rules have an implicit unwrap behavior if they are\nunconditional. This wasn\u0027t documented and behaved inconsistently\ndepending on where the rule was in the policy tree."
    },
    {
      "commit": "2814acd9e1edc48811cbd88c6f60432638334e5a",
      "tree": "a9d4848cb3667acfcbbe5ce4a14e55fe391a1c73",
      "parents": [
        "a63c50303c3aec3836b78831c61ad3b0f66ea1ad"
      ],
      "author": {
        "name": "Ali Firas (thesmartshadow)",
        "email": "firaswq12@gmail.com",
        "time": "Tue May 19 23:25:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 23:25:30 2026"
      },
      "message": "fix: enforce expression size limit before source construction (#1302)\n\n* fix: enforce expression size limit before source construction\n\nEnforce the configured ParserExpressionSizeLimit in Env.Compile() and\nEnv.Parse() before calling common.NewTextSource(), preventing memory\nallocation proportional to the full input size for oversized expressions.\n\nPreviously, oversized expressions were correctly rejected but only after\nthe internal rune buffer had already been allocated. This allowed\nsubstantial memory allocation even when a strict size limit was configured.\n\nCWE-400: Uncontrolled Resource Consumption\n\n* Enforce expression size limit during source construction\n\n* Use input length directly for buffer sizing\n\n* Reject oversized input before buffer allocation"
    },
    {
      "commit": "a63c50303c3aec3836b78831c61ad3b0f66ea1ad",
      "tree": "1a3deaef97b416dc42310e953a1a516717067666",
      "parents": [
        "6840852d7a4949a2066c43939a82aeac8c94649c"
      ],
      "author": {
        "name": "Jonathan Tatum",
        "email": "jdtatum@google.com",
        "time": "Mon May 18 22:24:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 22:24:23 2026"
      },
      "message": "Policy variable scoping fixes (#1321)\n\n* Policy variable resolution fixes\n\n - fix variable resolution when nested variable shadows an outer one\n - propagate the variable type from composition to unnesting instead of\n   reading the post optimize inferred type"
    },
    {
      "commit": "6840852d7a4949a2066c43939a82aeac8c94649c",
      "tree": "5787dc5d09a58a03991f1844bb9d538f7e5c442b",
      "parents": [
        "876858aca4126c8a335c9472943dafc88cac6c83"
      ],
      "author": {
        "name": "l46kok",
        "email": "sokwhan@google.com",
        "time": "Mon May 18 20:40:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 20:40:18 2026"
      },
      "message": "Add conformance test runner for CEL Policies (#1319)\n\n* Add conformance test runner for CEL Policies\n\n* Cleanup"
    },
    {
      "commit": "876858aca4126c8a335c9472943dafc88cac6c83",
      "tree": "351ce4777dd6f66ce9d41a44b47ded11925bfbdb",
      "parents": [
        "924f6d517a34588e115c3fc1550bde50fbdc9ab9"
      ],
      "author": {
        "name": "Jonathan Tatum",
        "email": "jdtatum@google.com",
        "time": "Mon May 18 18:46:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 18:46:18 2026"
      },
      "message": "Test Runner usability improvements (#1320)\n\n* Testrunner changes:\n\n- add a flag for logging additional test details\n- fix unintentional fallthroughs in matcher\n\n* Add missing proto library load"
    },
    {
      "commit": "924f6d517a34588e115c3fc1550bde50fbdc9ab9",
      "tree": "4e5e22486be57d3161b6a90afd7f8164d3ff106d",
      "parents": [
        "a82c68b770ac0cb67f7b4f76166827c14b145eb8"
      ],
      "author": {
        "name": "Tristan Swadell",
        "email": "tswadell@google.com",
        "time": "Wed May 13 19:07:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 19:07:57 2026"
      },
      "message": "Fix unintentional unwrapping of optionals at any level of depth (#1315)"
    }
  ],
  "next": "a82c68b770ac0cb67f7b4f76166827c14b145eb8"
}
