mod: Ext 3 — human-readable proof explanation (mod/explain), 164/164
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
mod/explain renders a decision's proof tree into legible text: action + rule,
evidence line, and each derivation goal with [proved]/[unproved] and the
unification bindings that satisfied it (e.g. {B=ann, N=3, S=dave}). Pure SX over
the Phase-2 proof data — the audit trail's 'why' made readable. +10 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` → **154/154** (roadmap done + extensions in progress)
|
||||
`bash lib/mod/conformance.sh` → **164/164** (roadmap done + extensions in progress)
|
||||
|
||||
## Ground rules
|
||||
|
||||
@@ -142,11 +142,20 @@ lib/mod/fed.sx
|
||||
`(: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`)
|
||||
- [x] **Ext 3 — proof explanation** (`lib/mod/explain.sx`, +10). `mod/explain`
|
||||
renders a decision into a readable "why": action + rule, evidence line, and the
|
||||
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}`.
|
||||
- [ ] Ext 4 — report linking / dedup (relations between reports about one subject)
|
||||
|
||||
## Progress log
|
||||
|
||||
- **Ext 3 — proof explanation, 164/164** (+10). `mod/explain` turns the Phase-2
|
||||
proof tree into human-readable text — the audit trail's "why" made legible. Pure
|
||||
SX over existing decision data; no engine change. Renders unification bindings
|
||||
inline (`{B=ann, N=3, S=dave}`) so a moderator sees exactly which facts proved
|
||||
the decision.
|
||||
- **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
|
||||
|
||||
Reference in New Issue
Block a user