feat: value-gated direct rules, per-value cache keys, NOT negation; fix value-object checks
CI / test (push) Successful in 6m50s
CI / benchmark (push) Successful in 52s
CI / publish (push) Has been skipped

DirectRule and the direct-check fast path now enforce expectedValue from a DSL
literal (balance(user, 5)) or a per-check value-object override, closing a
silent over-grant where any edge of a value-carrying fact matched. Rule and
decision caches append :v<value> so different amounts never share a key.
NOT negation is applied after union/intersection/exclusion evaluation (the
only negation site was dead code in evaluateLogical), so NOT x now returns
1 - p instead of the raw possibility.
This commit is contained in:
John Dvorak
2026-08-03 20:26:57 -07:00
parent f6e3ae1922
commit 40fa1f8eb2
4 changed files with 73 additions and 7 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@arbiter/core",
"version": "1.0.6",
"version": "1.0.7",
"description": "Arbiter core engine: graph indices, relation/reachability, authorization rule evaluator, DSL/AST, condensed & sharded snapshots, and evidence fusion.",
"license": "ISC",
"author": "",