feat(rust): notifications and engagement (phase 10, protocol 7) #13
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/phase-10-engagement"
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?
What & why
Phase 10 (R7): the engagement set, as decided in
docs/modules/rust/PLAN.md§25 (D59–D68). Pairs with Rust-Plugins and Rust-Linkfeat/phase-10-engagement(protocol 7) and docsdocs/rust-phase-10.server/engagement/).rust.base.destroyed, ceilingowner) goes to everyone authorised on the tool cupboard: one emit per linked person, withownerUserIdset (D59).ownerOnline. The seeded rule's condition is what makes it "offline only" (D61)./health. A hung game, or an unloaded bridge, with the sidecar still up no longer reads as online, names nobody as online, and doesn't move "last seen".title/intro, so core's generic bodies say which server, clan or player (found by the live walk).engagement-triggers.jsonis the committed freeze, checked in CI.No announce leg and no post hook (D62 amends R7).
How it was tested
npm testinserver/: 234 pass. Client: 41 pass.check:imports,check:bundle,check:swaggerandcheck:engagementall pass. The new check was broken both ways to prove it's live: a changed label fails, CRLF-only passes.mainon a fresh database, the protocol-7 sidecar inside the Oxide rig, and a rig-only helper that runs the realOnEntityDeathpath:Checklist
AI-assisted contributions (required)
Claude Code (Claude Opus 5.5). AI-authored commits carry aCo-Authored-Bytrailer.License
🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
The live walk rendered a generic in-app notice as "A server came online. A server's game started..." Core's structural projection falls back to the trigger's label and description when the payload has no title, and on a multi-server site that never says which server. Core's rule is that the payload wins, so every trigger now declares `title` and `intro`, and the emitter writes the sentence ("Oxide rig is online"). An operator's own template can still ignore it and use the parts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY