Repository navigation
Description
Part of the worlds design program: #5955. Wave-2 follow-up from the prior-art research (Lane B item 24); parent topic issue: #5973. Research source: workspace/scratch/worlds-capabilities-brief-2026-11-04/prior-art-research.md.
Finding that shapes this
Every successful cross-community moderation sharing system is data, not code: Discord AutoMod rules are structured per-guild API objects with no first-party import/export or cross-guild subscription (https://docs.discord.com/developers/resources/auto-moderation); the reusable unit that actually emerged in third-party bots is a curated feed (cross-server network blacklists — scam domains, known raiders) plus a policy preset that compiles down to platform rules (Paladin: https://www.shapedimage.com/paladin-docs.html ; Azra: https://www.azrabot.com/docs/moderation.html). Reddit AutoModerator snippets are reuse-by-copy-paste — forks silently, never updates downstream; subscription/feed beats copy-paste for anything that must stay current. Rules-as-code packs have no successful mainstream precedent — and Garry's Mod addons (full-trust Lua, recurring malicious Workshop backdoors) are the negative evidence for executable shared moderation.
Scope
#5973 designs moderation as parameterized libraries; this follow-up pins the pack as a data format:
- Static rules (the world's own policy text).
- Feed subscriptions (sibling feed-protocol follow-up under id: design program: worlds — advanced Roc libraries, capabilities, permissions, dynamic user functions, licensing (2026-11-04 brief) #5955).
- Parameters: report threshold for auto-quarantine, moderator/reviewer set, local exemption lists — kept separate from the shared core so adopting a pack doesn't surrender local judgment (this is Drew's "same thing, different moderators, different threshold" as a format property).
- Format in our manifest language (KDL profile, id: research/design: fork a Rust KDL stack for ID — universal + multiple annotations, upstream archaeology, fork-base selection (extends #5688) #5753) unless there's a reason otherwise.
Done looks like
A pack-format spec (fields, versioning, parameter surface) #5973's interface design can adopt.
Activity
developing-today commentedon Nov 5, 2026
CODE-1671
dezren39 commentedon Nov 5, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 5, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 5, 2026
Agent note - handed off
ses_e5e5345c71affeNlh76LqR5Ltodezren39 commentedon Nov 5, 2026
Triage — task 10371 (2026-11-05)
Verdict: live, well-scoped design issue; no pack-format spec has landed. Keep #6005 OPEN.
Evidence checked against current main (f0fa320, equal to origin/main):
Fix path: one dated design note under doc/_design_moderation_pack_format/ defining the pack’s static policy core, versioning/compatibility, feed references aligned with #6006, and a separate per-world parameter surface (quarantine threshold, moderator/reviewer set, local exemptions). Make the serialization/profile choice explicit rather than implying KDL is already implemented. Keep the feed protocol itself in #6006 and preset tier values in #6007.
Ordering: settle or explicitly coordinate the pack/library interface and parameter names with #5973 (and its #5958 capability boundary); align the serialization choice with #5753; reuse #6006’s signed-feed contract. #6007 should define tier defaults against the resulting parameter names, or state draft names if it proceeds concurrently. These are design dependencies, not a reason to split #6005 or close it. No follow-up task is needed: #6005 itself is the design deliverable.