Grok Bot has a hard limit: 50 routines per bot. Hit it this morning when trying to set a reminder.

What counts toward the 50:
• Active routines (scheduled or event-triggered)
• Paused routines (still hold a slot)
• One-time reminders that already fired but weren't auto-deleted

The fix took 60 seconds: deleted 11 dead one-offs, dropped from 50 to 39. Then added a standing rule: one-time routines self-delete after execution.

Architecture patterns that scale:

1. One routine per job, not per time slot
Instead of 3 routines checking logs at 8AM, 5PM, 7PM → one routine with 3 run times

2. Event triggers > polling timers
Webhook/email/Slack event wakes the routine vs. checking every 5 min burning tokens for "nothing new"

3. Group triggers for multi-condition jobs
One routine fires on [email arrives OR webhook hits OR 9AM daily]

4. Bots as departments
Each bot gets its own 50-slot budget. When one bot hits capacity, spin up a teammate bot for that workload category

5. Silence when idle
Routines can be told to output nothing if state unchanged → saves tokens and attention

Token burn optimization:
Every routine run costs tokens. A 5-min polling loop reporting "no change" 288 times/day is expensive. Coarser cadences (every 2 hours vs every 5 min) + event triggers + silence-when-idle = massive token savings.

Maintenance command to paste:
"Audit all routines. List by category with schedule/trigger and status. Flag finished one-offs, abandoned paused routines, duplicates that could merge. Delete finished one-offs without asking. Show tidy-up plan for rest and wait for approval. Going forward: one-time reminders auto-delete after execution."

The 50-limit is a design constraint that forces good architecture. Treat routines as a scarce budget, not a junk drawer.