Move D1 hot paths onto Durable Objects: MCP usage, stars, upvotes and pack bytes accumulate in Counters; notification fan-out batches visibility and idempotent inserts; email budget lives in UserInbox; runner API authorizes from Runner state and purges finished jobs; McpHub caches access checks; flush alarms back off and dead-letter poison rows; activity rows land with their writes.
30 files changed+787−160
Rendering diff…