René's URL Explorer Experiment


Title: [BUG] CelValue runtime path mishandles fixed32/fixed64 and FieldMask field access · Issue #1075 · cel-expr/cel-java · GitHub

Open Graph Title: [BUG] CelValue runtime path mishandles fixed32/fixed64 and FieldMask field access · Issue #1075 · cel-expr/cel-java

X Title: [BUG] CelValue runtime path mishandles fixed32/fixed64 and FieldMask field access · Issue #1075 · cel-expr/cel-java

Description: Describe the bug My motivation is to build support for protokt (alternate protobuf codegen + runtime) in protovalidate-java, which uses CEL. I think I've encountered two independent bugs in the planner runtime; both surface when CEL navi...

Open Graph Description: Describe the bug My motivation is to build support for protokt (alternate protobuf codegen + runtime) in protovalidate-java, which uses CEL. I think I've encountered two independent bugs in the pla...

X Description: Describe the bug My motivation is to build support for protokt (alternate protobuf codegen + runtime) in protovalidate-java, which uses CEL. I think I've encountered two independent bugs in the...

Opengraph URL: https://github.com/cel-expr/cel-java/issues/1075

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[BUG] CelValue runtime path mishandles fixed32/fixed64 and FieldMask field access","articleBody":"**Describe the bug**\n\nMy motivation is to build support for protokt (alternate protobuf codegen + runtime) in protovalidate-java, which uses CEL.\n\nI think I've encountered two independent bugs in the planner runtime; both surface when CEL navigates a `com.google.protobuf.Message` whose conversion goes through `ProtoCelValueConverter`: \n\n1. proto `fixed32`/`fixed64` fields resolve as signed int, breaking `uint` overloads: the CEL spec maps proto `fixed32`/`fixed64` to CEL `uint`, and the `CelValue` path via `ProtoCelValueConverter.fromProtoMessageFieldToCelValue` does not: it has cases for `UINT32`/`UINT64` but not `FIXED32`/`FIXED64`, so those fall through to `normalizePrimitive` and surface as `Integer`/`Long`.\n\n2. `FieldMask`-typed fields can't be navigated as messages: `BaseProtoCelValueConverter.fromWellKnownProto` converts `FieldMask` to a comma-separated string of its paths, which is different from cel-go and cel-java's `ProtoLiteAdapter.adaptValueToWellKnownProto`.\n\n**To Reproduce**\nCheck which components this affects:\n\n- [ ]  parser\n- [ ]  checker\n- [x]  runtime\n\nReproducers (in Kotlin to get dependencies inline):\n\n1.\n    ```kotlin\n    @file:Repository(\"https://repo1.maven.org/maven2\")\n    @file:DependsOn(\"dev.cel:cel:0.13.0\")\n    @file:DependsOn(\"com.google.protobuf:protobuf-java:4.30.1\")\n    \n    import com.google.protobuf.DescriptorProtos.DescriptorProto\n    import com.google.protobuf.DescriptorProtos.FieldDescriptorProto\n    import com.google.protobuf.DescriptorProtos.FileDescriptorProto\n    import com.google.protobuf.Descriptors.FileDescriptor\n    import com.google.protobuf.DynamicMessage\n    import dev.cel.bundle.CelFactory\n    import dev.cel.common.types.StructTypeReference\n    \n    // A minimal one-field message: `Msg { fixed32 f = 1; }`, built from a runtime\n    // descriptor so the reproducer needs no .proto compilation.\n    val fileProto =\n        FileDescriptorProto.newBuilder()\n            .setName(\"repro.proto\")\n            .setSyntax(\"proto3\")\n            .addMessageType(\n                DescriptorProto.newBuilder()\n                    .setName(\"Msg\")\n                    .addField(\n                        FieldDescriptorProto.newBuilder()\n                            .setName(\"f\")\n                            .setNumber(1)\n                            .setType(FieldDescriptorProto.Type.TYPE_FIXED32)\n                            .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)\n                    )\n            )\n            .build()\n    \n    val fileDescriptor = FileDescriptor.buildFrom(fileProto, arrayOf())\n    val msgDescriptor = fileDescriptor.findMessageTypeByName(\"Msg\")\n    \n    val cel =\n        CelFactory.plannerCelBuilder()\n            .addMessageTypes(msgDescriptor)\n            .addVar(\"msg\", StructTypeReference.create(\"Msg\"))\n            .build()\n    \n    // The checker types a proto fixed32 field as CEL `uint`; `msg.f \u003e 5u` type-checks.\n    val ast = cel.compile(\"msg.f \u003e 5u\").ast\n    val program = cel.createProgram(ast)\n    \n    val msg =\n        DynamicMessage.newBuilder(msgDescriptor)\n            .setField(msgDescriptor.findFieldByNumber(1), 6)\n            .build()\n    \n    val result = program.eval(mapOf(\"msg\" to msg))\n    println(\"msg.f \u003e 5u  -\u003e  $result\")\n    check(result == true) { \"expected true\" }\n    println(\"OK\")\n    ```\n\n    Throws `dev.cel.runtime.CelEvaluationException: evaluation error at \u003cinput\u003e:6: No matching overload for function '_\u003e_'. Overload candidates: greater_uint64.`. Potential fix: https://github.com/google/cel-java/pull/1073\n\n2. \n    ```kotlin\n    @file:Repository(\"https://repo1.maven.org/maven2\")\n    @file:DependsOn(\"dev.cel:cel:0.13.0\")\n    @file:DependsOn(\"com.google.protobuf:protobuf-java:4.30.1\")\n    \n    import com.google.protobuf.DescriptorProtos.DescriptorProto\n    import com.google.protobuf.DescriptorProtos.FieldDescriptorProto\n    import com.google.protobuf.DescriptorProtos.FileDescriptorProto\n    import com.google.protobuf.Descriptors.FileDescriptor\n    import com.google.protobuf.DynamicMessage\n    import com.google.protobuf.FieldMask\n    import dev.cel.bundle.CelFactory\n    import dev.cel.common.types.StructTypeReference\n    \n    // A minimal one-field message: `Msg { google.protobuf.FieldMask m = 1; }`.\n    val fileProto =\n        FileDescriptorProto.newBuilder()\n            .setName(\"repro.proto\")\n            .setSyntax(\"proto3\")\n            .addDependency(\"google/protobuf/field_mask.proto\")\n            .addMessageType(\n                DescriptorProto.newBuilder()\n                    .setName(\"Msg\")\n                    .addField(\n                        FieldDescriptorProto.newBuilder()\n                            .setName(\"m\")\n                            .setNumber(1)\n                            .setType(FieldDescriptorProto.Type.TYPE_MESSAGE)\n                            .setTypeName(\".google.protobuf.FieldMask\")\n                            .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)\n                    )\n            )\n            .build()\n    \n    val fileDescriptor =\n        FileDescriptor.buildFrom(fileProto, arrayOf(FieldMask.getDescriptor().file))\n    val msgDescriptor = fileDescriptor.findMessageTypeByName(\"Msg\")\n    \n    val cel =\n        CelFactory.plannerCelBuilder()\n            .addMessageTypes(msgDescriptor)\n            .addVar(\"msg\", StructTypeReference.create(\"Msg\"))\n            .build()\n    \n    // `msg.m.paths` selects the repeated `paths` field of the FieldMask.\n    val ast = cel.compile(\"msg.m.paths\").ast\n    val program = cel.createProgram(ast)\n    \n    val msg =\n        DynamicMessage.newBuilder(msgDescriptor)\n            .setField(\n                msgDescriptor.findFieldByNumber(1),\n                FieldMask.newBuilder().addPaths(\"a\").addPaths(\"b\").build()\n            )\n            .build()\n    \n    val result = program.eval(mapOf(\"msg\" to msg))\n    println(\"msg.m.paths  -\u003e  $result\")\n    check(result == listOf(\"a\", \"b\")) { \"expected [a, b]\" }\n    println(\"OK\")\n    ```\n\n    Throws `dev.cel.runtime.CelEvaluationException: evaluation error at \u003cinput\u003e:5: Error resolving field 'paths'. Field selections must be performed on messages or maps.`. Potential fix: https://github.com/google/cel-java/pull/1074\n\n**Additional context**\nFor the full context see https://github.com/bufbuild/protovalidate-java/pull/202 and https://github.com/open-toast/protokt/pull/402\n","author":{"url":"https://github.com/andrewparmet","@type":"Person","name":"andrewparmet"},"datePublished":"2026-06-02T16:11:59.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/1075/cel-java/issues/1075"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:4521687c-c5c8-21da-a463-60e48d3cb906
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idA7B0:14011B:2D5A59C:3F54921:6A4F66C8
html-safe-nonce02b2db2e881e1a9882e0e0889e70dd15ee8ed16dad55a3d2bef14dc70af82394
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBN0IwOjE0MDExQjoyRDVBNTlDOjNGNTQ5MjE6NkE0RjY2QzgiLCJ2aXNpdG9yX2lkIjoiNzgxNDAwNDUwOTMwMzA3MjQ1NiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac93c6675a601ff98b431f9b65c4f10bf4320b3c1a409cf7afbe8636fba1306245
hovercard-subject-tagissue:4573087665
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/cel-expr/cel-java/1075/issue_layout
twitter:imagehttps://opengraph.githubassets.com/73e235680342f5e7e176d3e9ee52201c053c27184784f401901cc1679bf42d36/cel-expr/cel-java/issues/1075
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/73e235680342f5e7e176d3e9ee52201c053c27184784f401901cc1679bf42d36/cel-expr/cel-java/issues/1075
og:image:altDescribe the bug My motivation is to build support for protokt (alternate protobuf codegen + runtime) in protovalidate-java, which uses CEL. I think I've encountered two independent bugs in the pla...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameandrewparmet
hostnamegithub.com
expected-hostnamegithub.com
Noneb92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9
turbo-cache-controlno-preview
go-importgithub.com/cel-expr/cel-java git https://github.com/cel-expr/cel-java.git
octolytics-dimension-user_id186625994
octolytics-dimension-user_logincel-expr
octolytics-dimension-repository_id587078119
octolytics-dimension-repository_nwocel-expr/cel-java
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id587078119
octolytics-dimension-repository_network_root_nwocel-expr/cel-java
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release4b249b445842943ed31549e027f57a8ade9881ed
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/cel-expr/cel-java/issues/1075#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fcel-expr%2Fcel-java%2Fissues%2F1075
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fcel-expr%2Fcel-java%2Fissues%2F1075
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=cel-expr%2Fcel-java
Reloadhttps://github.com/cel-expr/cel-java/issues/1075
Reloadhttps://github.com/cel-expr/cel-java/issues/1075
Reloadhttps://github.com/cel-expr/cel-java/issues/1075
Please reload this pagehttps://github.com/cel-expr/cel-java/issues/1075
cel-expr https://github.com/cel-expr
cel-javahttps://github.com/cel-expr/cel-java
Notifications https://github.com/login?return_to=%2Fcel-expr%2Fcel-java
Fork 38 https://github.com/login?return_to=%2Fcel-expr%2Fcel-java
Star 273 https://github.com/login?return_to=%2Fcel-expr%2Fcel-java
Code https://github.com/cel-expr/cel-java
Issues 8 https://github.com/cel-expr/cel-java/issues
Pull requests 16 https://github.com/cel-expr/cel-java/pulls
Actions https://github.com/cel-expr/cel-java/actions
Projects https://github.com/cel-expr/cel-java/projects
Security and quality 0 https://github.com/cel-expr/cel-java/security
Insights https://github.com/cel-expr/cel-java/pulse
Code https://github.com/cel-expr/cel-java
Issues https://github.com/cel-expr/cel-java/issues
Pull requests https://github.com/cel-expr/cel-java/pulls
Actions https://github.com/cel-expr/cel-java/actions
Projects https://github.com/cel-expr/cel-java/projects
Security and quality https://github.com/cel-expr/cel-java/security
Insights https://github.com/cel-expr/cel-java/pulse
[BUG] CelValue runtime path mishandles fixed32/fixed64 and FieldMask field accesshttps://github.com/cel-expr/cel-java/issues/1075#top
https://github.com/andrewparmet
andrewparmethttps://github.com/andrewparmet
on Jun 2, 2026https://github.com/cel-expr/cel-java/issues/1075#issue-4573087665
Handle FIXED32/FIXED64 as unsigned in ProtoCelValueConverter #1073https://github.com/cel-expr/cel-java/pull/1073
Preserve FieldMask as a message in the CelValue runtime path #1074https://github.com/cel-expr/cel-java/pull/1074
bufbuild/protovalidate-java#202https://github.com/bufbuild/protovalidate-java/pull/202
open-toast/protokt#402https://github.com/open-toast/protokt/pull/402
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.