<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Metaheuristic - Applied AI partner</title><link>https://www.metaheuristic.co/</link><description>Recent content on Metaheuristic - Applied AI partner</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 14 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.metaheuristic.co/index.xml" rel="self" type="application/rss+xml"/><item><title>Delta verification: assert the change, not the state</title><link>https://www.metaheuristic.co/blog/delta-verification/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/delta-verification/</guid><description>&lt;p&gt;The eval dashboard says your flow-builder agent passed again last night. Twenty runs,
twenty green. Then a customer asks why none of their flows exist, you open the staging
workspace, and the truth is ugly: the agent&amp;rsquo;s create call has been returning 401 since
an API key rotated two weeks ago. Every one of those green runs proved nothing. The
verifier checked &lt;code&gt;flow_count &amp;gt;= 1&lt;/code&gt; at the end of each run, and the workspace it ran in
has held a handful of flows since March. The assertion was true before the agent spent
a single token.&lt;/p&gt;</description></item><item><title>depwal: a dependency firewall for pip and poetry</title><link>https://www.metaheuristic.co/blog/dependency-firewall/</link><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/dependency-firewall/</guid><description>&lt;p&gt;The dangerous moment in a Python project is not when you write code. It is when you type &lt;code&gt;pip install&lt;/code&gt;. That command reaches out to an index, downloads an archive built by a stranger, and runs their &lt;code&gt;setup.py&lt;/code&gt; as your user, with your environment variables, your SSH keys, and your cloud credentials sitting one &lt;code&gt;os.environ&lt;/code&gt; away. You have not imported anything yet. You have not read a single line of what you pulled. The code already ran. And here is the part people miss: &lt;code&gt;pip install --dry-run&lt;/code&gt; runs it too, because pip has to build the package to learn what it needs.&lt;/p&gt;</description></item><item><title>Elwen: a probe harness that tests what you just shipped</title><link>https://www.metaheuristic.co/blog/elwen-probe-harness/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/elwen-probe-harness/</guid><description>&lt;p&gt;Something quietly broke in the last year. We got very fast at shipping. A new endpoint, an auth change, a data migration, a tweak to a page layout - the kind of change that used to take a day now takes an agent twenty minutes. But the way we check that change still assumes the old speed: write assertions against fixtures, run them, ship, and hope staging matched reality.&lt;/p&gt;
&lt;p&gt;The assertions only cover what you already thought of. That was fine when a human wrote every line and knew where the bodies were buried. It is not fine when the model wrote the diff and neither of you has poked the running thing yet.&lt;/p&gt;</description></item><item><title>The abstraction tax: MCP versus a plain CLI</title><link>https://www.metaheuristic.co/blog/mcp-vs-cli-abstraction-tax/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/mcp-vs-cli-abstraction-tax/</guid><description>&lt;p&gt;Open a fresh agent session, connect the ten MCP servers your team has standardized on, and watch the token counter before you have typed a single instruction. It is already deep into five figures. The servers loaded every tool they expose - names, descriptions, JSON schemas, enum values, field-level docs - straight into the model&amp;rsquo;s context, and they did it eagerly, all of them, whether or not this particular task will touch a single one. You are paying rent on capability you are not using. That is the abstraction tax, and once you see it you cannot unsee it: the Model Context Protocol buys you a tidy integration story by charging your context window up front, on every request, forever.&lt;/p&gt;</description></item><item><title>How Claude keeps from calling tools in a cycle</title><link>https://www.metaheuristic.co/blog/preventing-tool-call-cycles/</link><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/preventing-tool-call-cycles/</guid><description>&lt;p&gt;Give a capable model a set of tools and a hard problem, and most of the time it does something impressive. But every so often it gets stuck in the least glamorous failure mode there is: it calls &lt;code&gt;search(&amp;quot;q3 revenue&amp;quot;)&lt;/code&gt;, reads the result, decides it is not quite enough, and calls &lt;code&gt;search(&amp;quot;q3 revenue&amp;quot;)&lt;/code&gt; again. And again. The tool returns the same thing every time, because the world did not change between calls - but the model keeps hoping it will.&lt;/p&gt;</description></item><item><title>The blackboard pattern for multi-agent memory</title><link>https://www.metaheuristic.co/blog/blackboard-memory/</link><pubDate>Sun, 05 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/blackboard-memory/</guid><description>&lt;p&gt;Put two agents in a room and they need a way to share what they have learned. The tempting design is direct messages: the researcher agent calls the writer agent, which calls the critic agent, which calls back. Within a week you have a tangle where every agent imports every other, and adding a fourth agent means editing the other three.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Blackboard&lt;/strong&gt; pattern, invented for the Hearsay-II speech understanding system in the 1970s, solves it by removing the direct connections entirely. Agents never talk to each other. They read from and write to a shared structured memory - the blackboard - and a controller decides who acts next. It is a beautiful fit for multi-agent systems, and it is barely a hundred lines of Python.&lt;/p&gt;</description></item><item><title>State of AI dev - June 2026: the month the demo stopped counting</title><link>https://www.metaheuristic.co/blog/state-of-ai-dev-jun-2026/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/state-of-ai-dev-jun-2026/</guid><description>&lt;p&gt;There&amp;rsquo;s a sentence that showed up, almost verbatim, in three different client kickoffs this month: &lt;em&gt;&amp;ldquo;It worked in the demo.&amp;rdquo;&lt;/em&gt; It&amp;rsquo;s always said as a defense and it always means the same thing - the thing was built, somebody recorded a Loom, and then it met real users, real permissions, and real data volume, and it fell over. June was the month the wider industry stopped pretending the demo was the hard part. A widely-shared piece on the forward-deployed engineer put it plainly: a RAG chatbot over 10 documents &amp;ldquo;works like magic&amp;rdquo; in the honeymoon phase, but move it to thousands and &amp;ldquo;efficiency, accuracy and security collapse under the weight of unmanaged complexity&amp;rdquo; (&lt;a href="https://inews24.eu/the-forward-deployed-engineer-the-role-ai-cant-replace/"&gt;iNews24&lt;/a&gt;). That collapse is the entire job now. This is what we saw.&lt;/p&gt;</description></item><item><title>The agent loop: ReAct from scratch</title><link>https://www.metaheuristic.co/blog/the-agent-loop/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/the-agent-loop/</guid><description>&lt;p&gt;Strip away the framework marketing and an LLM agent is embarrassingly small: a loop that asks a model what to do, does it, feeds the result back, and repeats until the model says it is done. The 2022 &lt;strong&gt;ReAct&lt;/strong&gt; paper (Reason + Act) gave this loop its name and its shape. Everything else - tool registries, routers, memory - is scaffolding around this one control-flow skeleton.&lt;/p&gt;
&lt;p&gt;In this article we build that skeleton in plain Python. No framework, one small dataclass, and a loop you can read in a single sitting. By the end you will have a working agent and, more importantly, a mental model precise enough that every framework you touch afterward looks like a variation on the same theme.&lt;/p&gt;</description></item><item><title>The rise of skill-matched, momentum-driven code reviews (and the fall of the static review queue)</title><link>https://www.metaheuristic.co/blog/momentum-driven-code-reviews/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/blog/momentum-driven-code-reviews/</guid><description>&lt;p&gt;For most of the last fifteen years, code review meant the same thing in every shop: a human wrote a pull request, another human picked it up sometime between this afternoon and never, and a third human eventually merged it. The loop was slow because &lt;strong&gt;the cost of writing code was high&lt;/strong&gt;, so a few hours of latency on top didn&amp;rsquo;t matter.&lt;/p&gt;
&lt;p&gt;That assumption has quietly evaporated. The model now writes the diff in seconds. The queue still takes a day. The bottleneck moved.&lt;/p&gt;</description></item><item><title>Privacy Policy</title><link>https://www.metaheuristic.co/privacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/privacy/</guid><description>&lt;p&gt;This Privacy Policy explains what we collect when you work with Metaheuristic, how we use it, and the controls you have. We try to keep it short and concrete.&lt;/p&gt;
&lt;h2 id="1-what-we-collect"&gt;1. What we collect&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Account &amp;amp; contact data.&lt;/strong&gt; Email, name, organization, and details you submit through our contact form or during an engagement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Client Materials.&lt;/strong&gt; Documents, code, data, and system access you provide so we can deliver an engagement (an audit, build, or retainer).&lt;/p&gt;</description></item><item><title>Talk to us</title><link>https://www.metaheuristic.co/contact/sales/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/contact/sales/</guid><description/></item><item><title>Terms of Service</title><link>https://www.metaheuristic.co/terms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.metaheuristic.co/terms/</guid><description>&lt;p&gt;These Terms of Service (&amp;ldquo;Terms&amp;rdquo;) govern your access to and use of Metaheuristic (&amp;ldquo;we&amp;rdquo;, &amp;ldquo;us&amp;rdquo;, &amp;ldquo;our&amp;rdquo;) - an applied AI agency that designs, builds, and operates production AI systems such as agentic workflows and permission-aware RAG. By engaging us, signing a statement of work, or using anything we deliver, you agree to these Terms together with the applicable engagement agreement.&lt;/p&gt;
&lt;h2 id="1-who-can-use-the-service"&gt;1. Who can use the service&lt;/h2&gt;
&lt;p&gt;You must be at least 18 years old and able to enter into a binding contract. If you engage Metaheuristic on behalf of a company, you represent that you have authority to bind that company.&lt;/p&gt;</description></item></channel></rss>