mod: Ext 18 — ergonomic defrule / ruleset surface, 375/375
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 34s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 34s
mod/defrule collects trailing conditions via &rest; mod/ruleset assembles rules. No macro needed — conditions are plain data, fn supports &rest here. Produces structurally identical rules to mk-rule (asserted) and works in the engine unchanged. Closes the roadmap's original defrule surface. +11 tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,7 @@ federation extension.
|
||||
|
||||
## Status (rolling)
|
||||
|
||||
`bash lib/mod/conformance.sh` → **364/364** (roadmap + 17 extensions complete)
|
||||
`bash lib/mod/conformance.sh` → **375/375** (roadmap + 18 extensions complete)
|
||||
|
||||
## Ground rules
|
||||
|
||||
@@ -147,6 +147,11 @@ lib/mod/fed.sx
|
||||
derivation goal-by-goal with `[proved]`/`[unproved]` marks and unification
|
||||
bindings. E.g. `Report rc: escalate (rule: repeated-escalate)` … `[proved]
|
||||
report(rc, B, S), report_count(S, N), N >= 3 {B=ann, N=3, S=dave}`.
|
||||
- [x] **Ext 18 — ergonomic defrule / ruleset** (`lib/mod/defrule.sx`, +11). The
|
||||
roadmap's `(defrule …)` surface, done with `&rest` variadics (no macro needed —
|
||||
conditions are already plain data): `mod/defrule` collects trailing conditions,
|
||||
`mod/ruleset` assembles rules. Produces structurally identical rules to `mk-rule`
|
||||
and works in the engine unchanged.
|
||||
- [x] **Ext 17 — per-domain policy registry** (`lib/mod/policies.sx`, +14).
|
||||
`mod/register-policy! domain rules` + `mod/decide-in domain r reports` give each
|
||||
rose-ash domain (blog/market/events/…) its own rule set; unregistered domains
|
||||
@@ -229,6 +234,11 @@ lib/mod/fed.sx
|
||||
|
||||
## Progress log
|
||||
|
||||
- **Ext 18 — ergonomic defrule / ruleset, 375/375** (+11). Closes the roadmap's
|
||||
original `defrule` surface. `fn` supports `&rest` here, and conditions evaluate
|
||||
to plain data, so no macro is needed — variadic functions give the ergonomics
|
||||
safely. Equivalence to `mk-rule` is asserted, so it's pure sugar with no new
|
||||
semantics.
|
||||
- **Ext 17 — per-domain policy registry, 364/364** (+14). Multi-tenant policy:
|
||||
the engine already took `rules` as a parameter, so domain-scoping is just a
|
||||
registry + a default fallback — no engine change. Makes the whole policy
|
||||
|
||||
Reference in New Issue
Block a user