<?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: Empire Iron Corps</title>
    <description>The latest articles on DEV Community by Empire Iron Corps (@empireironcorps).</description>
    <link>https://dev.to/empireironcorps</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%2F4174983%2F32579159-5a33-4c4f-9af5-c59b1e55bb5b.png</url>
      <title>DEV Community: Empire Iron Corps</title>
      <link>https://dev.to/empireironcorps</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/empireironcorps"/>
    <language>en</language>
    <item>
      <title>From Unzip to Verified PASS in Three Minutes: Assembling an AI Agent Team That Checks Its Own Work</title>
      <dc:creator>Empire Iron Corps</dc:creator>
      <pubDate>Mon, 26 Oct 2026 09:08:32 +0000</pubDate>
      <link>https://dev.to/empireironcorps/from-unzip-to-verified-pass-in-three-minutes-assembling-an-ai-agent-team-that-checks-its-own-work-13af</link>
      <guid>https://dev.to/empireironcorps/from-unzip-to-verified-pass-in-three-minutes-assembling-an-ai-agent-team-that-checks-its-own-work-13af</guid>
      <description>&lt;p&gt;Most agent frameworks ask you to do one thing: trust the README. Copy some prompts, paste a config, and hope the whole thing holds together. When it doesn't, you're on your own — nothing tells you whether you assembled it wrong or the instructions were wrong to begin with.&lt;/p&gt;

&lt;p&gt;When I packaged my 16-role AI agent "company" as an open-source kit, I wanted the opposite experience. The question I cared about: &lt;strong&gt;can a stranger reproduce my setup, and can a machine prove they did?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the answer I shipped, and the thinking behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three-minute path
&lt;/h2&gt;

&lt;p&gt;The whole assembly is four steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Unpack.&lt;/strong&gt; One archive, 38 files, no build step. Windows gets a zip, Unix/macOS a tar.gz (older &lt;code&gt;unzip&lt;/code&gt; builds mangle non-ASCII filenames, so tar.gz there).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy two things to two places.&lt;/strong&gt; The 22 charters and 5 templates go to &lt;code&gt;docs/empire/&lt;/code&gt; in your project. Two knowledge-graph seed files go to &lt;code&gt;docs/knowledge-graph/&lt;/code&gt;. That split is deliberate — the org chart and the memory system are different subsystems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create an empty battle log.&lt;/strong&gt; One markdown file, &lt;code&gt;docs/PROJECT_MEMORY.md&lt;/code&gt;. This is the shared memory every role reads and writes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run the check.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node scripts/verify-empire.mjs &amp;lt;project-root&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it prints PASS, the team is assembled. If it doesn't, it tells you exactly which file is missing or inconsistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "PASS" actually means
&lt;/h2&gt;

&lt;p&gt;The verify script isn't a formality. It checks that the 22 charters are all present, that cross-references between them resolve, that the role roster matches the charters, and that the hard-boundary clauses exist where the rules say they must. Assembled-wrong fails loudly, with the specific gap named.&lt;/p&gt;

&lt;p&gt;There's a second script for the knowledge-graph side (&lt;code&gt;verify-graph.mjs&lt;/code&gt;) and a third one (&lt;code&gt;pack-lint.mjs&lt;/code&gt;) that scans the pack itself for author-internal terms before shipping — more on that below.&lt;/p&gt;

&lt;h2&gt;
  
  
  The recorded run: proof, not promises
&lt;/h2&gt;

&lt;p&gt;Inside the pack there's a file called 成功验证.md — "verified run." It is not a testimonial. It's a log of an actual assembly performed in a clean directory, from unpack to summon, with the commands and outputs written down. Every step in the manual maps to a step in the record.&lt;/p&gt;

&lt;p&gt;The rule this enforces on me as the author: &lt;strong&gt;if a step in the docs can't be reproduced, the record catches it.&lt;/strong&gt; This isn't theoretical — during development, an earlier version of the docs skipped the knowledge-graph seed step, and the verification record is what exposed it (the graph check failed on a fresh assembly even though it passed in my own workspace, where the old files masked the gap). The fix went into both the docs and the script.&lt;/p&gt;

&lt;p&gt;The lesson generalizes: a self-check that runs in the author's environment proves nothing. &lt;strong&gt;Run the check where nothing pre-exists.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The pack scans its own wording
&lt;/h2&gt;

&lt;p&gt;One more script ships in the pack: a lint that scans every markdown file for terms that shouldn't be in a public distribution — the author's internal project names, platform identifiers, automation IDs, that layer of private context. The wordlist itself is encoded into the script, so the check can run without the forbidden terms ever appearing in the repo.&lt;/p&gt;

&lt;p&gt;This one earned its keep the embarrassing way. After I added a new section mentioning my internal tooling directory, the lint flagged the path on the next run — I'd have shipped it otherwise. The check doesn't get tired and doesn't assume good intentions, which is exactly what you want from a checker.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this has to do with agent teams
&lt;/h2&gt;

&lt;p&gt;The assembly story is the small version of a bigger claim: &lt;strong&gt;agent teams need machine-checkable state, not narrative state.&lt;/strong&gt; "It's set up" and "it works" are claims, and claims need a command that can fail. The same discipline that verifies the assembly (a script with a PASS) verifies the team's daily output (evidence grades on every "done") and verifies its boundary conditions (a reviewer role whose objections are checkable, not vibes).&lt;/p&gt;

&lt;p&gt;Everything I described — the 16 role charters, the ten rules of engagement, the battle log format, the verify scripts — ships in one free pack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/yyyz1yyyz2/empire-iron-corps" rel="noopener noreferrer"&gt;https://github.com/yyyz1yyyz2/empire-iron-corps&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Downloads + install guide: &lt;a href="https://empire-iron-corps.vercel.app" rel="noopener noreferrer"&gt;https://empire-iron-corps.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;License: docs CC BY 4.0, code MIT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Honest notes, as always:&lt;/strong&gt; the charters are written in Chinese (an English edition of the pack itself is on the roadmap — this post is the English tour). All 16 member names are explicitly fictional AI personas. No income claims anywhere; it's an organizational pattern, not a product pitch.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: my own open-source project; nothing here is paid promotion.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you assemble it and something doesn't reproduce, that's the most useful issue report I could ask for.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Give Your AI Team an Officer Whose Only Job Is Saying No</title>
      <dc:creator>Empire Iron Corps</dc:creator>
      <pubDate>Sun, 18 Oct 2026 09:03:23 +0000</pubDate>
      <link>https://dev.to/empireironcorps/give-your-ai-team-an-officer-whose-only-job-is-saying-no-4205</link>
      <guid>https://dev.to/empireironcorps/give-your-ai-team-an-officer-whose-only-job-is-saying-no-4205</guid>
      <description>&lt;p&gt;Everything in the agent-tooling world is optimized for shipping: faster loops, longer context, more autonomy. Almost nothing in the stack is designed to &lt;em&gt;stop&lt;/em&gt;. So when an agent team drifts — and it will — nothing catches it, because every role you defined was built to produce.&lt;/p&gt;

&lt;p&gt;After months of running a 16-role AI "company" for my coding work, the highest-leverage structural decision wasn't a smarter planner or a better executor. It was adding a role whose entire charter is objection.&lt;/p&gt;

&lt;h2&gt;
  
  
  The failure mode: the yes-stack
&lt;/h2&gt;

&lt;p&gt;Multi-agent setups fail quietly. Each agent is agreeable by training, so a bad plan doesn't get argued down — it gets &lt;em&gt;elaborated&lt;/em&gt;. I've watched an "improvement" pass through intel ("looks promising"), product ("defines it well"), engineering ("can implement"), and growth ("ready to distribute") — four yeses stacked on an assumption nobody actually verified. The stack feels like validation. It's just momentum with extra steps.&lt;/p&gt;

&lt;p&gt;A recent post here on dev.to measured a version of this beautifully: models that correctly say "this label is wrong" when asked directly will still reproduce the wrong label when asked to generate output. Verification mode and generation mode are different modes. If every role in your pipeline lives in generation mode, the wrong thing ships politely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern: an independent veto role
&lt;/h2&gt;

&lt;p&gt;The fix I landed on — borrowed from how human organizations handle exactly this problem — is a &lt;strong&gt;risk officer&lt;/strong&gt; with three structural properties:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Independent reporting line.&lt;/strong&gt; The risk role does not report to the "CEO" agent or any department. It's a peer. This matters more than the role's intelligence: a reviewer whose evaluation is graded by the people it reviews is not a reviewer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Stop first, justify after.&lt;/strong&gt; The risk role can halt any department's action immediately; the written justification comes later, and the principal (the human, or a designated arbiter role) rules within a fixed window. The ordering is deliberate. If veto requires prior justification, the action completes while the debate happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. A charter, not a vibe.&lt;/strong&gt; "Be careful" does nothing. The role's document specifies &lt;em&gt;what it checks&lt;/em&gt; (claims without verification trails, irreversible actions without rollback plans, scope that grew mid-task, anything matching the hard-red-lines list) and &lt;em&gt;what it must produce&lt;/em&gt; (the stop reason, the specific evidence, the appeal path).&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually catches
&lt;/h2&gt;

&lt;p&gt;Genericized from real incidents in my own setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The unverifiable "done."&lt;/strong&gt; An engineering role declared a fix complete; the risk role's check — "show the verification run" — found the test suite was never executed. Not malice. Optimism with a clipboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The growth tactic that was actually spam.&lt;/strong&gt; A distribution role proposed a "community outreach" pattern that was, on inspection, posting the same pitch across twelve forums. The hard-red-lines list made this a one-line stop, not a debate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The scope that grew.&lt;/strong&gt; A "small refactor" quietly became a rewrite of a working subsystem. The stop forced the change to be re-justified at its actual size.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these require genius. They require someone whose &lt;em&gt;job&lt;/em&gt; is to look.&lt;/p&gt;

&lt;h2&gt;
  
  
  The objection I get most: "doesn't this slow everything down?"
&lt;/h2&gt;

&lt;p&gt;In tokens, yes — maybe 10% of the budget goes to the checking role. In rework, it's the cheapest line item I have. The asymmetry is the whole point: a wrong action costs a full cycle to undo; a veto costs one paragraph.&lt;/p&gt;

&lt;p&gt;And it's worth saying clearly: &lt;strong&gt;the veto is not final.&lt;/strong&gt; It escalates to the human decision-maker. What the veto does is move the default — from "actions proceed unless someone objects" to "questionable actions pause until someone rules." For a system that can act fast, that default flip is the entire product.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to steal the pattern
&lt;/h2&gt;

&lt;p&gt;You don't need my pack; the pattern is four paragraphs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add a reviewer role with &lt;strong&gt;no production duties&lt;/strong&gt; and &lt;strong&gt;no reporting line into the roles it reviews&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Give it &lt;strong&gt;stop-first authority&lt;/strong&gt; with mandatory written justification and a fixed arbitration window.&lt;/li&gt;
&lt;li&gt;Write its charter as &lt;strong&gt;checkable conditions&lt;/strong&gt;, not attitudes.&lt;/li&gt;
&lt;li&gt;Keep a human (or a separately-chartered arbiter) as the final say, so the veto can't become a denial-of-service attack on your own team.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I packaged my full version — 16 role charters including this one, with the veto language, the hard-red-lines list, and the arbitration flow — as an open-source pack (docs CC BY 4.0, code MIT): &lt;a href="https://github.com/yyyz1yyyz2/empire-iron-corps" rel="noopener noreferrer"&gt;empire-iron-corps on GitHub&lt;/a&gt;, with an install guide at &lt;a href="https://empire-iron-corps.vercel.app" rel="noopener noreferrer"&gt;the landing page&lt;/a&gt;. The charters are in Chinese; an English edition is on the roadmap. All role names are explicitly fictional AI personas, and as always: no income claims — this is an organizational pattern, shared as-is.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: my own open-source project; nothing here is paid promotion.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How does your agent setup handle the "who is allowed to say no" question? Genuinely curious — it seems like the least-discussed role in the entire stack.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Replaced My Prompt Pile with a Constitution: Organizing AI Coding Agents into a 16-Role Company</title>
      <dc:creator>Empire Iron Corps</dc:creator>
      <pubDate>Wed, 14 Oct 2026 11:24:47 +0000</pubDate>
      <link>https://dev.to/empireironcorps/i-replaced-my-prompt-pile-with-a-constitution-organizing-ai-coding-agents-into-a-16-role-company-561f</link>
      <guid>https://dev.to/empireironcorps/i-replaced-my-prompt-pile-with-a-constitution-organizing-ai-coding-agents-into-a-16-role-company-561f</guid>
      <description>&lt;p&gt;Like a lot of you, I started with one AI coding agent and a growing pile of prompts. Every incident produced a new patch: "when you do X, remember Y." Within a few months the pile was unreadable, the agent ignored half of it, and I still had to re-explain the same decisions every session.&lt;/p&gt;

&lt;p&gt;The turning point wasn't a better model. It was a different question. Instead of asking &lt;em&gt;"what prompt fixes this?"&lt;/em&gt; I started asking &lt;em&gt;"who owns this decision?"&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Personality stickers vs. enforceable charters
&lt;/h2&gt;

&lt;p&gt;Most "AI team" templates you find are personality stickers: "You are Alice, a senior engineer who loves clean code." Fun, but not load-bearing.&lt;/p&gt;

&lt;p&gt;What actually changed my agent's behavior was writing &lt;strong&gt;charters&lt;/strong&gt; instead of personas. Every role in my setup has a document that specifies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mission&lt;/strong&gt; — what this role is &lt;em&gt;for&lt;/em&gt;, in one sentence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision framework&lt;/strong&gt; — the procedure it must follow before acting (e.g. "any 'should we build X?' passes five questions: why fight it, do we have ammunition, how do we retreat, can we hold the ground, who executes")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration protocol&lt;/strong&gt; — what it must accept from other roles (a risk officer's veto is non-negotiable; bad news travels up unfiltered)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard boundaries&lt;/strong&gt; — lines it cannot cross &lt;em&gt;even when the user asks&lt;/em&gt; (spam, fake engagement, fear-selling)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output standard&lt;/strong&gt; — what its deliverable must look like (every claim graded by evidence level; "no verification run, no 'done'")&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The persona is three lines of flavor. The charter is the actual operating system.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The org chart (16 roles, no humans in the loop except decisions)
&lt;/h2&gt;

&lt;p&gt;The structure that emerged:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;CEO-role agent&lt;/strong&gt; that owns strategy and arbitration (one decision framework, applied everywhere: five questions before any battle)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eight staff officers&lt;/strong&gt;: chief of staff (sequencing), intel (recon &amp;amp; evidence grading), product (acceptance criteria), engineering (implementation &amp;amp; verification), growth (distribution), &lt;strong&gt;risk (independent veto power)&lt;/strong&gt;, opportunity (unit economics), foresight (long-range bets)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content legions&lt;/strong&gt; (writing / short-video / short-drama) with an &lt;strong&gt;independent review corps&lt;/strong&gt; — three reviewer seats that are structurally forbidden from reporting to the production chain. No review, no ship.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;standing scout&lt;/strong&gt; mechanism that continuously reconnoiters open-source practices and absorbs them (evaluate → trial → adopt → review)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The role I didn't expect to matter most: the &lt;strong&gt;risk officer&lt;/strong&gt;. Agents don't have self-preservation instincts, but they &lt;em&gt;do&lt;/em&gt; have drift. A role whose entire charter is "say no, then justify" catches the drift early.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The ten rules that survived contact with reality
&lt;/h2&gt;

&lt;p&gt;The full set ships in the pack, but three proved load-bearing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Evidence before claims.&lt;/strong&gt; No "should work." If the verification command didn't run, the task isn't done. Every claim is graded: machine-level proof, behavior-level proof, or consensus of independent checks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One battle at a time.&lt;/strong&gt; Parallelism is for independent tasks with disjoint writes — never for three half-wars. Priority conflicts get arbitrated, not raced.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A shared battle log is the memory.&lt;/strong&gt; Every action appends ≤3 lines (decision + reason, or failure + root cause + fix) to one log file. The next session starts from the log and never asks a human to re-explain context.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last one quietly killed my biggest time sink: context re-explaining. The log &lt;em&gt;is&lt;/em&gt; the handover document.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Accountability without bureaucracy
&lt;/h2&gt;

&lt;p&gt;The piece people assume must be heavy: process. It isn't, because the process is enforced by other agents, not by meetings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The review corps grades every deliverable; under threshold = automatic rework, no debate&lt;/li&gt;
&lt;li&gt;Failures trigger a four-step root-cause investigation; the same root cause twice = process blame, not bad luck&lt;/li&gt;
&lt;li&gt;Any "done" without a verification trail is treated as not-done by the next shift&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The overhead is a few hundred lines of markdown. The saving is measured in not-re-doing things.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. What I'd tell my past self
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Stop collecting prompts; start writing charters with explicit &lt;em&gt;decision frameworks&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Give one role veto power and protect its independence structurally&lt;/li&gt;
&lt;li&gt;Write the shared log format first — it's the real memory of the team&lt;/li&gt;
&lt;li&gt;Keep hard boundaries even when it's inconvenient; they're what makes delegation safe&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. The pack (free &amp;amp; open)
&lt;/h2&gt;

&lt;p&gt;I packaged the whole thing as &lt;strong&gt;Empire Iron Corps&lt;/strong&gt; — 22 charters, ten rules of engagement, five working templates, a knowledge-graph methodology for keeping lessons, and three zero-dependency verification scripts (pack integrity + assembly check + wording lint).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/yyyz1yyyz2/empire-iron-corps" rel="noopener noreferrer"&gt;https://github.com/yyyz1yyyz2/empire-iron-corps&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Landing page with downloads: &lt;a href="https://empire-iron-corps.vercel.app" rel="noopener noreferrer"&gt;https://empire-iron-corps.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;License: docs CC BY 4.0, code MIT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Honest notes:&lt;/strong&gt; the charters are written in Chinese (an English edition is on the roadmap); all 16 member names and backstories are explicitly fictional AI personas — they exist to constrain behavior, never to be passed off as real credentials; and the pack shares an organizational paradigm, with no income claims attached.&lt;/p&gt;

&lt;p&gt;If you've solved the "many agents, no accountability" problem differently, I'd genuinely like to hear how — charters plus a shared battle log is my current answer, and I assume it's not the only one.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: this is my own open-source project; nothing here is paid promotion.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
