<?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: Xiaojia Yu</title>
    <description>The latest articles on DEV Community by Xiaojia Yu (@xiaojia-fermion).</description>
    <link>https://dev.to/xiaojia-fermion</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%2F4097295%2Fbdbefb6f-fa6a-41eb-859b-eabecca4189f.png</url>
      <title>DEV Community: Xiaojia Yu</title>
      <link>https://dev.to/xiaojia-fermion</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xiaojia-fermion"/>
    <language>en</language>
    <item>
      <title>Fermion Fleet: When the Door Is Code, Not a Prompt</title>
      <dc:creator>Xiaojia Yu</dc:creator>
      <pubDate>Thu, 27 Aug 2026 11:55:44 +0000</pubDate>
      <link>https://dev.to/xiaojia-fermion/fermion-fleet-when-the-door-is-code-not-a-prompt-n2m</link>
      <guid>https://dev.to/xiaojia-fermion/fermion-fleet-when-the-door-is-code-not-a-prompt-n2m</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post was created for the Google All Things Agentic Hackathon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Autonomous agents can sound certain while still being wrong. That is not a prompt-quality problem; it is a boundary problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fermion Fleet&lt;/strong&gt; is a small multi-agent system built around one constraint: an order must not lock because a model says it is ready. It may lock only after code can read a structured boolean approval.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Demo: &lt;a href="https://youtu.be/6nPqy1AI2Kw" rel="noopener noreferrer"&gt;https://youtu.be/6nPqy1AI2Kw&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/wubian87/fermion-fleet" rel="noopener noreferrer"&gt;https://github.com/wubian87/fermion-fleet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Devpost: &lt;a href="https://devpost.com/software/fermion-fleet" rel="noopener noreferrer"&gt;https://devpost.com/software/fermion-fleet&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The problem: confident language is not a permission
&lt;/h2&gt;

&lt;p&gt;In the demo, a handler drafts an order confirmation. It misses required fields. An auditor sends it back. The handler rewrites. Only a valid review can release the order to the ledger.&lt;/p&gt;

&lt;p&gt;The important part is not that the auditor is asked to be careful. The important part is that the ledger accepts only a real boolean approval from a parseable result.&lt;/p&gt;

&lt;p&gt;The gate has a deliberately boring policy:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The handler prepares a draft.&lt;/li&gt;
&lt;li&gt;The auditor checks the required fields.&lt;/li&gt;
&lt;li&gt;The gate parses the auditor output.&lt;/li&gt;
&lt;li&gt;If the output is missing, malformed, false, or cannot be parsed, the order is held.&lt;/li&gt;
&lt;li&gt;Only a structured boolean approval can lock the order.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is fail-closed by construction. Looks good, a persuasive explanation, an unexpected format, and a parser failure all resolve to &lt;strong&gt;stop&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We tested that boundary by breaking the auditor’s output format. The auditor could still identify a real hallucination in natural language. It sounded professional. But code could not read a structured approval, so the door stayed shut.&lt;/p&gt;

&lt;p&gt;That is the project’s central idea: &lt;strong&gt;the door is code, not a prompt.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Context pressure, not a timer
&lt;/h2&gt;

&lt;p&gt;The other problem is context management. In a long-running system, context cannot expand forever. But forgetting should not mean permanently deleting facts that a later step may need.&lt;/p&gt;

&lt;p&gt;Fermion Fleet uses a small context window and a recoverable pool:&lt;/p&gt;

&lt;p&gt;customer&lt;br&gt;
  -&amp;gt; triage: writes the case file&lt;br&gt;
  -&amp;gt; gardener: select / evict / recall&lt;br&gt;
  -&amp;gt; gate: handler -&amp;gt; auditor -&amp;gt; parse, fail closed&lt;br&gt;
  -&amp;gt; ledger: locks only on boolean true&lt;/p&gt;

&lt;p&gt;When the window is full, the gardener evicts low-priority items into a recoverable pool. That eviction is driven by pressure, not by a timer. Later, when a new step needs an earlier detail, the system scores and recalls that item.&lt;/p&gt;

&lt;p&gt;In the recorded run, an after-sales commitment leaves the active window. A later customer question makes it relevant again; the system recalls it, and the handler can answer with details that were not present in the current conversation. Without recall, that answer would be impossible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Google stack and the policy layer
&lt;/h2&gt;

&lt;p&gt;The runtime stack is Google’s:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 3.5 Flash&lt;/strong&gt; through &lt;strong&gt;Vertex AI&lt;/strong&gt; (global)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google ADK&lt;/strong&gt; for the agent structure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run&lt;/strong&gt; for deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The policy layer is ours:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which context is eligible at each step;&lt;/li&gt;
&lt;li&gt;when a full window must evict an item;&lt;/li&gt;
&lt;li&gt;how an evicted item can return;&lt;/li&gt;
&lt;li&gt;which role may act;&lt;/li&gt;
&lt;li&gt;and which handoff is allowed to become a durable ledger entry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That separation matters. A model can generate the next action; the system still needs explicit, inspectable rules for what that action is allowed to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  An honest limit
&lt;/h2&gt;

&lt;p&gt;This hackathon build keeps context and the ledger in process memory. A Cloud Run restart loses them. We deliberately do &lt;strong&gt;not&lt;/strong&gt; claim Firestore, a managed memory service, Model Armor, or a background side-track as deployed components.&lt;/p&gt;

&lt;p&gt;Those are sensible next steps, but they are not part of this submission. The architecture and README draw only what runs now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it yourself
&lt;/h2&gt;

&lt;p&gt;The repository contains reproducible instructions. The Cloud Run service is an API, rather than a browser UI. To run a complete shift against the public deployment:&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/wubian87/fermion-fleet" rel="noopener noreferrer"&gt;https://github.com/wubian87/fermion-fleet&lt;/a&gt;&lt;br&gt;
cd fermion-fleet&lt;br&gt;
URL=&lt;a href="https://fleet-843303850287.us-central1.run.app" rel="noopener noreferrer"&gt;https://fleet-843303850287.us-central1.run.app&lt;/a&gt; ./跑班.sh&lt;/p&gt;

&lt;p&gt;A cold start can take roughly 15 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;A reliable agent system should make its important no decisions boring and mechanical. The model can be creative inside the workflow; the boundary that grants permission should remain readable by code.&lt;/p&gt;

&lt;p&gt;That is the experiment behind Fermion Fleet: make a rejection visible, make a retry auditable, and make the final lock depend on a value that cannot be talked into existence.``&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>googlecloud</category>
    </item>
  </channel>
</rss>
