<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[OpenRed Agentic AI Innovations]]></title><description><![CDATA[OpenRed Agentic AI Innovations]]></description><link>https://openred.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>OpenRed Agentic AI Innovations</title><link>https://openred.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 10:18:36 GMT</lastBuildDate><atom:link href="https://openred.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Verify the mechanism, never the setting]]></title><description><![CDATA[I fixed the same bug wrong twice, and the reason generalises well past my system.
The symptom. Projects in my orchestration platform were occasionally created with names like {. A single brace. It had]]></description><link>https://openred.hashnode.dev/verify-the-mechanism-never-the-setting</link><guid isPermaLink="true">https://openred.hashnode.dev/verify-the-mechanism-never-the-setting</guid><category><![CDATA[AI]]></category><category><![CDATA[ai-agemts]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[debugging]]></category><category><![CDATA[debugging]]></category><category><![CDATA[AI Architecture]]></category><category><![CDATA[ai-system-design]]></category><dc:creator><![CDATA[Michael Hairetis]]></dc:creator><pubDate>Wed, 16 Sep 2026 12:58:41 GMT</pubDate><content:encoded><![CDATA[<p>I fixed the same bug wrong twice, and the reason generalises well past my system.</p>
<p><strong>The symptom.</strong> Projects in my orchestration platform were occasionally created with names like <code>{</code>. A single brace. It had been happening for months and I had never traced it, because it was cosmetic and everything else worked.</p>
<p><strong>The cause.</strong> The system captures agent output from a rendered view with a fixed window. Any response longer than that window <strong>lost its beginning</strong>, permanently, not into a buffer I could recover from.</p>
<p>The agent emits a title at the top of its response. The title scrolls out of the window. The parser finds nothing, falls through to a legacy path, and names the project after whatever fragment survived.</p>
<p>The same truncation was quietly handing worker agents plans with their instructions missing, which is considerably worse than a bad project name.</p>
<p><strong>The first wrong fix.</strong> I identified a buffer setting, increased it, confirmed the setting had been applied, and declared victory.</p>
<p>The setting was inert. It could never have affected this class of view at all.</p>
<p>I had verified <strong>that the option was accepted</strong>, not <strong>that the mechanism changed</strong>. Those feel like the same act and they are not. The number that actually mattered was printed in the same line of output I was reading, and I read past it because I had already found what I was looking for.</p>
<p><strong>The real fix</strong> was making the capture window twelve times larger. Response heads survive, titles parse, workers get whole plans.</p>
<p><strong>Two things I took from it.</strong></p>
<p><em>Confirming your config was accepted proves nothing.</em> The question is never "did the system take my setting." It is "did the quantity I care about change." Those require different evidence, and only one of them is easy to check.</p>
<p><em>Your fixes interact, and the interaction is invisible from either side.</em> Separately, I had spent weeks making agents terser. That work was correct. It is also what exposed this bug, because shorter responses stopped pushing stale markers out of the capture window, changing which failure mode was reachable.</p>
<p>Load-bearing assumptions do not announce themselves, and the ones that break are usually inherited from a version of the system that no longer exists.</p>
<p><a href="https://openred.space/blog/agents-have-amnesia.html">https://openred.space/blog/agents-have-amnesia.html</a></p>
]]></content:encoded></item><item><title><![CDATA[What changes when the agent's output is the product]]></title><description><![CDATA[Two platforms, one agent service, and the difference between them is a distinction I did not see until I crossed it.
On the orchestration side, when an agent classifies a failure incorrectly the cost ]]></description><link>https://openred.hashnode.dev/what-changes-when-the-agent-s-output-is-the-product</link><guid isPermaLink="true">https://openred.hashnode.dev/what-changes-when-the-agent-s-output-is-the-product</guid><category><![CDATA[AI]]></category><category><![CDATA[architecture]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[systemdesign]]></category><dc:creator><![CDATA[Michael Hairetis]]></dc:creator><pubDate>Tue, 15 Sep 2026 14:52:08 GMT</pubDate><content:encoded><![CDATA[<p>Two platforms, one agent service, and the difference between them is a distinction I did not see until I crossed it.</p>
<p>On the orchestration side, when an agent classifies a failure incorrectly the cost is a wasted retry. The system notices, tries something else, and nobody outside ever knows. The judgment is internal: load-bearing for the machinery, invisible to the world.</p>
<p>On the publishing side there is no such cushion. The agent writes a paragraph, the paragraph goes into a brief, the brief goes to readers. A wrong classification announces itself. <strong>A plausible, well-written, subtly wrong sentence does not.</strong></p>
<p>Same infrastructure. Completely different failure mode. Three things follow from that.</p>
<p><strong>The role distribution inverts.</strong> On the orchestration platform, almost every agent call is a decision. On the publishing platform, five of the eight resident roles exist to write or edit reader-facing prose, and only one is doing internal decision-making. The infrastructure is identical and the shape of what runs on it is upside down.</p>
<p><strong>Three agents read the same document and must not produce the same answer.</strong> When a release lands it goes to three roles pointed at the identical source with different jobs. A private analyst writing for one reader in the vocabulary of a specific framework. A public writer whose output goes in front of readers who do not work in finance. A structured scorer returning a classification, because parts of the system need a value rather than an argument.</p>
<p>That is not three prompts on one model. Each is a role with a standing definition that stays resident and accumulates context across everything it has read this week. Try it as a single call and you get mush: one paragraph hedging between two audiences and useful to neither. <strong>The reason to have an agent behind the endpoint rather than a model is precisely that it can hold a role.</strong></p>
<p><strong>Failure needs a taxonomy, not a retry.</strong> Unreachable is transient, so retry it. But an output you cannot parse, or one that arrived partial, must not be retried automatically. In a publishing context a partial answer is worse than no answer, because a missing analysis is visibly missing while a truncated one looks complete. It sits there reading like a finished thought with its conclusion silently amputated.</p>
<p>The whole thing turned out to be less like engineering than I expected and much more like editing.</p>
<p>The full piece is on my site, including the month of small embarrassments that taught me the audience lesson:</p>
<p><a href="https://openred.space/blog/calling-an-agent-for-sentences.html">https://openred.space/blog/calling-an-agent-for-sentences.html</a></p>
]]></content:encoded></item><item><title><![CDATA[A coding agent is a general-purpose judgment primitive]]></title><description><![CDATA[We have been handed extraordinarily capable coding agents, and we mostly use them by typing at them in a terminal.
That is a human interface to a thing that does not require a human.
I spent the bette]]></description><link>https://openred.hashnode.dev/a-coding-agent-is-a-general-purpose-judgment-primitive</link><guid isPermaLink="true">https://openred.hashnode.dev/a-coding-agent-is-a-general-purpose-judgment-primitive</guid><category><![CDATA[AI]]></category><category><![CDATA[architecture]]></category><category><![CDATA[System Design]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[Michael Hairetis]]></dc:creator><pubDate>Mon, 14 Sep 2026 12:52:41 GMT</pubDate><content:encoded><![CDATA[<p>We have been handed extraordinarily capable coding agents, and we mostly use them by typing at them in a terminal.</p>
<p>That is a human interface to a thing that does not require a human.</p>
<p>I spent the better part of a year building an orchestration platform that runs autonomous data operations on a schedule. 136 scheduled jobs, 2,242 runs, nearly 28,000 agent turns. The platform is what I set out to build. The piece I am actually proud of is smaller, sits underneath it, and took the longest to see clearly.</p>
<p>It exposes a coding agent as a webservice. That is all it does.</p>
<p><strong>Why an agent rather than a model.</strong></p>
<p>The metered API gives you a model behind an endpoint. Clean, callable, easy to integrate. What it does not give you is the agent: the thing that reads files, runs commands, iterates on a problem, holds a role definition across a long conversation, and knows when it is finished. That whole apparatus lives in the CLI product.</p>
<p>I could have rebuilt it. Reimplemented the tool-use loop, the file handling, the iteration, the skills scaffolding, and paid per token for the privilege of running my own worse version. Or I could take the agent that already exists and make it answer HTTP.</p>
<p><strong>Two things fell out of that, both larger than expected.</strong></p>
<p>The economics inverted. Flat-rate subscription rather than per-token billing means every architectural decision I would otherwise make to conserve tokens simply stops being a decision. I let agents be thorough. I add a verification pass because it improves the output, not because I have priced it.</p>
<p>And I inherited a product roadmap. Because the service wraps the real CLI rather than reimplementing it, every improvement shipped to that product arrives on my platform for free. Better reasoning, new tool handling, context management. I integrate none of it. The agents get better between Tuesdays.</p>
<p><strong>The reusable idea is smaller than the platform.</strong></p>
<p>The moment you put an HTTP endpoint in front of a capable agent, it stops being a tool you use and becomes a component you build with. Something a scheduler can invoke at four in the morning with nobody watching.</p>
<p>The invention was not the platform. It was noticing that the agent did not need a human in front of it.</p>
<p>The full piece covers the ten named roles, the pipelines they compose into, and the classifier that changed how I write code:</p>
<p><a href="https://openred.space/blog/claude-code-as-a-webservice.html">https://openred.space/blog/claude-code-as-a-webservice.html</a></p>
]]></content:encoded></item><item><title><![CDATA[Multi-Agent Middle Manager]]></title><description><![CDATA[Spent six weeks assuming my system was slow because the work was hard.
Turned out two thirds of everything it was producing came from the one component that does no work at all. It was the manager, an]]></description><link>https://openred.hashnode.dev/multi-agent-middle-manager</link><guid isPermaLink="true">https://openred.hashnode.dev/multi-agent-middle-manager</guid><dc:creator><![CDATA[Michael Hairetis]]></dc:creator><pubDate>Wed, 09 Sep 2026 13:12:47 GMT</pubDate><content:encoded><![CDATA[<p>Spent six weeks assuming my system was slow because the work was hard.</p>
<p>Turned out two thirds of everything it was producing came from the one component that does no work at all. It was the manager, and it was reviewing paperwork nobody had asked for.</p>
<p>Same lesson as any org chart, honestly: managers should plan and sign off, not stand in the middle of people who can talk to each other.</p>
<p><a href="https://openred.space/blog/multi-agent-middle-manager-problem.html">https://openred.space/blog/multi-agent-middle-manager-problem.html</a></p>
]]></content:encoded></item></channel></rss>