Egregore announce
Draft one concise group message. The request authorizes drafting, never
dispatch or artifact publication. Reuse sufficient EGREGORE_ORG_CONTEXT_V1;
do not repeat organizational retrieval merely to decorate the message.
Preserve quoted wording exactly. Otherwise use 2–5 lines: what changed, the
relevant branch/artifact when already authorized, and the requested action.
Notification consent and publication consent are separate. Never publish a
referenced artifact automatically; publication is a separate
SHARE workflow with its own source/destination approval.
Write the final draft to tmp/announce-message.md, then
make the file private and prepare one actor-bound Runtime plan:
chmod 600 tmp/announce-message.md
bash bin/notification.sh plan --kind group --message-file tmp/announce-message.md > tmp/announce-plan.json
Read the plan's identifier and digest:
jq -r '.plan_id, .digest' tmp/announce-plan.json
Use the printed values as {plan_id} and {digest}, respectively; quote
placeholders in single quotes when you use them in a command, and write any
single quote inside a value as '\''.
Read the exact preview fields from the saved plan:
jq -r '.org, .recipient, .channels, .deliveries, .message' tmp/announce-plan.json
Show one dedicated Send / Edit / Cancel checkpoint containing the exact
organization, group, every delivery/channel, and final message returned by the
plan. Edit cancels the old plan before creating a new one. Cancel calls:
bash bin/notification.sh cancel '{plan_id}'
Only a fresh Send response for that exact checkpoint authorizes:
bash bin/notification.sh approve \
'{plan_id}' '{digest}' APPROVE_EXACT_NOTIFICATION --out tmp/announce-approval.json
Use {plan_id} from the saved plan; the adapter reads the private approval
receipt from tmp/announce-approval.json without exposing its credential:
bash bin/notification.sh dispatch '{plan_id}' --approval-file tmp/announce-approval.json
Report the returned delivery receipt. Never retry from old approval, change a
destination, or fall back to another channel. Local instances without a
notification capability stop after preview and return the text for manual use.
The Runtime service owns ActorContext authorization, exact-plan binding,
transport, and content-free telemetry.
When to invoke
Draft, preview, and explicitly send an Egregore group announcement. Use for /announce, telling the team something, or notifying everyone—not a direct message or structured handoff.