Each dossier answers the same questions: what the process owns, how it selects targets, which Clash endpoint it calls, what it writes, what it emits, and what it deliberately leaves to another process.
The processes remain separate so each workload can be enabled, stopped, and observed independently. They share PostgreSQL contracts, a Valkey event stream, and the availability gate; they do not share in-process state.
| Process | Dossier |
|---|---|
| Global clan crawl | globalclans.md |
| Live clan and war tracking | trackedclans.md |
| Global war discovery | war-discovery.md |
| Finished-war R2 archiver | war-archiver.md |
| CWL | cwl.md |
| Tracked players | trackedplayers.md |
| Basic players | basicplayers.md |
| Battle logs | battlelogs.md |
| Raid Weekend | capital.md |
| Reminders | reminders.md |
| Discord gateway and delivery | discord-runtime.md |
| Mobile and Discord delivery | notifications.md |
| Valkey event transport | events.md |
| Availability and maintenance | availability.md |
| Fixed scheduled work | scheduled.md |
| Leaderboards inside scheduled | leaderboards.md |
| Bot-side lightweight automation | bot-automations.md |
| Reddit feed automation | reddit.md |
| Giveaway automation | giveaways.md |
| Roster automation | roster-automations.md |
| Error reporting | observability.md |
All Clash requests pass through the shared request gate. A short proxy outage pauses work without changing game clocks. Confirmed Clash maintenance pauses work and, at recovery, shifts the durable war clocks by the measured duration.