- Cancelled ops: roll-call embed edited to the cancelled state (buttons
removed) plus a standalone cancellation notice in the ops channel;
clears the roll-call markers and sets the new discordCancelledAt
marker on the mission.
- Rescheduled ops (Cancelled back to Ready/Scheduled, future start):
immediate announcement embed with the new start time and when the
fresh roll-call goes up (usual 3-day lead, or live-in-channel when
already due), then clears the marker so the normal flow posts a new
roll-call. Prior RSVPs carry over.
- Hidden bot-managed discordCancelledAt field on Missions + migration.
- Bot embed poll loop handles both transitions idempotently.
Sends one-shot DMs once a mission is evaluable asking members to rate their leadership (and leaders to rate subordinates), gated by a new evaluationRemindersSentAt marker on Missions with its migration. Adds the /remind-evaluations staff command (manual trigger/sweep) and DISCORD_EVALUATION_POLL_MS config; updates bot and root docs.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Add a scope field to BotCommand so /signup, /link and /ping register globally (available in DMs — guild-scoped commands never appear there) while /announce stays guild-only. Migrate ephemeral replies to MessageFlags and make the /signup welcome message resilient to blocked DMs.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>