Horizon Closed Seven Red, Three Amber, Zero Green
On 2026-10-15, my 90-day horizon closed red across seven bets. Here is what broke in my fleet, what shipped, and how to audit your checks.
On 2026-10-15, my ninety-day horizon closed seven red, three amber, and zero green. The quarter ended with zero clean wins across ten tracked bets. I spent the day fixing broken agent gates and cleaning up what failed.
Here is what broke before anything moved forward on 2026-10-15. The overnight sweep ended at 02:55 with zero pull requests merged, three agent-owned holds, zero escalations, and 36 skipped cards. Thirty-three of those skipped cards were destination-blocked bmdpat tasks. My Doctor check ran red, verifying 43 of 50 outcomes while seven failed. The service rss-ingestor was degraded, one validate check failed on python exit 1, kg-reindex failed overnight, and the Pi researcher sync failed at 07:17:33. The ship receipt was red on 2026-10-15 because no blog post landed.

Worse, the security audit lied to me. The SecurityAnalyst check claimed green with zero P0 issues and 14 P2 issues. Then I checked the run logs. Both gitleaks and OSV had scanned zero of five repositories. A green check on zero scanned files means nothing. The real dependency audit was red, with five critical alerts and 22 high alerts.
Why did my agent alerts fail?
Your agent alert callbacks fail when two processes fight over the same bot token. On 2026-10-15, I dropped the AgentGuard alert buttons and retired VaultAgent-AgentGuardAlertResponses. The shared Telegram bot token gave the plugin the only getUpdates slot. Because of that conflict, incoming button callbacks died silently.
The pause flag is manual now. I archived a corrupt 3.2 MB AgentGuard state blob instead of deleting it.
Meanwhile, tools broke into loops. I merged agent47 PR #869 as commit 9e96405 to catch near-duplicate tool-call loops. I also merged PR #873 as ff21dea to block tool actions whenever a policy hook fails. When a policy hook fails, the runner blocks the tool action.
Here is the difference between my morning failures and the fixes landed on 2026-10-15. The false green scan was not one of those fixes. Gitleaks and OSV had each scanned zero of five repos, and that finding stayed open.
| System Check | State on 2026-10-15 Morning | Fix Landed on 2026-10-15 |
|---|---|---|
| Security report PDFs | Fix loop was unclear | bmdpat PR #2017 (45a5507e) branded PDFs |
| Tool Call Loops | Near-duplicate calls repeated | agent47 PR #869 (9e96405) loop breaker |
| Policy Hook Fails | Action proceeded anyway | agent47 PR #873 (ff21dea) action block |
| Telegram Alerts | Callbacks dropped on shared token | Retired alert buttons; manual pause flag |
| Windows Line Endings | Fixture mismatch | bmdpat PR #2008 (95e5bf15) forced LF |
Seven queue cards moved to Complete/ by the end of the day. A shared DESIGN.md landed across four repositories with drift checks: bmdpat at 608294c4, agent47 at 467c872, agent47-dashboard at 62d913d, and bmd-desktop at 05c1d0ae. In bmd-desktop, PR #611 merged as commit a84acb5d, cutting version 3.47.2442.
How do unmeasured goals hide failure?
Unmeasured goals hide failure because a goal without a measurement path cannot report red. Four of my ten scorecard rows had no measurement path at all. Autotrader was supposed to deliver 90 days of documented P&L history. The documentation closed at zero. That was a measurement failure, not a trading loss.
When you evaluate models locally, measurement gaps create the same blind spots. If you run local LLM inference on consumer GPUs, you need exact numbers for memory overhead and context sizes. Check the GGUF compare tool to test fit before launching runs. Reading a GGUF quantization explained breakdown helps you pick weights that fit real VRAM instead of guessing.
At 21:09 on 2026-10-15, the brain worker showed five cards shipped, nine moved to my personal queue, four blocked, and one aged out. Seventy-three cards remained sitting in the root directory.
At 21:45 on 2026-10-15, 90-day cannon.md still read horizon 2026-10-15. The evening note said that at midnight the no-pivot rule would point at an expired window. That same gap once sat open for 36 days. On 2026-10-15, the Ollama supervised elevated session was still the top blocker. The approved restriction had not run.
What should you do with this?
- Inspect your test runners for false green passes where the tool scanned zero targets.
- Add a hard loop breaker to your agent runners to abort consecutive duplicate tool calls.
- Review every quarterly metric and archive any target that lacks an automated receipt.
Accompanying prompt
What the prompt does: Audits automated system checks and metric scorecards to find unmeasured rows and false green passes.
Copy/paste this prompt:
Copy-ready prompt
Paste the exact block into your coding agent.
No article chrome, no footnotes, no formatting drift.
This prompt and every other one we publish live in the free prompt library.
Copy the block above.
Weekly measured local runs: https://bmdpat.com/5090-reports
Get the Local AI Field Kit
Four copy-ready tools now, then one evidence-backed Local AI Lab Note on Friday when there is something worth sharing.
Try the free agent run check firstGet the requested artifact now, then at most one evidence-backed Local AI Lab Note on Friday when there is something worth sharing. One-click unsubscribe. No sponsored placements. Privacy.
Patrick Hughes
I build BMD and publish measured AI runs, failure reports, and reusable checks. Nashville, Tennessee.
More writing
- 5 min
What Does ngl 99 Mean in llama.cpp?
In llama.cpp, ngl 99 sets a numeric cap of 99 layers in GPU memory rather than 99 percent VRAM. Here is how layer offloading works and what to run.
- 5 min
A Sandbox Split Stopped My Fleet While 142 Tests Cleared
On 2026-10-09 my nightly sweep aborted on sandbox branch drift. A green scan checked zero repos. Here is how 142 CI admission tests still cleared.
- 5 min
My agent leaked an authority key and aborted the sweep
On 2026-10-07, an agent leaked an authority credential at startup. The nightly sweep aborted, and containment comes before any new code.
- 5 min
A green security check read zero repositories
On 2026-10-06, a green security scan skipped five repos, twenty-one service jobs failed, and an automated repair loop saved my daily post.
- 5 min
The Merge Trap Opened Without Me While Leads Hit Zero
On 2026-10-04, two PRs broke a strict merge trap without my hands. Meanwhile, 1,835 human visitors generated zero paid installs and one bot lead.