Releases: faustbrian/go-rule-engine
Release list
github.com/faustbrian/go-rule-engine v1.0.0
1.0.0 - 2026-08-25
Fixed
- Bind the reviewed zero-mutant
jsonastdelegation facade to its exact
standalone source identity.
Changed
-
Upgrade the competitor benchmark's Git, cryptography, and network
dependencies to current security-fixed releases. -
Exclude intentional nested modules from root local-proxy archives so local,
bootstrap, CI, and public module checksums describe the same source
boundary. -
Track the pinned documentation-tool lockfile so clean CI checkouts install
the exact validated cspell dependency. -
Reconcile standalone dependency checksums against deterministic current
module archives so CI, local verification, and release consumers resolve
identical content. -
Harden standalone documentation validation with deterministic spelling and
link checks, package-specific documentation gates, and repository-local
contributor guidance.
Documentation
- Link the package README to the repository-wide Golib documentation portal.
Changed
- Publish the module from its standalone
github.com/faustbrian/go-rule-engineidentity while preserving its documented API and behavior. - Delegate core and adapter mutation checks to the canonical exact-100
repository runner instead of package-specific thresholds and exclusions. - Keep standalone module tidiness in the release gate instead of requiring an
unpublished canonical tag before running local competitor benchmarks. - Verify optional domain adapters through their independently attributable
module gates instead of duplicating them in the core integration gate. - Let isolated compilers canonically serialize and parse definitions that use
their registered custom operators while preserving built-in-only package
helpers.
Added
- Typed immutable facts, propositions, compiler, and execution plans.
- Deterministic conflict strategies and bounded forward chaining.
- Canonical JSON AST serialization and SHA-256 hashing.
- Explicit typed operators, fact resolvers, and bounded plan caching.
- Truth-table, hostile-input, race, fuzz, and benchmark suites.
Release integrity
- Source commit:
d17ad077081cd8d0c8b87f50083d53936b767039 - Exact-head CI: https://github.com/faustbrian/go-rule-engine/actions/runs/32916459300
- Release dry-run: urn:sha256:f58e8a2e24844bd6f651e8033e95d2c248fb4e52f8e066d8bb18dd417e4db650
- Assets include a CycloneDX SBOM, SLSA v1 in-toto provenance, and SSH-signed checksums.
Verify the checksum attestation with:
ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS
github.com/faustbrian/go-rule-engine/adapters/temporal v1.0.0
1.0.0 - 2026-08-25
Documentation
- Link the package README to the repository-wide Golib documentation portal.
Added
- Provide deterministic, caller-registered temporal operators for exact period
equality, ordering, overlap, period containment, and instant membership. - Document the persisted encoding, bound-sensitive relation semantics, UTC and
timestamp policies, adoption, compatibility, migration, and operational
limitations. - Add an allocation-aware benchmark comparing exact tagged period membership
with direct temporal membership. - Add bounded fuzz coverage for hostile period and instant encodings with
interval-membership oracle checks. - Assert that otherwise valid period and instant payloads are rejected when
their required temporal type tags are absent.
Changed
- Publish the module from its standalone
github.com/faustbrian/go-rule-engine/adapters/temporalidentity while preserving its documented API and behavior. - Refresh local
v0.0.0owned-module checksums after dependency manifests and
release notes were normalized; runtime behavior and public APIs are
unchanged. - Rename the unpublished module from
adapters/gotemporalto
adapters/temporalso the path identifies its target without a redundant
language prefix. - Return encoding errors from
InstantandPeriodso RFC 3339 values outside
the supported four-digit year range cannot be persisted silently. - Evaluate equality, overlap, and containment as exact sets, preserving
open/closed endpoints, singleton intervals, and empty intervals. - Reject persisted timestamps that would lose precision beyond nanoseconds and
bound parser work to the largest supported encoding. - Parse persisted offsets without consulting the ambient local timezone and
return canonical UTC instants for every accepted timestamp. - Reject hostile persisted values without echoing their contents in errors.
- Require owned sibling modules at local
v0.0.0; clean external consumers
pin each module to an exact main pseudo-version. - Refresh owned-module checksums against the final consolidated archives.
- Normalize standalone module metadata against the canonical owned dependency
graph, including complete checksums for clean consumer resolution. - Document the exported temporal operator-name contract.
Distribution
- Include the canonical MIT licence in the independently published module.
Compatibility
- Added a pinned module export baseline so incompatible public API changes
fail the canonical repository gate.
Release integrity
- Source commit:
d17ad077081cd8d0c8b87f50083d53936b767039 - Exact-head CI: https://github.com/faustbrian/go-rule-engine/actions/runs/32916459300
- Release dry-run: urn:sha256:7b6e8e6801b0b06dd95e0e98d379439508ec0611008a7f185c8ef9129afd9cbf
- Assets include a CycloneDX SBOM, SLSA v1 in-toto provenance, and SSH-signed checksums.
Verify the checksum attestation with:
ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS
github.com/faustbrian/go-rule-engine/adapters/measurement v1.0.0
1.0.0 - 2026-08-25
Documentation
- Link the package README to the repository-wide Golib documentation portal.
Breaking
- Replace the ambiguous unversioned
quantity:<amount> <unit>value with the
canonicalquantity:v1|<amount>|<unit>encoding. Persisted values must be
regenerated from validated measurement quantities.
Added
- Classify invalid and incompatible quantities with stable adapter errors while
retaining owned measurement, math, and context causes. - Document encoding, exact conversion, dimensions, operators, limits, API,
examples, adoption, security, FAQ, compatibility, and migration.
Security
- Bound tagged values, reject noncanonical and unknown identities, preserve
exact conversion, and avoid including supplied amounts or units in adapter
diagnostics.
Distribution
- Include the canonical MIT licence in the independently published module.
Compatibility
- Added a pinned module export baseline so incompatible public API changes
fail the canonical repository gate.
Changed
-
Publish the module from its standalone
github.com/faustbrian/go-rule-engine/adapters/measurementidentity while preserving its documented API and behavior. -
Rename the unpublished module from
adapters/gomeasurementto
adapters/measurementso the path identifies its target without a redundant
language prefix. -
Require owned sibling modules at local
v0.0.0; clean external consumers
pin each module to an exact main pseudo-version. -
Refresh owned-module checksums against the final consolidated archives.
-
Normalized standalone module metadata against the canonical owned dependency
graph, including complete checksums for clean consumer resolution. -
Documented the exported quantity operator-name contract.
Added
- Add an allocation-aware benchmark for exact cross-unit quantity comparison.
- Add bounded fuzz coverage that cross-checks tagged quantity acceptance
against the canonical measurement parser. - Add exhaustive unit and incompatible-dimension matrices, ordering properties,
hostile pair fuzzing, concurrent metadata isolation, and canonical rule
persistence round trips.
Fixed
- Reject negative-zero tag spellings that do not match the canonical decimal
representation emitted byQuantity.
Release integrity
- Source commit:
d17ad077081cd8d0c8b87f50083d53936b767039 - Exact-head CI: https://github.com/faustbrian/go-rule-engine/actions/runs/32916459300
- Release dry-run: urn:sha256:1844a9a640aab4a974b0801d16ac9256575b7c4e6d44f536b8f97b867e993cf0
- Assets include a CycloneDX SBOM, SLSA v1 in-toto provenance, and SSH-signed checksums.
Verify the checksum attestation with:
ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS
github.com/faustbrian/go-rule-engine/adapters/math v1.0.0
1.0.0 - 2026-08-25
Documentation
- Link the package README to the repository-wide Golib documentation portal.
Breaking
- Replace the unversioned
decimal:value tag anddecimal_*operator names
with the collision-resistant v1 persistence contracts documented in the
module migration guide.
Added
- Add caller-selected decimal limits with stable error identities for invalid
tags, noncanonical payloads, decimal syntax, resource limits, and
cancellation. - Document encoding, exactness, operators, composition, adoption, security,
compatibility, migration, and common integration questions.
Distribution
- Include the canonical MIT licence in the independently published module.
Compatibility
- Added a pinned module export baseline so incompatible public API changes
fail the canonical repository gate.
Changed
-
Publish the module from its standalone
github.com/faustbrian/go-rule-engine/adapters/mathidentity while preserving its documented API and behavior. -
Rename the unpublished module from
adapters/gomathtoadapters/mathso
the path identifies its target without a redundant language prefix. -
Require owned sibling modules at local
v0.0.0; clean external consumers
pin each module to an exact main pseudo-version. -
Refresh owned-module checksums against the final consolidated archives.
-
Normalized standalone module metadata against the canonical owned dependency
graph, including complete checksums for clean consumer resolution. -
Documented the exported decimal operator-name contract.
Added
- Add an allocation-aware benchmark for exact decimal operator evaluation.
- Add bounded fuzz coverage that cross-checks tagged decimal acceptance
against the canonical decimal parser. - Add canonical RuleSet round-trip compatibility, cross-engine race isolation,
hostile-value redaction, unequal-operand fuzzing, and exact parser benchmarks.
Fixed
- Canonicalize positive-exponent zero as
0so every value emitted by
Decimalis accepted by the v1 operators. - Reject digit input when its configured parser budget is exhausted, before an
attacker-sized coefficient string can be allocated.
Release integrity
- Source commit:
d17ad077081cd8d0c8b87f50083d53936b767039 - Exact-head CI: https://github.com/faustbrian/go-rule-engine/actions/runs/32916459300
- Release dry-run: urn:sha256:8073d01413fa1c82de533c9419788983c976c95e02d843b330d40e450efa64ff
- Assets include a CycloneDX SBOM, SLSA v1 in-toto provenance, and SSH-signed checksums.
Verify the checksum attestation with:
ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS