Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 32s
mod/decision->activity maps a decision to a moderation verb (remove→Delete, ban→Block, hide/escalate→Flag, keep→no activity) shaped like an AP activity, preserving the precise action. mod/decisions->activities batch-exports dropping keeps. With wire (Ext 14) + fed trust (Phase 4) the federated moderation path is end-to-end: decide → activity/wire → peer → trust-gate → apply. +17 tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
96 lines
3.0 KiB
Plaintext
96 lines
3.0 KiB
Plaintext
;; lib/mod/tests/activity.sx — Ext 16: ActivityPub-shaped decision export.
|
|
|
|
(define mod-ap-count 0)
|
|
(define mod-ap-pass 0)
|
|
(define mod-ap-fail 0)
|
|
(define mod-ap-failures (list))
|
|
|
|
(define
|
|
mod-ap-test!
|
|
(fn
|
|
(name got expected)
|
|
(begin
|
|
(set! mod-ap-count (+ mod-ap-count 1))
|
|
(if
|
|
(= got expected)
|
|
(set! mod-ap-pass (+ mod-ap-pass 1))
|
|
(begin
|
|
(set! mod-ap-fail (+ mod-ap-fail 1))
|
|
(append!
|
|
mod-ap-failures
|
|
(str name "\n expected: " expected "\n got: " got)))))))
|
|
|
|
;; ── action → AP verb ──
|
|
|
|
(mod-ap-test! "remove → Delete" (mod/action->verb "remove") "Delete")
|
|
(mod-ap-test! "ban → Block" (mod/action->verb "ban") "Block")
|
|
(mod-ap-test! "hide → Flag" (mod/action->verb "hide") "Flag")
|
|
(mod-ap-test! "escalate → Flag" (mod/action->verb "escalate") "Flag")
|
|
(mod-ap-test! "keep → nil (no activity)" (mod/action->verb "keep") nil)
|
|
|
|
;; ── single decision → activity ──
|
|
|
|
(define mod-ap-spam (mod/mk-report "r1" "a" "bob" "this is spam"))
|
|
(define
|
|
mod-ap-dec
|
|
(mod/decide-report mod-ap-spam (list mod-ap-spam) mod/default-rules))
|
|
(define mod-ap-act (mod/decision->activity mod-ap-dec "instance.example"))
|
|
|
|
(mod-ap-test! "activity type is Flag (hide)" (get mod-ap-act :type) "Flag")
|
|
(mod-ap-test! "activity object is report id" (get mod-ap-act :object) "r1")
|
|
(mod-ap-test!
|
|
"activity actor preserved"
|
|
(get mod-ap-act :actor)
|
|
"instance.example")
|
|
(mod-ap-test!
|
|
"activity preserves precise action"
|
|
(get mod-ap-act :action)
|
|
"hide")
|
|
(mod-ap-test! "activity carries rule" (get mod-ap-act :rule) "spam-hide")
|
|
(mod-ap-test!
|
|
"activity summary"
|
|
(get mod-ap-act :summary)
|
|
"moderation/hide via spam-hide")
|
|
|
|
;; ── keep produces no activity ──
|
|
|
|
(define mod-ap-clean (mod/mk-report "r2" "a" "b" "a fine post"))
|
|
(define
|
|
mod-ap-keep
|
|
(mod/decide-report mod-ap-clean (list mod-ap-clean) mod/default-rules))
|
|
(mod-ap-test!
|
|
"keep decision → nil activity"
|
|
(mod/decision->activity mod-ap-keep "x")
|
|
nil)
|
|
|
|
;; ── abuse → Delete ──
|
|
|
|
(define mod-ap-abuse (mod/mk-report "r3" "a" "b" "harassment here"))
|
|
(define
|
|
mod-ap-abuse-dec
|
|
(mod/decide-report mod-ap-abuse (list mod-ap-abuse) mod/default-rules))
|
|
(mod-ap-test!
|
|
"abuse decision → Delete activity"
|
|
(get (mod/decision->activity mod-ap-abuse-dec "x") :type)
|
|
"Delete")
|
|
|
|
;; ── batch export drops keeps ──
|
|
|
|
(define mod-ap-decisions (list mod-ap-dec mod-ap-keep mod-ap-abuse-dec))
|
|
(define mod-ap-acts (mod/decisions->activities mod-ap-decisions "inst"))
|
|
(mod-ap-test! "batch export drops the keep" (len mod-ap-acts) 2)
|
|
(mod-ap-test!
|
|
"batch export first is the Flag"
|
|
(get (first mod-ap-acts) :type)
|
|
"Flag")
|
|
(mod-ap-test!
|
|
"batch export second is the Delete"
|
|
(get (nth mod-ap-acts 1) :type)
|
|
"Delete")
|
|
(mod-ap-test!
|
|
"empty decisions → no activities"
|
|
(mod/decisions->activities (list) "inst")
|
|
(list))
|
|
|
|
(define mod-activity-tests-run! (fn () {:failures mod-ap-failures :total mod-ap-count :passed mod-ap-pass :failed mod-ap-fail}))
|