Skip to content

Number the next release 0.1.0 - #15

Merged
lemuelroberto merged 6 commits into
emfga:mainfrom
lemuelroberto:release-0.1.0
Oct 30, 2026
Merged

lemuelroberto merged 6 commits into
emfga:mainfrom
lemuelroberto:release-0.1.0

Conversation

@lemuelroberto

Copy link
Copy Markdown
Member

Stacked on #14 (which sits on #13). Merge order: #13, #14, then this.

Bumps sql/000_install.sql from 0.0.3 to 0.1.0. 0.0.3 was numbered in #9 but never released, so it is skipped.

Why a minor bump and not a patch:

Both are behaviour changes, not just a re-statement of what 0.0.2 was validated against. The upgrade job from #12 will test 0.0.2 → 0.1.0 on this PR.

The core scripts enable "every overload, type and macro registered
so far" in standard. On a fresh install that is the core alone,
because the extension scripts run afterwards. But the installer is
also the upgrade, and run over an installed schema the same sweep
picks up every extension's items and every consumer registration:
upgrading 0.0.2 in place put 139 extension overloads, 16 macros and
3 types into standard, plus the consumer's own overload. The suite
stayed green, because a wider env breaks no corpus case -- which is
exactly the failure CLAUDE.md warns about.

The sweep now takes only rows no env claims yet whose implementation
lives in the cel schema, and the installer drops from standard what
a shipped extension env also lists, repairing schemas already
reinstalled. A consumer row swept in earlier cannot be told from one
put in standard on purpose, so it stays. The upgrade check asserts
standard comes out of an upgrade as narrow as it went in.

The origin column of rds-distribution decision 7 is the general fix;
this guard is what the installer needs until it lands.
cel-go v0.33 added hasOnly, hasAny, hasAll and hasExactly as lists
library version 5. They are the sets library's contains / intersects /
equivalent spelled as list methods, which is the form an authorization
condition reaches for ("the token's scopes include all of these"),
so they are worth having rather than leaving the lists env a version
behind the reference.
base64.encodeUrl / decodeUrl arrived with encoders version 2. Tokens
and identifiers that reach a policy are usually base64url, and
re-alphabetising them in CEL by hand is error-prone. The rest of
version 2 (json and yaml) is deliberately left out; see
docs/CONFORMANCE.md.
first(), last(), optional.unwrap and unwrapOpt (version 2) had never
been registered -- the oracle enabled them, but no corpus case calls
them, so nothing noticed. optional.hasValue(v) is version 3. optMap /
optFlatMap already expanded the way version 4 does, binding a
non-identifier target once, so only the comment changes.
The corpus exercises a fraction of each extension library, and that
is how the optionals list helpers went missing unseen: the oracle
declared them, no case called them. TestLibraryOverloads now compares
each env's registry rows with the overload ids cel-go declares and
fails on any gap not named in a printed known-missing list;
TestLibraryCases runs the functions the corpus never reaches through
both implementations with cel-go's outcome as the expectation.

With that in place the oracle drops the version pins on lists and
optionals. encoders stays held at version 2: json.encode / json.parse
and the yaml functions are not implemented, and the reasons are in
docs/CONFORMANCE.md.
The release adds functions to three extension libraries and fixes
how a reinstall treats the standard env -- new behaviour, not a
re-statement of 0.0.2 -- so it takes a minor number. 0.0.3 was never
released; the version moves straight past it.
@lemuelroberto
lemuelroberto merged commit 1db81b6 into emfga:main Oct 30, 2026
3 checks passed
@lemuelroberto
lemuelroberto deleted the release-0.1.0 branch October 30, 2026 01:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant