May 12 – 16, 2026
Week 5
The Universe Layer, the Alert System & the Devlog
26 universes · 13 API endpoints · alert system live · devlog deployed
With ingestion stable, focus moved up the stack — a universe layer for organizing stories, a self-resolving alert system so the bot can speak, a deep bug hunt that sharpened the system's correctness, and a build log to track it all.
🌌A universe layer was designed and built — 26 universes seeded with genres, descriptions, and story tags, so the same characters can appear across multiple storylines without duplicating data. A full-stack feature spanning schema, seeding, API, and docs.
🔔The alert lifecycle system took shape — the bot can now speak. Ownership routing decides whether a failure goes to the admin or the writer, embeds explain what was seen versus what was expected, and the
alert_watchlist table backs self-resolving alerts.📡The API grew to 13 endpoints — universe library, character rosters, scoped character stats, and a diagnostic ingestion-events endpoint giving direct visibility into why any message failed.
🧹The largest documentation consolidation yet — 20 source documents reduced to 12, with retired specs archived and a clean authority hierarchy established across the whole set.
🔬A subtle query-scoping bug was hunted down and fixed — the "pairing-scoped" alias lookup was never actually scoped to the character, which could have silently accepted the wrong one. The fix came once the deeper truth was understood: a pairing is exactly two leads, NPCs are global.
🎭End-to-end NPC ingestion was confirmed — webhook-based NPC characters now travel the full pipeline correctly, validated live against a test character in the sandbox.
💬The first bot-facing config command shipped —
!register_npc, a guided Discord conversation that lets either writer register a new NPC with no database access required.🛡️Alert ownership was made fully dynamic — a hardcoded user ID was removed so the responsible writer is now resolved at fire time, making the routing correct rather than correct-by-coincidence.
📓This build log was created and deployed — a self-generating timeline that turns weekly notes into a styled page, now live at
devlog.yaoireporter.com through the same Cloudflare tunnel that serves the API, running as its own service so it survives reboots.📊The build log gained a metrics layer — four live counters (weeks, milestones, words ingested, bugs fixed) and a phase progress bar that shows how far along the roadmap the project is. Words pull straight from the live archive; the rest update themselves as entries are written.