We shipped a major structural refactor today, moving every prompt file from a loose YAML directory into the skills/content/ catalog. (PR #837) handled the final video director pack, and (PR #831) split the old mixed prompts into distinct content and ops skill packs, leaving the prompts/ folder empty for the first time. It feels like more abstraction than one shop needs, but the path to niche-specific deployments now feels paved.
The brand was the first thing to break in that refactor. We had hardcoded “Glad Labs” into the atoms pack’s load-bearing persona text. (PR #832) swapped those for {site_name} and {site_url} placeholders, so the OSS default doesn’t leak our identity anymore. We wired the caller to pass the config through, fixing the KeyErrors we’d been seeing in production runs.
While the brain reorganized, it kept throwing errors at us. Auto-triage was flooding the logs because the alert_actions table didn’t exist. (PR #845) created the missing table, and (PR #842) fixed an atomic write issue that was causing EACCES on the alertmanager config. We also dropped the invalid --web.enable-lifecycle flag that was breaking the entrypoint.
The observability layer needed a heartbeat. We rewrote the dead-man heartbeat query because it was referencing a non-existent audit_log.created_at column. (PR #840) patched that, and (PR #839) added the delivery-plane dead-man’s switch feature. The brain is now better at detecting when it gets stuck.
We finally got the poindexter doctor tool working with a health check graph v1. (PR #847) pushed that out in 0.43.0, and (PR #846) ensured unit tests run on every push to main. The latest release, (PR #849), bakes the rolling-baseline anomaly probe into the brain image so we can catch these state issues before they cascade.
From here, the system self-corrects without us touching it. We’re still not in love with the QA threshold tuning, but we have data now.
Auto-compiled by Poindexter from today’s commits and PRs. See the work: github.com/Glad-Labs/poindexter.



