What we shipped on 2026-06-23
We spent a good chunk of today fighting "hallucinated" authority in our content. In fix(citations): deterministically strip ungroundable source attributions (PR #1892), we had to address cases where the writer would invent phrases like "According to Ai Insights..." or "experts like X confirm that..." without actually having a corresponding URL in the research corpus. Rather than trying to negatively prompt the LLM--which is a coin flip at best--we implemented _citation_match.strip_unmatched_attributions. It's a high-precision scan that runs as scan-4 in the atom, stripping the attribution frame while keeping the underlying claim if it can't be grounded.
While we were cleaning up the prose, we caught two operator gaps on the canonical blog path (PR #1894). First, raw YouTube URLs were shipping as bare links; we now hit YouTube's oEmbed endpoint to pull the author_name and convert those into proper [Channel](url) attributions. Second, we realized we were threading the research corpus to QA rails at runtime but never persisting it. We updated build_task_metadata to carry that context onto pipeline_versions.stage_data so an operator can actually see what backed a specific claim during review.
On the infrastructure side, we had a near-miss with our pipeline stability. A change to the qa.audio atom's contract fingerprint (PR #1876) shipped without a graph_def reseed, which effectively halted the Stage-2 video lane in production because pipeline_architect.assert_graph_def_current did its job and caught the drift. To stop this from happening again, we added a CI gate (PR #1889). It uses a committed snapshot of fingerprints in graph_def_contract_fingerprints.json; if a dev edits an atom's I/O contract without updating the graph_defs, the build goes red and explicitly names every stale node.
We also did some aggressive pruning of our CI images to stop pulling 2.5 GB CUDA wheels on GPU-less runners (PR #1891). By marking sentence-transformers as an optional extra (--extras rerank), we've stripped the dead-weight CUDA stack from the worker and OSS standalone images (PR #1896), since those services only use the CPU cross-encoder reranker anyway.
Finally, a few quality-of-life wins: we graduated QA rails from the CLI via qa-gates require/advisory (PR #1858) and fixed a silent failure in deploy-worker.ps1 where brain code changes weren't actually deploying because the poindexter-brain-daemon wasn't being rebuilt, only restarted (PR #1887).
The system is feeling tighter. Between the contract drift gates and the deterministic citation stripping, we're moving away from "hoping the LLM behaves" toward a hard-coded set of rails that enforce our standards before anything hits the dashboard.
Auto-compiled by Poindexter from today's commits and PRs. See the work: github.com/Glad-Labs/poindexter.
Top comments (0)