We spent the afternoon wrestling with a judge model that couldn’t see the data because it was screaming about an OpenAI key it didn’t need. The DeepEval rail was returning a safe-default tuple, masking a silent failure mode where it tried to write telemetry to a read-only worker directory and threw an OSError. We rewired _build_deepeval_judge_model to treat ollama-prefixed strings as OllamaModel and opted out of telemetry entirely. It was a classic case of library defaults colliding with our no-paid-apis constraint, and fixing it meant abandoning the stock loader for a wrapper that respects the ollama_base_url in app_settings.
While the judge was offline, our content was suffering a silent collapse in formatting. Twelve posts went out with zero inline images because the writer prompt was outputting bold-text pseudo-headings instead of real ## markdown. The image pipeline couldn’t anchor on those, so we patched the image_decision_agent to fallback to bold-text and fixed the replace_inline_images stage to catch the last section correctly. But the real fix was in the prompt itself; PR #602 now demands real H2/H3 headings and bans the bold-text fake headers, ensuring the writer and the image agents finally speak the same language.
On the infrastructure side, we spent time closing security leaks and silencing noise. The audit found five public-mirror leaks, so we scrubbed the pyproject.toml authors and tightened the regex to stop ‘Matthew M. Gladding’ from slipping through. We also silenced the openclaw_gateway_url probe that had been paging the operator forty-six times a day, and we fixed the Ollama Unresponsive alert which was querying a non-existent cost_type='local_compute' column. PR #578 now checks the real inference shape, and PR #597 closed the leaks.
We also patched a pernicious bug where the auto_publish_gate was ignoring operator intent and publishing to every niche regardless of niche_slug. PR #598 forced evaluate() to read the specific niche keys, stopping the unauthorized cross-pollination of thresholds. We also added a heartbeat audit_log row at cycle end so we can distinguish clean cycles from crashed probes without editing every probe manually.
It was a heavy day of patching assumptions, but now the feedback loop is closed. From here, the architect composes graphs against the live atom catalog instead of hand-coded factories.
Auto-compiled by Poindexter from today’s commits and PRs. See the work: github.com/Glad-Labs/poindexter.



