<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Damilola Phillips</title>
    <description>The latest articles on DEV Community by Damilola Phillips (@damilola_phillips_05).</description>
    <link>https://dev.to/damilola_phillips_05</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4088664%2Fcc3fc8fc-f081-4f03-ae70-caaf619d5781.png</url>
      <title>DEV Community: Damilola Phillips</title>
      <link>https://dev.to/damilola_phillips_05</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/damilola_phillips_05"/>
    <language>en</language>
    <item>
      <title>Why Your Autonomous AI Agents Need a Deterministic Execution Floor</title>
      <dc:creator>Damilola Phillips</dc:creator>
      <pubDate>Tue, 25 Aug 2026 05:39:04 +0000</pubDate>
      <link>https://dev.to/damilola_phillips_05/why-your-autonomous-ai-agents-need-a-deterministic-execution-floor-25dn</link>
      <guid>https://dev.to/damilola_phillips_05/why-your-autonomous-ai-agents-need-a-deterministic-execution-floor-25dn</guid>
      <description>&lt;p&gt;Vibe-based prompt engineering and model self-regulation are production liabilities. If an autonomous agent can run a shell, write files, or hit a live database, it needs a deterministic execution floor — not a nicer system prompt.&lt;/p&gt;

&lt;p&gt;The usual failure is wrapping fifty tools by hand. That path is slow to maintain, easy to miss, and breaks when the tool list changes.&lt;/p&gt;

&lt;p&gt;Barycenters is a once-hook: intercept the framework’s central dispatcher, send an inert proposal to the live admittance layer, then let the tool run only if you are in enforce. Shadow records the decision and still lets the tool run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Clients (live)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JS / OpenClaw:&lt;/strong&gt; &lt;code&gt;npm i barycenters&lt;/code&gt; — &lt;code&gt;bary.govern&lt;/code&gt;. Shadow first. Posts &lt;code&gt;{ action, namespace, metadata }&lt;/code&gt; to &lt;code&gt;{endpoint}/admit&lt;/code&gt;. It does not fill the REST Proposal fields (&lt;code&gt;domain&lt;/code&gt;, &lt;code&gt;image_digest&lt;/code&gt;, …).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python / Hermes:&lt;/strong&gt; &lt;code&gt;pip install barycenters&lt;/code&gt; — &lt;code&gt;admit&lt;/code&gt; or &lt;code&gt;@bary.boundary(...)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go:&lt;/strong&gt; &lt;code&gt;[github.com/barycenters-systems/barycenters-go](https://github.com/barycenters-systems/barycenters-go) v1.0.1&lt;/code&gt; (&lt;code&gt;v1.0.0&lt;/code&gt; is retracted).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NemoClaw:&lt;/strong&gt; OpenShell host, not a fourth SDK. Hook the inner agent’s dispatcher (OpenClaw or Hermes). Do not wrap the sandbox.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP:&lt;/strong&gt; A side door, not that once-hook: Streamable HTTP at &lt;code&gt;[https://barycenters-admit.fly.dev/mcp/](https://barycenters-admit.fly.dev/mcp/)&lt;/code&gt; (&lt;code&gt;admit&lt;/code&gt;, &lt;code&gt;check_readiness&lt;/code&gt;). A bare &lt;code&gt;GET&lt;/code&gt; is &lt;code&gt;406&lt;/code&gt; (protocol Accept, not an outage).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🧱 Four layers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pack:&lt;/strong&gt; Catalog law (&lt;code&gt;GET /v1/packs&lt;/code&gt;). Example: &lt;code&gt;barycenters.packs.ci_change_management&lt;/code&gt;. &lt;code&gt;authority_effect = 0&lt;/code&gt;. Inert: actions, evidence, limits. Governs nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instantiate:&lt;/strong&gt; Copy that text into an unsigned candidate named for your project (e.g. &lt;code&gt;barycenters.ci.merge_to_main&lt;/code&gt;). Still inert. Not admission.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Charter:&lt;/strong&gt; Claim the namespace ($79 founding). Until then the name is a string; &lt;code&gt;POST /admit&lt;/code&gt; returns &lt;code&gt;404 namespace '{namespace}' is not chartered&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bind:&lt;/strong&gt; Human keys sign the candidate into the chartered namespace.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The wedge is fail-closed (no charter → no namespace; no bound binding → no admit for that action).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📡 Links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Health:&lt;/strong&gt; &lt;code&gt;curl -i [https://barycenters-admit.fly.dev/readyz](https://barycenters-admit.fly.dev/readyz)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup:&lt;/strong&gt; &lt;a href="https://barycenters.ai" rel="noopener noreferrer"&gt;https://barycenters.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adapters:&lt;/strong&gt; &lt;a href="https://barycenters.ai/adapters" rel="noopener noreferrer"&gt;https://barycenters.ai/adapters&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>security</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
