optionals: the construction surface — optional.of, ofNonZeroValue, optional.none, and friends, after traversal lands
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 9
- Forks
- 0
- Avg merge
- 3h 3m
- Merged PRs (30d)
- 509
Description
#412's slice 1 deliberately lands traversal + orValue() only — the shapes the 68-site corpus actually uses. The owner's scope decision (2026-08-11) keeps the rest of CEL's optional-types surface on the table rather than dropped: this issue is its home.
What remains
The construction half of the extension: optional.of(), optional.ofNonZeroValue(), optional.none(), optOrValue/or() chaining between optionals, and optional-aware map/list construction ({?key: value}, [?value]).
The bar it waits behind
Same as everything in the language: corpus evidence. No shipped example or corpus workload currently constructs an optional — they read possibly-absent data, which is what slice 1 covers. When a corpus file wants to produce an absent-or-present value (a value: step that conditionally yields, a declared output that may be withheld), that file is the acceptance target and this issue activates.
Constraints already settled by #412's decisions
- The edition carries it — construction arrives as an additive extension under the same (or a later) edition, never a second dialect axis.
- Cost-bounded like everything else: construction functions meter under
cel.CostLimit, with a test proving it, before any of them are reachable from a Flowfile. - Additive only: nothing in slice 1's traversal/
orValuesemantics may change when construction lands.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing #412's slice 1 decisions and the corpus evidence described in this issue. Identify a corpus workload that constructs an optional, then use it as the acceptance target. Done means the construction functions and optional-aware collections are additive, reachable under the edition, and covered by a CEL.CostLimit test before Flowfile use.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100