Skip to content

Releases: faustbrian/go-rule-engine

github.com/faustbrian/go-rule-engine v1.0.0

Choose a tag to compare

@faustbrian faustbrian released this 26 Aug 05:50

1.0.0 - 2026-08-25

Fixed

  • Bind the reviewed zero-mutant jsonast delegation 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-engine identity 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

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

Choose a tag to compare

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/temporal identity while preserving its documented API and behavior.
  • Refresh local v0.0.0 owned-module checksums after dependency manifests and
    release notes were normalized; runtime behavior and public APIs are
    unchanged.
  • Rename the unpublished module from adapters/gotemporal to
    adapters/temporal so the path identifies its target without a redundant
    language prefix.
  • Return encoding errors from Instant and Period so 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

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

Choose a tag to compare

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
    canonical quantity: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/measurement identity while preserving its documented API and behavior.

  • Rename the unpublished module from adapters/gomeasurement to
    adapters/measurement so 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 by Quantity.

Release integrity

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

Choose a tag to compare

@faustbrian faustbrian released this 26 Aug 06:07

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 and decimal_* 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/math identity while preserving its documented API and behavior.

  • Rename the unpublished module from adapters/gomath to adapters/math so
    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 0 so every value emitted by
    Decimal is 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

Verify the checksum attestation with:

ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS