picatz / picatz/flowstate

optionals: the construction surface — optional.of, ofNonZeroValue, optional.none, and friends, after traversal lands

Open
#476 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

design engine enhancement kind/design-record
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/orValue semantics may change when construction lands.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.