docs(engagement): MODULE_API 1.8.0, the UO trigger catalogue, the news publish path #195
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/engagement-phase-11a"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The documentation half of Phase 11a — website#177 and Module-uo#22. Three files, each carrying one obligation from §6.0b's Phase 11a row.
Independent of docs#194 (the six decisions), which touches only
ENGAGEMENT.md. Either can merge first.website/MODULE_API.md→ 1.8.0A seventh audience ceiling,
admin, as a child ofstaff. One addition and no removal, so minor: every declaration valid under 1.7.0 is valid now, no stored value changes, andmodule-uo's range still resolves.§2.4's ceiling bullet now names seven values rather than six, and says the thing a module author actually needs beyond the new name:
adminis the only pair in the whole lattice with real containment — every admin is staff, which is exactly what every other pair of branches lacks — so it is the only placepermitsis true between two values belowauthenticated.permits('staff', 'admin')holds; the reverse does not, and neither direction holds againstowner,membersorsubscribers.Also corrects two §2.3 rows that had gone stale rather than wrong:
ctx.inbox.pushhas not thrown since Phase 7, and both engagement members now name the consumer that actually calls them.modules/uo/API.mdgains §5 — the full trigger catalogue§6.0b asked for this in as many words: "the full trigger catalogue, its audiences and its ceilings, not one entry". It is a §5 rather than a route table because it is not an HTTP surface — and it belongs on this page anyway, because it is the other thing the module registers with core and the one an operator interacts with by name.
uo.cheat.detectedatstaffis the declaration the lattice was written for; the three operator-facing ones sit atadminbecausestaffmeans admin, editor and moderator.uo.vendor.sale, silently dormant on a shard that declined it) or a v5 overlay, including why an absentestimatedCollapsemeans "not knowable" and never "not yet read".membersaudience.membersaudience the guild triggers use.website/BACKEND_DESIGN.md— the news publish pathIt described a direct
pushDispatch.publish('news.post', …)from the create/publish-post path. That call is gone. It is an emit through the engagement engine now, so news push rides a rule like every other channel, and core seeds that ruleenabled = 0.The new note states it as the operator-visible upgrade step it is (news push stops until the rule is switched on), names the separate one-shot settings key and why it exists, and — as importantly — states what did not change: the announce legs and the post hooks are different kinds of thing and still fire exactly as they did.
AI disclosure
Co-Authored-By: Claudetrailer.🤖 Generated with Claude Code
The documentation half of Phase 11a (website#177, Module-uo#22). Three files, each carrying one obligation from 6.0b's Phase 11a row. **MODULE_API.md -> 1.8.0.** A seventh audience ceiling, `admin`, as a child of `staff`. One addition, no removal, so minor -- every declaration valid under 1.7.0 is valid now and no stored value changes. 2.4's ceiling bullet now names seven values rather than six, and says the thing a module author actually needs: `admin` is the ONLY pair in the whole lattice with real containment, so `permits('staff','admin')` holds and it is the only place `permits` is true between two values below `authenticated`. Also corrects two 2.3 rows that were stale rather than wrong: `ctx.inbox.push` has not thrown since Phase 7, and both members now name the consumer that actually calls them. **modules/uo/API.md gains 5**, the full trigger catalogue -- which 6.0b asked for in as many words ("the full trigger catalogue, its audiences and its ceilings, not one entry"). The 24 triggers grouped by ceiling with the reason for each ceiling; the four rows that deliberately do NOT ship with their recorded reasons; the two that need a patch tier or a v5 overlay; the three things a rule cannot express and are therefore done in the mapper; the three registered audiences; and the ingest ORDERING, which is load-bearing rather than incidental. **BACKEND_DESIGN.md -- the news publish path.** It described a direct `pushDispatch.publish('news.post', ...)` from the create/publish-post path. That call is gone: it is an emit through the engagement engine now, so news push rides a rule, and core seeds that rule disabled. The note says so as an operator-visible upgrade step, names the separate one-shot settings key and states what did NOT change -- the announce legs and the post hooks still fire exactly as they did. Co-Authored-By: Claude <noreply@anthropic.com>