mod: Ext 2 — weighted/aggregate scoring (:score-at-least), 154/154
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 52s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 52s
Report :signals ({:kind :weight}) project to signal(Id, 'kind', weight) facts;
condition (:score-at-least N) compiles to aggregate_all(sum(W), signal(Id,_,W),T),
T >= N. Low-confidence signals accumulate past a threshold via genuine Prolog
arithmetic aggregation. Default policy untouched — proven via custom rule sets.
+8 extension 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` → **146/146** (roadmap done + extensions in progress)
|
||||
`bash lib/mod/conformance.sh` → **154/154** (roadmap done + extensions in progress)
|
||||
|
||||
## Ground rules
|
||||
|
||||
@@ -137,12 +137,23 @@ lib/mod/fed.sx
|
||||
prefix `\+` operator). Closed-world example: "hide spam UNLESS author verified".
|
||||
Default policy untouched — demonstrated via custom rule sets, so all 132 base
|
||||
tests stay green.
|
||||
- [ ] Ext 2 — weighted/aggregate evidence scoring + threshold rules
|
||||
- [x] **Ext 2 — weighted/aggregate scoring** (+8). Report `:signals` ({:kind
|
||||
:weight}) project to `signal(Id, 'kind', weight)` facts; condition
|
||||
`(:score-at-least N)` → `aggregate_all(sum(W), signal(Id, _, W), T), T >= N`.
|
||||
Many weak signals accumulate past a threshold — genuine Prolog arithmetic
|
||||
aggregation. Default policy untouched.
|
||||
- [ ] Ext 3 — human-readable proof explanation (render a decision's `:goals`)
|
||||
- [ ] Ext 4 — report linking / dedup (relations between reports about one subject)
|
||||
|
||||
## Progress log
|
||||
|
||||
- **Ext 2 — weighted/aggregate scoring, 154/154** (+8). `:signals` + the
|
||||
`(:score-at-least N)` condition push aggregation into Prolog
|
||||
(`aggregate_all(sum(W), …)`), so low-confidence signals can accumulate to a
|
||||
takedown. The schema's report-rebuild helpers (`report*` / `with-*`) now thread
|
||||
six fields; each addition stays non-breaking because empty collections project
|
||||
to empty fact blocks. Default policy and its 132 tests untouched (proven via
|
||||
custom rule sets).
|
||||
- **Ext 1 — negation-as-failure, 146/146** (+14). `:attr` and `:not` conditions
|
||||
give the policy closed-world reasoning. The substrate's negation is a functor
|
||||
(`not(Goal)`), not the ISO prefix `\+` operator (that doesn't parse here) —
|
||||
|
||||
Reference in New Issue
Block a user