Blog

  • Self-healing a multi-agent pipeline: three bugs that broke the loop

    I run a multi-agent pipeline that ships software on its own.

    A builder agent picks up tickets from Jira. A QA agent verifies the work against the actual code. An ops layer of watchers, gates and watchdog crons keeps the loop alive. GitHub is the workbench. Jira is the record. The whole thing runs build → QA → merge with no human in the middle.

    It mostly works. “Mostly” is doing a lot of work in that sentence.

    Every week, the loop finds a new way to break. This week’s batch was a good one — three separate bugs, each in a different layer, each one invisible until it wasn’t. Here’s what broke, and what it taught us.

    1. The gate that only looked at one channel

    A ticket was handed off for QA on Discord. The handoff looked clean: PR open, message posted, everything in order. Except one detail — nothing was written to Jira, and the ticket never left To Do.

    The pre-QA gate keys off Jira handoff comments. It never saw the handoff. The PR sat unreviewed for nearly two hours while every watcher on the pipeline nodded along.

    The fix: the gate now falls back to scanning open GitHub PRs when no Jira handoff comment exists. One channel can go quiet. The workbench can’t hide.

    2. The watchdog that was satisfied by its own notes

    We run a stall-nudge watchdog. Its job is to detect an agent that’s gone quiet and nudge it back to life. This week it didn’t fire — an agent sat silent for over nine hours with zero nudges.

    Root cause: the watchdog counted any comment containing “ready for QA” as proof of output. An ops note — literally a comment about the handoff process itself — matched the pattern. The watchdog looked at its own machinery’s notes and decided everything was fine.

    The comment classifier now excludes ops machinery text. Lesson: if your detector keys on bare phrases, it will eventually match its own reflection.

    3. The pickup cron that poisoned its own pool

    A pickup cron delivered QA work orders to the agent gateway every ten minutes. One session hung. Each POST left a stuck run behind it. The run pool filled to its cap — and then every new job was refused with 429 “too many concurrent runs.”

    All QA ground to a halt for about two hours. Not because the agent was broken. Because the delivery mechanism kept feeding a corpse.

    The fix was blunt: paused the cron, moved delivery to the safe channel — Discord mention plus Jira record. The rule is codified too: a watcher with a client-side timeout can poison a shared pool. Fail fast, or don’t POST at all.

    The layer this unlocked

    Every one of those became a rule. Not a lesson. A rule.

    And the rules became a loop. There’s now a self-healing layer that runs a cheap health check every 15 minutes. Pipeline healthy? It stays silent — no alerts, no tokens burned. A signal appears? It acts: nudges a quiet agent, pauses a misbehaving cron, relays work to a lane that can actually move.

    It’s a deliberately small, token-efficient take on agentic self-healing. Most of the time it does nothing. That’s the point. The expensive agents keep working; the cheap watcher keeps watch.

    The loop keeps breaking in new ways. The register of failures keeps growing — and so does the catalogue of fixes that generalize beyond this one pipeline. The bugs are the roadmap.

    Either way, it’s going to be interesting.

  • The window is real. So is the graveyard.

    The lab is running.

    The first post set the scene. Real products. Real users. The agentic experiment, done properly.

    This is the part that actually matters.

    The part I’m chasing

    My projects are teaching me things. Not just whether agents work. Something quieter.

    What happens when you run the same work the same way, over and over. Where it holds. Where it cracks. Which pieces are luck, and which pieces are structure.

    I’m trying to separate the two.

    What the lab has already learned

    Some of it is unglamorous. That’s why it’s useful.

    A rejection got merged anyway. Once. It won’t happen again.

    Reviewers reviewed the same code twice. Nothing had changed. Duplicate work isn’t diligence — it’s a design flaw.

    A scanner read a work order as a handoff. Keywords lie. Structure doesn’t.

    The newest verdict hid behind an old comment list. The loop acted on yesterday’s news.

    The reviewer model went cold, and the loop went blind for nearly an hour.

    A fix claimed a commit that didn’t exist yet. Receipts, or it didn’t happen.

    Every one of those became a rule. Not a lesson. A rule.

    The shape is taking form

    An evidence-backed control plane. Everything verified. Nothing self-certified.

    If it only works because it’s mine, it’s a story. If it works because of how it’s built, it’s something else. Something with edges. Rules. A shape. Something another team could pick up without me in the room.

    That’s the thing I’m trying to bottle.

    The market agrees with the paranoia

    Gartner says over 40% of agentic projects get cancelled by 2027. Escalating cost, unclear value, weak controls.

    Deloitte says agent deployment jumps from a quarter of companies to half. PwC found most executives raising AI budgets anyway.

    The window is real. So is the graveyard.

    The real question

    Would anyone pay for the shape?

    Not for the demo. For the outcome.

    That’s the difference between a framework and a diary. One has a market. The other has an audience.

    I want to know which one I’m building.

    What stays in the lab

    The framework itself. The stages. The numbers that matter most.

    They’re not ready to be seen yet. Some of it is mine. Some of it needs to prove itself first.

    You’ll get the shape of it. The lessons, the failures, the surprises. The receipts.

    Phase two

    The experiment has a second phase. This is it.

    I’ll keep posting as it happens. The wins. The embarrassments. The honest parts.

    Either way, it’s going to be interesting.

  • My Products Are My Guinea Pigs

    Everyone’s talking about agents.

    Most of it is noise. Demos that work in a video. Pipelines that die on day two. Hype pretending to be a market.

    I build products. So I did the obvious thing.

    I made my own projects the guinea pigs.

    The lab is real

    No sandbox. No toy data. Real products, real users, real workflows.

    I’m running the agentic experiment on things that actually ship. If it breaks, something I own breaks. That’s the point.

    It’s the only way to know if any of this holds up outside a keynote.

    What I’m testing

    One question, really. Is there a market here, or just a movement?

    The agentic crowd is loud. But most of it lives underground — early adopters talking to each other. I want to know what happens above ground. With normal teams. Normal budgets. Normal expectations.

    Will people pay for this? Not for the demo. For the outcome.

    What I’m not telling you

    The interesting parts stay in the lab for now.

    Some of it is mine. Some of it is worth protecting. Some of it isn’t ready to be seen.

    You’ll get the shape of it. The lessons, the failures, the surprises. The receipts.

    Follow along

    I’ll post what I learn as I learn it. The wins. The embarrassments. The honest parts.

    If it works, you’ll see it work. If it’s all hype, you’ll watch me say so.

    Either way, it’s going to be interesting.