The narrative writer was unavailable this run, so here’s the plain changelog. We shipped 27 PRs and 36 notable commits today.
Merged PRs:
- PR #1122: chore(main): release 0.71.0
- PR #1117: refactor(content): move internal_link_coherence into the content module (Phase 3 wave)
- PR #1116: fix(tests): set torch stub spec to prevent find_spec ValueError cascade
- PR #1115: refactor(content): move QA rails + content generator into the content module (Phase 3 wave)
- PR #1112: docs(CLAUDE.md): sync DB-derived counts + migration narrative (auto)
- PR #1114: refactor(content): move atoms tree into the content module (Phase 3 wave)
- PR #1113: refactor(content): move stages tree into the content module (Phase 3 wave)
- PR #1111: refactor(content): move content_validator into the content module (Phase 3 pilot)
- PR #1109: feat(modules): Module v1 Phase 5 – presence-based visibility sync
- PR #1110: fix(sdxl): self-heal degraded state so a Postgres boot race can’t latch forever
- PR #1108: feat(voice): move the claude-code voice transcript from Telegram to Discord (#1006)
- PR #1107: feat(voice): per-room TTS voice override for the claude-code room (#1006)
- PR #1103: feat(voice): read LiveKit key/secret from app_settings, env fallback (#1000)
- PR #1102: feat(voice): deprecate in-container claude-code mode; host-brain is the path (#1006)
- PR #1101: feat(voice): durable host-brain daemon – hidden self-restarting task (#1006)
- PR #1100: feat(web): time-based ISR backstop (1h) on canonical index routes
- PR #1099: fix(publish): ISR-revalidate on the promote-existing-approved path (#575)
- PR #1098: feat(voice): claude-code room container + DB-driven service profiles (#1006)
- PR #1097: feat(voice): /voice/join?room= routing for the two-room split (#1006)
- PR #1096: feat(edge): shared CDN bot-challenge guard across verify / check_links / revalidation
- PR #1095: fix(voice): resilient brain-mode + secrets in lean image; drop legacy key (#1006)
- PR #1094: fix(verify): don’t page critical on a Cloudflare bot-challenge (edge ≠ outage)
- PR #1093: feat(voice): host-side brain – full dev-on-the-go for the voice room (#1006)
- PR #1091: fix(deps): bump aiohttp to 3.14.0 (untrusted-data deserialization CVE)
- PR #1090: fix(voice): create pinned session on –resume “no conversation found” (#1006)
Other commits:
09ae679refactor(content): move internal_link_coherence into the content module (Phase 3 wave) (#1117)2382ad5fix(tests): set torch stub spec to prevent find_spec ValueError cascade (#1116)df3ea9brefactor(content): move QA rails + content generator into the content module (Phase 3 wave) (#1115)fa6f4a3refactor(content): move atoms tree into the content module (Phase 3 wave) (#1114)cf39ccbrefactor(content): move stages tree into the content module (Phase 3 wave) (#1113)f41f5d4refactor(content): move content_validator into the content module (incremental Phase 3 pilot) (#1111)0eed6dcfeat(modules): Module v1 Phase 5 – presence-based visibility sync (#1109)33e2173fix(sdxl): self-heal degraded state so a Postgres boot race can’t latch forever (#1110)88a2b13feat(voice): move the claude-code voice transcript from Telegram to Discord (#1006) (#1108)2781420feat(voice): per-room TTS voice override for the claude-code room (#1006) (#1107)38670cafeat(voice): read LiveKit key/secret from app_settings, env fallback (#1000) (#1103)1e38558feat(brain): iCUE corsair_csv feed-freshness watchdog (#868) + fix brain Dockerfile to ship psu_power/corsair_feed_probe (latent crashloop)d19e42dfeat(voice): deprecate in-container claude-code mode; host-brain is the path (#1006) (#1102)3a6026cfeat(voice): durable host-brain daemon – hidden self-restarting task (#1006) (#1101)f3b4c7efeat(web): time-based ISR backstop (1h) on canonical index routes (#1100)
Auto-compiled by Poindexter from today’s commits and PRs. See the work: github.com/Glad-Labs/poindexter.



