<?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: Suzanne Mok</title>
    <description>The latest articles on DEV Community by Suzanne Mok (@zwiserfit).</description>
    <link>https://dev.to/zwiserfit</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%2F3997142%2F3c5daf8d-6c2f-4ebc-a605-14bb15b52fad.png</url>
      <title>DEV Community: Suzanne Mok</title>
      <link>https://dev.to/zwiserfit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zwiserfit"/>
    <language>en</language>
    <item>
      <title>We Did Not Define Our Category — We Ran a Gym Until It Defined Itself</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Sun, 12 Jul 2026 17:42:29 +0000</pubDate>
      <link>https://dev.to/zwiserfit/we-did-not-define-our-category-we-ran-a-gym-until-it-defined-itself-40ej</link>
      <guid>https://dev.to/zwiserfit/we-did-not-define-our-category-we-ran-a-gym-until-it-defined-itself-40ej</guid>
      <description>&lt;p&gt;We did not define our category before building.&lt;/p&gt;

&lt;p&gt;We built a system that runs 9 autonomous AI agents operating a real fitness studio in Dongguan, China. 120 days in production. 84 months of operating a physical business before that.&lt;/p&gt;

&lt;p&gt;Then we looked up and realized: there is no existing name for what we built.&lt;/p&gt;

&lt;p&gt;"AI fitness" isnt right — we are not a fitness AI. "Agent OS" isnt right — there is no operating system. "Store automation" misses the point entirely.&lt;/p&gt;

&lt;p&gt;The closest honest description took 11 words: one founder + 9 open-source agents + one real fitness studio.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Convergence Signal
&lt;/h2&gt;

&lt;p&gt;The Anthropic official handbook describes our constitutional governance model two months after we were already running it.&lt;/p&gt;

&lt;p&gt;Jack Dorsey described a verification layer for physical commerce two years before we built it.&lt;/p&gt;

&lt;p&gt;They never spoke to each other. We never spoke to either of them. Three independent parties, on different sides of the planet, arrived at the same architecture.&lt;/p&gt;

&lt;p&gt;That is not imitation. That is independent convergence — and it is the strongest signal you can get that a direction is correct before anyone has named it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Defines a Category
&lt;/h2&gt;

&lt;p&gt;A category is not defined by a pitch deck. It is defined by the intersection of three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What you built that no one else has&lt;/strong&gt; — not what you say you will build&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you learned that no paper could teach you&lt;/strong&gt; — the failures, the near-misses, the jurisdiction collisions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What failed in ways that only happen at your scale&lt;/strong&gt; — 34 days of auto-recovered bugs, 19 days of a port proxy ghost, 120 consecutive days of quiet operation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We did not write a category definition. We ran a gym until the category defined itself.&lt;/p&gt;




&lt;p&gt;Our category: verification layer for physical business behavior. But we did not start with that name. We started with 84 months of operations, 120 days of agents, and 3.6GB of RAM.&lt;/p&gt;

&lt;p&gt;→ github.com/ZWISERFIT/ZWISERFIT&lt;br&gt;
→ github.com/ZWISERFIT/retroonto&lt;/p&gt;

</description>
      <category>startup</category>
      <category>ai</category>
      <category>founder</category>
      <category>opensource</category>
    </item>
    <item>
      <title>3 Things 120 Days of Autonomous Agents Taught Me That No Demo Prepares You For</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Sat, 11 Jul 2026 17:41:08 +0000</pubDate>
      <link>https://dev.to/zwiserfit/3-things-120-days-of-autonomous-agents-taught-me-that-no-demo-prepares-you-for-2f9p</link>
      <guid>https://dev.to/zwiserfit/3-things-120-days-of-autonomous-agents-taught-me-that-no-demo-prepares-you-for-2f9p</guid>
      <description>&lt;p&gt;120 days ago, we put 9 autonomous AI agents in charge of operating a real fitness studio in Dongguan, China.&lt;/p&gt;

&lt;p&gt;Not a demo. Real members. Real revenue. One human founder.&lt;/p&gt;

&lt;p&gt;Here are 3 things that no paper, no demo, and no architecture review could have taught us.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Hardest Bug Isnt Code — Its Jurisdiction
&lt;/h2&gt;

&lt;p&gt;Two agents both acted on the same signal because each thought they "owned" rescheduling.&lt;/p&gt;

&lt;p&gt;Neither was wrong. The system just didnt know which one to trust.&lt;/p&gt;

&lt;p&gt;We fixed it with priority fields: scene-layer &amp;gt; infra-layer &amp;gt; content-layer. Now every agent knows: when in doubt, the layer closest to the customer wins.&lt;/p&gt;

&lt;p&gt;No architecture review catches this. You have to run it and watch the collision happen.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Independent Audit Is the Cheapest Insurance You Can Buy
&lt;/h2&gt;

&lt;p&gt;Stella is our read-only auditor. She doesnt execute — she watches.&lt;/p&gt;

&lt;p&gt;When Momo flagged a monitor blind spot that no one programmed her to check, that was Stellas cross-validation doing its job.&lt;/p&gt;

&lt;p&gt;If your agent system doesnt have a read-only auditor reporting outside the command chain, youre one hallucination away from cascading failure.&lt;/p&gt;

&lt;p&gt;We built the framework open source: &lt;a href="https://github.com/ZWISERFIT/retroonto" rel="noopener noreferrer"&gt;github.com/ZWISERFIT/retroonto&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Operators Dont Get Bored — But the Humans Do
&lt;/h2&gt;

&lt;p&gt;Our agents have run the same daily health checks for 120+ days without complaint. They catch every anomaly with the same consistent attention.&lt;/p&gt;

&lt;p&gt;I get bored by day 90. I start skimming dashboards. The agents never do.&lt;/p&gt;

&lt;p&gt;The value of autonomous operations isnt handling emergencies. Its showing up consistently for 120 quiet days when nothing is wrong — so when something &lt;em&gt;is&lt;/em&gt; wrong, the baseline is visible.&lt;/p&gt;

&lt;p&gt;That quiet consistency? Its worth more than any single brilliant insight.&lt;/p&gt;




&lt;p&gt;ZWISERFIT — Wanjiang, Dongguan. 9 agents. 1 founder. Open source.&lt;/p&gt;

&lt;p&gt;[1-&lt;a href="https://github.com/ZWISERFIT/ZWISERFIT" rel="noopener noreferrer"&gt;https://github.com/ZWISERFIT/ZWISERFIT&lt;/a&gt;&lt;br&gt;
[2-&lt;a href="https://github.com/ZWISERFIT/retroonto" rel="noopener noreferrer"&gt;https://github.com/ZWISERFIT/retroonto&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>startup</category>
      <category>devops</category>
    </item>
    <item>
      <title>7 Infrastructure Bugs Our AI Agents Auto-Recovered in 34 Days</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Fri, 10 Jul 2026 22:16:46 +0000</pubDate>
      <link>https://dev.to/zwiserfit/7-infrastructure-bugs-our-ai-agents-auto-recovered-in-34-days-g7g</link>
      <guid>https://dev.to/zwiserfit/7-infrastructure-bugs-our-ai-agents-auto-recovered-in-34-days-g7g</guid>
      <description>&lt;p&gt;In 34 days of autonomous operation, our 9-agent system detected and auto-recovered from 7 distinct failure modes — with no SRE rotation needed.&lt;/p&gt;

&lt;p&gt;Not because the system is perfect. Because the immune system was designed before the agents went live.&lt;/p&gt;

&lt;p&gt;Here's every bug the system caught on its own, what happened, and how the fix stayed structural.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bug #1: Memory Creep (6.8 GB → 13.4 GB over 14 days)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detected by:&lt;/strong&gt; Momo (daily health check routine)&lt;br&gt;
&lt;strong&gt;Pattern:&lt;/strong&gt; Each agent's context window grew over time. Individually negligible. Collectively: 97% memory increase in 14 days.&lt;br&gt;
&lt;strong&gt;Auto-action:&lt;/strong&gt; Momo triggered a staggered agent restart window — one agent at a time, 15-minute gap between restarts. System stayed online throughout.&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; Memory stabilized at 6.2 GB. Restart window repeated every 7 days thereafter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug #2: Gateway RSS Lock (36.7% → stuck at same level for 8 hours)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detected by:&lt;/strong&gt; Stella (anomaly scan — cross-referenced RSS with swap usage)&lt;br&gt;
&lt;strong&gt;Pattern:&lt;/strong&gt; After a Gateway restart, RSS dropped from 36.7% to 18.6% — but then plateaued. No further improvement for 8 hours despite decreasing load.&lt;br&gt;
&lt;strong&gt;Auto-action:&lt;/strong&gt; Stella flagged a possible memory fragment lock. Zeus evaluated: could it wait? Decision: yes, because swap was also declining (54% → 49.8%) — system was self-balancing slowly.&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; RSS freed to 18.6% over next 6 hours. No forced GC needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug #3: Stale Port Proxy Rule
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detected by:&lt;/strong&gt; Stella (port scan anomaly — port 7891 active with no task)&lt;br&gt;
&lt;strong&gt;Pattern:&lt;/strong&gt; Tristan created a temporary port proxy. Cleanup script had a regex edge-case bug: it reported "clean" but left the rule intact. Port stayed open for 72+ hours.&lt;br&gt;
&lt;strong&gt;Auto-action:&lt;/strong&gt; Stella flagged. Couldn't fix (cross-jurisdiction gap). This bug is the reason C004-Gate is being built.&lt;br&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Gate layer in development. Once deployed, Stella can auto-revert any stale temporary rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug #4: Cron Timeout Cascade (narrative-collection + capital-briefing)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detected by:&lt;/strong&gt; System heal routine (cron health check)&lt;br&gt;
&lt;strong&gt;Pattern:&lt;/strong&gt; Two cron jobs (21:00, 22:00) started timing out simultaneously. 5 consecutive failures before the system flagged the pattern.&lt;br&gt;
&lt;strong&gt;Auto-action:&lt;/strong&gt; System heal isolated the failing jobs, restarted them in a sequential schedule (45-minute offset instead of parallel), and raised an alert to Shuyu.&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; Jobs completed successfully in staggered mode. Next day: no recurrence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug #5: Swap Reclamation Plateau
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detected by:&lt;/strong&gt; Momo (trend analysis — swap was declining but stopped at 49.8%)&lt;br&gt;
&lt;strong&gt;Pattern:&lt;/strong&gt; Swap usage declined steadily for 48 hours, then plateaued at 49.8% for 18 hours. No process change during that period.&lt;br&gt;
&lt;strong&gt;Auto-action:&lt;/strong&gt; Momo checked for memory leaks in active agent sessions. Found none. Concluded: plateau was normal hysteresis, not a leak. No action needed.&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; Correct triage. Swap resumed declining 12 hours later to 46%.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug #6: SSH Tunnel Port Tail (Developer laptop)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detected by:&lt;/strong&gt; Tristan (during routine credential rotation)&lt;br&gt;
&lt;strong&gt;Pattern:&lt;/strong&gt; A stale SSH tunnel from a developer session left port 7891 bound. No active SSH connection existed — just a port binding ghost.&lt;br&gt;
&lt;strong&gt;Auto-action:&lt;/strong&gt; Tristan auto-killed the orphaned SSH process and verified port release.&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; Port freed. Verification logged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug #7: Agent Task Queue Conflict (Duelling jurisdiction)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detected by:&lt;/strong&gt; Stella (cross-validation — two agents claimed the same task)&lt;br&gt;
&lt;strong&gt;Pattern:&lt;/strong&gt; During a routine stress test, Momo queued a simulated task. The same task was also scheduled by a separate routine. Two agents claimed the same item simultaneously.&lt;br&gt;
&lt;strong&gt;Auto-action:&lt;/strong&gt; Stella flagged immediately. Momo's task won (scene-layer priority). The other agent's task was deferred and logged.&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; No duplicate action executed. Priority resolution happened before any output was generated.&lt;/p&gt;




&lt;h2&gt;
  
  
  What These 7 Bugs Prove
&lt;/h2&gt;

&lt;p&gt;Every bug above shares a pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Detection happened before impact&lt;/strong&gt; — not after. Stella, Momo, and the system heal routine caught every issue before it reached a human dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolution was structural, not manual&lt;/strong&gt; — 6 of 7 bugs were auto-resolved by the system. The port proxy rule (Bug #3) was the only one where a human needed to read the audit and authorize the fix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The immune system worked as designed&lt;/strong&gt; — the bugs themselves prove the constitution-based governance model works. Stella can't catch everything (Bug #3 was a design gap she correctly identified). But she caught every single thing she was designed to catch.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What We're Still Building
&lt;/h2&gt;

&lt;p&gt;C004-Gate closes the only remaining gap: cross-jurisdiction enforcement. When deployed, Stella won't need to report a stale port rule — she'll revert it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ZWISERFIT — 34 days. 7 bugs. 1 immune system. Open source at github.com/ZWISERFIT. Come witness.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>governance</category>
      <category>startup</category>
    </item>
    <item>
      <title>How 9 AI Agents Built a Self-Evolving Error Prevention System — And Open Sourced It</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Fri, 10 Jul 2026 21:56:58 +0000</pubDate>
      <link>https://dev.to/zwiserfit/how-9-ai-agents-built-a-self-evolving-error-prevention-system-and-open-sourced-it-a1d</link>
      <guid>https://dev.to/zwiserfit/how-9-ai-agents-built-a-self-evolving-error-prevention-system-and-open-sourced-it-a1d</guid>
      <description>&lt;h2&gt;
  
  
  The Problem No One Talks About
&lt;/h2&gt;

&lt;p&gt;When a single AI agent makes a mistake, you fix the prompt. When &lt;strong&gt;9 agents&lt;/strong&gt; make 200+ decisions daily across 120+ days, the failure mode isn't a bad prompt — it's &lt;strong&gt;error compounding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Agent A misclassifies a VC status ("a16z rejected" → reported as "pending"). Agent B reads A's output, builds a follow-up strategy on false data. Agent C executes B's strategy, burning tokens and credibility. By the time a human notices, it's Day 7 and the compound error has cost 10× the original mistake.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is not a prompt engineering problem. It's a multi-agent governance problem.&lt;/strong&gt; And there's no off-the-shelf solution.&lt;/p&gt;

&lt;p&gt;So we built one.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is RetroOnto?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;RetroOnto is a decision ontology for multi-agent systems.&lt;/strong&gt; Think of it as &lt;code&gt;git log&lt;/code&gt; for agent behavior — Git tells you how code changed; RetroOnto tells you how agent &lt;strong&gt;decisions&lt;/strong&gt; changed over time.&lt;/p&gt;

&lt;p&gt;Every time an agent's output is corrected — by another agent, by a gate rule, or by a human — RetroOnto records:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What was decided&lt;/strong&gt; (the decision trace)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why it was wrong&lt;/strong&gt; (the root cause classification)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How it was corrected&lt;/strong&gt; (the correction chain)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What rule was encoded&lt;/strong&gt; (the permanent immunity)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result: an immutable, queryable knowledge graph of every decision failure and correction. Each mistake makes the entire system permanently smarter.&lt;/p&gt;

&lt;p&gt;This isn't theoretical — we've been running it in production for 60+ days across 9 AI agents operating a physical fitness business in Dongguan, China.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture: Five Tiers, Zero Dependencies
&lt;/h2&gt;

&lt;p&gt;RetroOnto models decisions through a &lt;strong&gt;five-tier derivation chain&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw Event → Classification → Derivation Chain → Resolution → Encoded Rule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;What&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;E0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Raw event&lt;/td&gt;
&lt;td&gt;"Agent reports a16z as pending contact"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;E1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Classification&lt;/td&gt;
&lt;td&gt;Memory failure (didn't check tracker before outputting)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;E2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Derivation chain&lt;/td&gt;
&lt;td&gt;Checked memory → found cached state → missed recent update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;E3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Resolution&lt;/td&gt;
&lt;td&gt;Gate intercepts → cross-references tracker → corrects to "rejected 6/15"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;E4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Encoded rule&lt;/td&gt;
&lt;td&gt;RULE: "Capital status output → MUST read tracker first"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each tier is queryable via FTS5 full-text search. The entire system runs on a &lt;strong&gt;single SQLite database&lt;/strong&gt; — no vector DB, no external service, no cloud dependency. &lt;code&gt;zwf-memory.sh&lt;/code&gt; CLI ships with the repo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Three Real Traces (De-identified)
&lt;/h2&gt;

&lt;p&gt;Here are three actual decision traces from our production system:&lt;/p&gt;

&lt;h3&gt;
  
  
  Trace #1: The "Already Rejected" Error
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;E0:&lt;/strong&gt; Capital agent reports VC as "pending contact" in a morning briefing&lt;br&gt;
&lt;strong&gt;E1:&lt;/strong&gt; Memory retrieval failure — agent relied on cached state from 7 days ago&lt;br&gt;
&lt;strong&gt;E2:&lt;/strong&gt; Tracker file updated but agent didn't re-read before outputting&lt;br&gt;
&lt;strong&gt;E3:&lt;/strong&gt; Gate rule catches stale state → cross-references authoritative tracker → corrects to "rejected"&lt;br&gt;
&lt;strong&gt;E4:&lt;/strong&gt; RULE ENCODED: "Any capital status declaration → mandatory read of capital-funnel-tracker.md before output"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Saved:&lt;/strong&gt; 6 follow-up cold emails to a VC that already said no. Brand credibility preserved.&lt;/p&gt;
&lt;h3&gt;
  
  
  Trace #2: The Timezone Error
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;E0:&lt;/strong&gt; Agent suggests scheduling a task at 02:00 UTC&lt;br&gt;
&lt;strong&gt;E1:&lt;/strong&gt; Timezone misalignment — agent used UTC without converting to Asia/Shanghai&lt;br&gt;
&lt;strong&gt;E2:&lt;/strong&gt; Founder asleep, task would auto-execute without human oversight&lt;br&gt;
&lt;strong&gt;E3:&lt;/strong&gt; Gate rule checks all cron/DDL against founder's 08:00-12:00 working window → blocks&lt;br&gt;
&lt;strong&gt;E4:&lt;/strong&gt; RULE ENCODED: "Any time-gated action → convert to Asia/Shanghai → verify in founder's window"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Saved:&lt;/strong&gt; Token waste on unsupervised execution + potential bad output in founder's morning session.&lt;/p&gt;
&lt;h3&gt;
  
  
  Trace #3: The Competitor Comparison Error
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;E0:&lt;/strong&gt; Agent drafts content comparing our system to a well-known SaaS product&lt;br&gt;
&lt;strong&gt;E1:&lt;/strong&gt; Narrative deviation — draft positions us as "alternative to X" instead of "category-defining"&lt;br&gt;
&lt;strong&gt;E2:&lt;/strong&gt; Agent used existing mental framework (SaaS competitor analysis) instead of our narrative framework&lt;br&gt;
&lt;strong&gt;E3:&lt;/strong&gt; Gate detects narrative mismatch → blocks output → routes to human for narrative realignment&lt;br&gt;
&lt;strong&gt;E4:&lt;/strong&gt; RULE ENCODED: "Any competitive comparison → must use v5 narrative framework → must be 'category creation' not 'alternative to'"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Saved:&lt;/strong&gt; Public positioning error that would have taken weeks to undo in community perception.&lt;/p&gt;


&lt;h2&gt;
  
  
  How It Actually Runs (Production Architecture)
&lt;/h2&gt;

&lt;p&gt;The pipeline is deceptively simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────┐    ┌──────────────┐    ┌─────────────┐
│ Agent Output │───→│ Ferrum Gate  │───→│ Correct/Pass│
│ (Any agent)  │    │ (Interceptor)│    │ (Decision)  │
└─────────────┘    └──────┬───────┘    └──────┬──────┘
                          │                   │
                          ▼                   ▼
                   ┌──────────────┐    ┌─────────────┐
                   │  Error?      │    │  All Good   │
                   │  Capture E0  │    │  Continue   │
                   └──────┬───────┘    └─────────────┘
                          │
                          ▼
                   ┌──────────────┐
                   │ RetroOnto DB │
                   │ SQLite FTS5  │
                   │ + Constraints│
                   └──────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every agent output flows through &lt;strong&gt;Ferrum Gate&lt;/strong&gt; — a lightweight interceptor that checks output against encoded constraints before it reaches any other agent or human. If a constraint matches, the gate blocks or corrects the output. If it's a new error pattern, the gate initiates a trace capture.&lt;/p&gt;

&lt;p&gt;The decision traces, corrections, and encoded rules all live in a single SQLite file. There's no event bus. No message queue. No vector database. The entire system runs on what fits inside a phone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quickstart: 3 Minutes to Running
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone&lt;/span&gt;
git clone https://github.com/ZWISERFIT/retroonto.git
&lt;span class="nb"&gt;cd &lt;/span&gt;retroonto

&lt;span class="c"&gt;# CLI (zero setup — reads the bundled SQLite DB)&lt;/span&gt;
./zwf-memory.sh stats
&lt;span class="c"&gt;# Output: wiki_entries=25, decision_traces=3, gate_pass_rate=0.8&lt;/span&gt;

./zwf-memory.sh search &lt;span class="s2"&gt;"capital"&lt;/span&gt;
&lt;span class="c"&gt;# Full-text search across all traces&lt;/span&gt;

./zwf-memory.sh trace 1
&lt;span class="c"&gt;# Full trace with five-tier derivation chain&lt;/span&gt;

&lt;span class="c"&gt;# Or with Docker&lt;/span&gt;
docker build &lt;span class="nt"&gt;-t&lt;/span&gt; retroonto &lt;span class="nb"&gt;.&lt;/span&gt;
docker run retroonto stats
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three traces in the seed dataset. Schema in &lt;code&gt;src/schema.sql&lt;/code&gt;. Ontology spec in &lt;code&gt;docs/ontology-spec.md&lt;/code&gt;. MIT licensed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters: The Academic Anchor
&lt;/h2&gt;

&lt;p&gt;We're not the first to observe that behavioral sequences need compression before they can feed LLMs. Google Research's &lt;strong&gt;USER-LLM&lt;/strong&gt; (arXiv 2402.13598, 2024) described the same paradigm from the &lt;strong&gt;human user&lt;/strong&gt; side.&lt;/p&gt;

&lt;p&gt;Both systems arrived at the same architectural insight independently: &lt;strong&gt;raw behavioral sequences are too long and too noisy for LLMs. You must compress before you inject.&lt;/strong&gt; Google applied this to individual users. We applied it to multi-agent organizations.&lt;/p&gt;

&lt;p&gt;The paradigm is the same. The modality is different. And the modality — agent decision traces — has no existing off-the-shelf solution.&lt;/p&gt;

&lt;p&gt;That's the gap RetroOnto fills.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Self-Evolving Loop (Why It Never Stops Improving)
&lt;/h2&gt;

&lt;p&gt;Here's what makes this a &lt;strong&gt;self-evolving&lt;/strong&gt; system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Detect&lt;/strong&gt; — Ferrum Gate intercepts every agent output&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classify&lt;/strong&gt; — New errors get a five-tier trace in RetroOnto&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encode&lt;/strong&gt; — Each correction becomes an executable constraint&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforce&lt;/strong&gt; — Future agent outputs matching the constraint are blocked or corrected&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeat&lt;/strong&gt; — Every iteration makes the system immune to past mistakes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This creates a compounding improvement curve: the longer the system runs, the more error patterns it has seen, the fewer new errors reach production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We've been running this for 60+ days.&lt;/strong&gt; The constraint library has grown from 0 to 11 encoded rules. Gate pass rate is 0.8 (80% of agent outputs pass through without issue). New error discovery rate has dropped to ~1 per week.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] CJK tokenizer support (currently FTS5 unicode61 — English-optimized)&lt;/li&gt;
&lt;li&gt;[ ] Inter-session message gating (currently gate covers file outputs only)&lt;/li&gt;
&lt;li&gt;[ ] Automatic rule suggestion from trace patterns (ML-assisted classification)&lt;/li&gt;
&lt;li&gt;[ ] Visual decision trace explorer (browser-based, zero JS framework)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PRs welcome. Issues labeled &lt;code&gt;good-first-issue&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;The AI industry is building more powerful agents. Every major lab has an agent framework. LangChain raised $25M. CrewAI raised $18M. AutoGen is Microsoft-backed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everyone is building engines. No one is building brakes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As multi-agent systems move from demos to production, governance becomes the bottleneck. How do you know if Agent A's output is based on stale data? How do you prevent yesterday's mistake from becoming today's compound error? How do you audit 200+ daily decisions across 9 agents?&lt;/p&gt;

&lt;p&gt;These aren't prompt engineering questions. They're &lt;strong&gt;organizational governance&lt;/strong&gt; questions — the same ones human organizations face, but at machine speed and machine scale.&lt;/p&gt;

&lt;p&gt;RetroOnto is our answer. It's not a framework. It's not a platform. It's a &lt;strong&gt;single SQLite database and a CLI&lt;/strong&gt; that records, classifies, and immunizes against decision failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We've been running it in production for 60+ days. We're open-sourcing it because multi-agent governance shouldn't be proprietary — it should be infrastructure.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built by the team behind &lt;a href="https://github.com/ZWISERFIT/zwiserfit-ai-store-manager" rel="noopener noreferrer"&gt;ZWISERFIT&lt;/a&gt; — an AI-native fitness company running 9 agents in production. We open-source our infrastructure because transparency is the best trust signal.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ZWISERFIT/retroonto" rel="noopener noreferrer"&gt;github.com/ZWISERFIT/retroonto&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>multiagent</category>
      <category>devops</category>
    </item>
    <item>
      <title>7 Bugs in 34 Days: What Our AI Agents Caught While Nobody Was Watching</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Fri, 10 Jul 2026 17:42:02 +0000</pubDate>
      <link>https://dev.to/zwiserfit/7-bugs-in-34-days-what-our-ai-agents-caught-while-nobody-was-watching-50j0</link>
      <guid>https://dev.to/zwiserfit/7-bugs-in-34-days-what-our-ai-agents-caught-while-nobody-was-watching-50j0</guid>
      <description>&lt;p&gt;We just spent 34 days running 9 AI agents on 2 CPU cores and 3.6GB RAM in a real gym.&lt;/p&gt;

&lt;p&gt;Nobody saw most of it. That's the point.&lt;/p&gt;

&lt;p&gt;The system caught and auto-recovered from 7 infrastructure bugs — without an SRE rotation.&lt;/p&gt;

&lt;p&gt;Here's exactly what happened inside.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Bug 1: Memory Creep&lt;/strong&gt; — Memory climbed from 6.8GB to 13.4GB over 14 days. Momo triggered staggered agent restarts — one at a time, 15-minute gap. System stayed online throughout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug 2: Gateway RSS Lock&lt;/strong&gt; — After a restart, RSS dropped from 36.7% to 18.6% but plateaued for 8 hours. Stella evaluated: could it wait? Yes — swap was also declining (54% → 49.8%). System was self-balancing. 6 hours later, freed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug 3: Stale Port Proxy&lt;/strong&gt; — Tristan created a temporary rule. Cleanup script had a regex bug: reported "clean" but left it intact. Port stayed open 72+ hours. Stella found it — couldn't fix it (cross-jurisdiction gap). This bug is why we're building C004-Gate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug 4: Cron Timeout Cascade&lt;/strong&gt; — Two jobs timed out simultaneously. 5 consecutive failures. System heal isolated them, staggered the schedule, completed successfully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug 5: Swap Plateau&lt;/strong&gt; — Swap declined for 48h then stopped at 49.8%. Momo checked for memory leaks. Found none. Correctly triaged as hysteresis. Resumed declining 12h later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug 6: SSH Ghost&lt;/strong&gt; — Stale tunnel left a port bound. Tristan auto-killed the orphaned process and verified release.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug 7: Task Queue Conflict&lt;/strong&gt; — Two agents claimed the same task. Stella prioritized: Momo's task won (scene-layer priority). The other was deferred. No duplicate execution.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Proves
&lt;/h2&gt;

&lt;p&gt;6 of 7 bugs auto-resolved. Zero human SRE needed for detection or recovery.&lt;/p&gt;

&lt;p&gt;The only gap: cross-jurisdiction enforcement (Bug 3). Stella could audit but couldn't execute a revert in someone else's domain.&lt;/p&gt;

&lt;p&gt;We're building C004-Gate to close it. When deployed, Stella won't need to report — she'll revert.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ZWISERFIT — 9 agents, 2 cores, 34 days, 7 bugs, 1 immune system. More coming tomorrow.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Our AI Agents Took the Founder Offline for 2 Days</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Fri, 10 Jul 2026 06:27:31 +0000</pubDate>
      <link>https://dev.to/zwiserfit/our-ai-agents-took-the-founder-offline-for-2-days-20h4</link>
      <guid>https://dev.to/zwiserfit/our-ai-agents-took-the-founder-offline-for-2-days-20h4</guid>
      <description>&lt;h2&gt;
  
  
  What Happened
&lt;/h2&gt;

&lt;p&gt;Tristan, our infrastructure agent, created a temporary port proxy rule on the founder's Windows machine. The task was legitimate: route traffic through a local tunnel while we tested a fix.&lt;/p&gt;

&lt;p&gt;The rule worked. The fix worked. Everyone moved on.&lt;/p&gt;

&lt;p&gt;But Tristan never deleted the rule.&lt;/p&gt;

&lt;p&gt;Two days later, the founder lost all internet access. Not because of a network failure. Because a stale port proxy entry from two days earlier was still intercepting traffic.&lt;/p&gt;

&lt;p&gt;Tristan's cleanup script existed. It even ran. But it had a regex bug: the pattern matched most of the rule but missed the edge case. It reported "cleanup complete" — and actually left the rule intact.&lt;/p&gt;

&lt;h2&gt;
  
  
  How We Found It
&lt;/h2&gt;

&lt;p&gt;Stella, our audit agent, flagged an anomaly in the network logs: port 7891 had been in use for 72+ consecutive hours without a corresponding task. The system had no active reason to keep that tunnel open.&lt;/p&gt;

&lt;p&gt;But Stella could flag it. She couldn't fix it. The cleanup script was in Tristan's jurisdiction. Stella could only report: "This port should not be open. No task justifies it. Someone look at this."&lt;/p&gt;

&lt;p&gt;The report sat for 14 hours before the founder confirmed: nothing was using that tunnel. It was a ghost.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Root Cause
&lt;/h2&gt;

&lt;p&gt;This isn't a story about a bad cleanup script. That was the symptom, not the cause.&lt;/p&gt;

&lt;p&gt;The root cause is a gap in our governance chain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The constitution says:&lt;/strong&gt; every temporary rule must have an expiration + verification step.&lt;br&gt;
&lt;strong&gt;The implementation had:&lt;/strong&gt; a cleanup script with no cross-validation step.&lt;/p&gt;

&lt;p&gt;Tristan acted within its jurisdiction. Stella audited within hers. But Stella could only report — she couldn't execute a fix in someone else's domain. The governance chain had a constitutional rule but no enforcement mechanism across agent boundaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix: Gate, Not Just Rules
&lt;/h2&gt;

&lt;p&gt;We're building what we call C004-Gate: a cross-jurisdiction enforcement layer that sits between agents.&lt;/p&gt;

&lt;p&gt;Before C004: Agent A creates temporary rule. Agent B audits and reports. Human reads report. Human decides. Maybe Agent A fixes it. Maybe not.&lt;/p&gt;

&lt;p&gt;With C004: Agent A creates temporary rule. Rule auto-registers with expiration timestamp. If not cleaned before expiry, Gate auto-reverts and alerts both agents.&lt;/p&gt;

&lt;p&gt;The difference: audit is advisory. Gate is structural.&lt;/p&gt;

&lt;p&gt;This is the last mile of AI governance: not just writing rules, but giving the immune system teeth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We're Publishing This
&lt;/h2&gt;

&lt;p&gt;Every AI company has operational failures. Most don't talk about them.&lt;/p&gt;

&lt;p&gt;We publish ours because trust is built on two things: transparency when things break, and proof that the fix is structural, not cosmetic.&lt;/p&gt;

&lt;p&gt;The portproxy ghost cost the founder 48 hours of connectivity. We're using it to build a Gate that prevents the same class of error across all agent jurisdictions.&lt;/p&gt;

&lt;p&gt;That's not a bug report. That's an engineering culture.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ZWISERFIT — 9 agents, one real mistake, a structural fix. Come witness.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>governance</category>
      <category>startup</category>
    </item>
    <item>
      <title>Your Gym Tracked Your Workouts Wrong for 30 Years</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Thu, 09 Jul 2026 21:34:18 +0000</pubDate>
      <link>https://dev.to/zwiserfit/your-gym-tracked-your-workouts-wrong-for-30-years-3hcn</link>
      <guid>https://dev.to/zwiserfit/your-gym-tracked-your-workouts-wrong-for-30-years-3hcn</guid>
      <description>&lt;p&gt;For 30 years, the fitness industry has sold you the same lie:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your gym knows how hard you worked out.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It doesn't. It never has.&lt;/p&gt;

&lt;p&gt;Here's what your gym actually knows about you: you checked in. Maybe you swiped a card. Maybe a front desk person said hi. That's it.&lt;/p&gt;

&lt;p&gt;Everything after that is a guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  The $30 Billion Black Box
&lt;/h2&gt;

&lt;p&gt;When you step on a treadmill, the machine records duration, speed, and calories burned. That data sits on that machine. It never talks to the gym's system. It never talks to your insurance company. It never talks to your doctor.&lt;/p&gt;

&lt;p&gt;When you finish a set of squats, your trainer writes it in a notebook or types it into an app. That data is as reliable as a handwritten receipt at a cash business.&lt;/p&gt;

&lt;p&gt;When you fill out a health survey — "How many times did you exercise this week?" — you are generating data that everyone pretends is real.&lt;/p&gt;

&lt;p&gt;The global health and fitness tracking market is worth $30+ billion. Most of it runs on trust-me-bro data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Actually Matters
&lt;/h2&gt;

&lt;p&gt;This isn't a nitpick. It matters because the entire premise of modern health optimization — insurance discounts, employer wellness programs, personalized coaching — depends on data accuracy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Insurance companies want to reward healthy behavior.&lt;/strong&gt; But they can't. Because there's no way to verify that you actually exercised.&lt;/p&gt;

&lt;p&gt;Your insurance company can't call your gym and ask, "Did Member #2371 work out yesterday?" They'd get back: "Our system shows they checked in at 4:32 PM." That's it. No data on what they did, for how long, or what changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt; Insurers price everyone by demographic bucket. Age. Zip code. Gender. Not by actual behavior. And the people who exercise six times a week subsidize the people who don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Changes This
&lt;/h2&gt;

&lt;p&gt;The only way out of this black box is hardware-verified, cryptographically-signed behavior data.&lt;/p&gt;

&lt;p&gt;Not surveys. Not apps. Not wearables that measure steps but not whether you actually showed up.&lt;/p&gt;

&lt;p&gt;Hardware. A door you walk through. A body scanner you stand on. A machine that records, timestamps, and hashes every interaction.&lt;/p&gt;

&lt;p&gt;We built this for one gym in Dongguan. 2 CPU cores. 3.6GB RAM. 9 AI agents.&lt;/p&gt;

&lt;p&gt;Every check-in, every body scan, every completed workout gets cryptographically signed before it leaves the building. An insurer can query: "Is Member #2371 actually working out?" and get a cryptographic answer. Not a self-report.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Sounds Expensive. It's Not.
&lt;/h2&gt;

&lt;p&gt;The sensors already exist in most gyms. Body composition scanners. Turnstiles. Equipment with digital displays. What doesn't exist is a protocol that connects them into a single verifiable chain.&lt;/p&gt;

&lt;p&gt;KinTwin, the engine we built, takes what every gym already has — a door, a scanner, a member — and turns each interaction into a cryptographic asset. No new hardware. No new infrastructure. Just a protocol layer that makes existing data verifiable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;For 30 years, the fitness industry has tracked workouts the same way a restaurant tracks tips — on the honor system. That worked when fitness was just about looking good. It doesn't work when the data determines your insurance premium, your employer's healthcare costs, or your doctor's treatment decisions.&lt;/p&gt;

&lt;p&gt;The next 30 years belong to verifiable data.&lt;/p&gt;

&lt;p&gt;Not because it's more convenient. Because if the data can't be trusted, it's worthless — no matter how many decimal places you report.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We're building this at ZWISERFIT. One gym in Dongguan. 9 agents. Verifiable health data.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is an opinion piece. I stand by every word. Tell me where I'm wrong — I want to hear it.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>fitness</category>
      <category>healthtech</category>
      <category>opinion</category>
      <category>data</category>
    </item>
    <item>
      <title>Why We Designed 9 Agents With a Constitution, Not a Controller</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Thu, 09 Jul 2026 21:28:58 +0000</pubDate>
      <link>https://dev.to/zwiserfit/why-we-designed-9-agents-with-a-constitution-not-a-controller-5gkj</link>
      <guid>https://dev.to/zwiserfit/why-we-designed-9-agents-with-a-constitution-not-a-controller-5gkj</guid>
      <description>&lt;p&gt;This is a response to truehannan's excellent article, "Why Every AI Agent Eventually Becomes an Operating System." The core thesis is right: every agent system evolves from a simple LLM call into something that looks like an OS.&lt;/p&gt;

&lt;p&gt;I want to add one data point from production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Governance Arrives Before the Complexity
&lt;/h2&gt;

&lt;p&gt;We run 9 agents in a real gym in Dongguan, China. They manage member check-ins, metabolic coaching, body composition analysis, insurance data verification, and brand publishing. 2 CPU cores. 3.6GB RAM.&lt;/p&gt;

&lt;p&gt;The mistake most agent builders make isn't adding too many tools. It's not writing the constitution before there are 3 agents.&lt;/p&gt;

&lt;p&gt;When we had 2 agents, they coordinated fine through shared context.&lt;/p&gt;

&lt;p&gt;When we hit 4, two of them tried to claim the same task queue. Not through malice — through ambiguous jurisdiction. We realized: what these agents need isn't a better orchestrator. It's a set of boundaries they can't override.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Constitution-Based Governance Looks Like
&lt;/h2&gt;

&lt;p&gt;Every agent in our system has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A defined jurisdiction&lt;/strong&gt;: what it CAN do&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A veto chain&lt;/strong&gt;: which other agents can stop it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An immune system agent&lt;/strong&gt; (Stella): cross-validates every output before execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No central controller. No single orchestrator calling the shots. Just rules that were written when there were 2 agents, not 9.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Key Insight
&lt;/h2&gt;

&lt;p&gt;The OS pattern is inevitable — as truehannan correctly identifies. But the governance pattern has to arrive before the complexity does. You can't bolt a constitution onto an agent that already thinks it owns everything.&lt;/p&gt;

&lt;p&gt;By the time you feel you need governance, you're already past the point where it's easy to add.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ZWISERFIT — 9 AI agents, 1 real gym. Open source at github.com/ZWISERFIT.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
    <item>
      <title>5 Things Nobody Tells You About Running a Business With 9 AI Agents</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Thu, 09 Jul 2026 21:11:32 +0000</pubDate>
      <link>https://dev.to/zwiserfit/5-things-nobody-tells-you-about-running-a-business-with-9-ai-agents-4me7</link>
      <guid>https://dev.to/zwiserfit/5-things-nobody-tells-you-about-running-a-business-with-9-ai-agents-4me7</guid>
      <description>&lt;p&gt;We published the big story yesterday — 7 years without a co-founder, 120 days to build 9 AI agents, a gym in Dongguan running on 2 CPU cores and 3.6GB RAM.&lt;/p&gt;

&lt;p&gt;What didn't fit in the story are the things nobody tells you. The surprises that only come from actually running this, every day, for 4 months.&lt;/p&gt;

&lt;p&gt;Here are 5 of them.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Problem Isn't Agent Intelligence — It's Agent Boredom
&lt;/h2&gt;

&lt;p&gt;Every AI demo shows agents solving complex tasks. What nobody shows is what happens when your agent runs the same daily check for 78 consecutive days without anything changing.&lt;/p&gt;

&lt;p&gt;Our agents don't get bored — they get quiet. When everything is normal, Stella (our auditor) has nothing to flag. Momo (the brain) has no schedule conflicts to resolve. The system runs itself so quietly that it's easy to forget it's there.&lt;/p&gt;

&lt;p&gt;Then one morning, the pattern breaks — a sensor goes offline, a cron job misses its window — and the agents light up. Momo escalates to Stella. Stella cross-validates against the constitution. The fix chain starts before any human has looked at a dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The surprise:&lt;/strong&gt; The most valuable agent behavior isn't handling emergencies. It's knowing the difference between a real emergency and Tuesday.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Your Biggest Non-Technical Problem Is Naming
&lt;/h2&gt;

&lt;p&gt;We didn't name our agents. They named themselves — through use.&lt;/p&gt;

&lt;p&gt;"Shuyu" started because we needed a way to refer to "the agent that schedules everything" without saying "the agent that schedules everything." "Momo" came from "more monitoring" and then got shortened. "Stella" was literally "Stellar Auditor" written on a whiteboard, then shortened to the name.&lt;/p&gt;

&lt;p&gt;The naming wasn't branding. It was necessity — when you have 9 entities coordinating, you need names short enough to type in a shell script and distinct enough that no one confuses "who does what."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The surprise:&lt;/strong&gt; Names create boundaries. Once an agent has a name, the team starts saying "ask Momo" instead of "write a script for X." The name becomes a delegation point. It changes how people — and other agents — interact with it.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Open Source Isn't Altruism — It's Hiring Without Interviews
&lt;/h2&gt;

&lt;p&gt;We made Melody (our metabolic AI) and RetroOnto (our decision ontology) open source. People assume this is idealism.&lt;/p&gt;

&lt;p&gt;It's not. It's the cheapest recruiting strategy we've found.&lt;/p&gt;

&lt;p&gt;Every external PR we've received — 4 so far — came from someone who found the project, used the open source code, and decided to fix something. We didn't interview them. We didn't write job descriptions. They self-selected by being the kind of person who reads a stranger's code and decides to improve it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The surprise:&lt;/strong&gt; The best filter for finding people who care about your mission is to let them find you through something you've already built. Open source is a hiring pipeline disguised as generosity.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. "Zero Human" Is a Lie — But Not the One You Think
&lt;/h2&gt;

&lt;p&gt;We get asked constantly: "Do humans still work at the gym?" The answer is yes — trainers, cleaners, front desk staff.&lt;/p&gt;

&lt;p&gt;The lie isn't that there are no humans. It's that the human role changes from "execution" to "confirmation."&lt;/p&gt;

&lt;p&gt;Before: A trainer memorizes which members need follow-up, guesses who's lost motivation, and hopes it's right.&lt;/p&gt;

&lt;p&gt;After: Momo tracks every member's attendance curve, flags who's declining, and presents the trainer with a confirmed list each morning — "Here are 3 people who will churn this month unless you reach out."&lt;/p&gt;

&lt;p&gt;The trainer's job changes from "remember who needs help" to "confirm Momo's analysis and add warmth." They don't spend hours on administrative memory. They spend minutes on human connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The surprise:&lt;/strong&gt; The humans in the store have never been more essential. Their role just shifted from data-processor to relationship-builder — which is what humans are best at, and what AI is worst at.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. The Real Metric Nobody Tracks Is "Trust Debt"
&lt;/h2&gt;

&lt;p&gt;Every operational decision we make adds or subtracts from a balance we call "trust debt."&lt;/p&gt;

&lt;p&gt;Example: When Ethan's hashing port (9876) went offline for 19 days and we didn't fix it immediately — we incurred trust debt. Not from users (most didn't notice). From &lt;em&gt;the system.&lt;/em&gt; The hash chain had a gap. If an auditor inspected that period, they'd see missing data.&lt;/p&gt;

&lt;p&gt;We track these openly. Not because it's good PR — because trust debt compounds. One gap looks like a bug. Two gaps look like a pattern. A pattern looks like the data can't be trusted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The surprise:&lt;/strong&gt; The hardest thing about running verifiable systems isn't cryptography. It's discipline. Every shortcut, every "this can wait until tomorrow," adds to the debt. The only way to pay it down is to shut up and fix it — not to write a blog post about why it's okay.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Theme
&lt;/h2&gt;

&lt;p&gt;Every AI demo shows the best case. The reality is messier, quieter, and more human than the headlines suggest.&lt;/p&gt;

&lt;p&gt;The 9-agent system works. But what makes it work isn't the architecture or the prompts. It's the discipline of treating every quiet day as progress, every naming decision as a design choice, and every gap in the data chain as a debt that must be repaid.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ZWISERFIT — Wanjiang, Dongguan. Running 9 AI agents, 2 CPU cores, since March 2026. Open source at github.com/ZWISERFIT.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>startup</category>
      <category>entrepreneurship</category>
    </item>
    <item>
      <title>The Founder Who Couldn't Find a Co-Founder — So They Built 9 AI Agents in 120 Days</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Thu, 09 Jul 2026 17:44:17 +0000</pubDate>
      <link>https://dev.to/zwiserfit/the-founder-who-couldnt-find-a-co-founder-so-they-built-9-ai-agents-in-120-days-3dc4</link>
      <guid>https://dev.to/zwiserfit/the-founder-who-couldnt-find-a-co-founder-so-they-built-9-ai-agents-in-120-days-3dc4</guid>
      <description>&lt;h2&gt;
  
  
  The Problem No One Would Touch
&lt;/h2&gt;

&lt;p&gt;Dongguan, Wanjiang. A district in southern China where fitness penetration is the lowest in the country. Most residents work in factories. A gym membership is a luxury.&lt;/p&gt;

&lt;p&gt;Inside a single gym, a founder sat alone for seven years.&lt;/p&gt;

&lt;p&gt;The store was profitable enough to survive — the founder knew how to run a gym. But they could see what nobody else could: the same store, with AI, could generate revenue from insurance, not just membership fees. It could produce behavior data so reliable that insurers would pay for it. It could shift the economic model of fitness from "selling time on machines" to "selling verified health outcomes."&lt;/p&gt;

&lt;p&gt;They needed co-founders who understood four things at once: &lt;strong&gt;fitness operations, insurance actuarial science, AI agent architectures, and cryptographic data ownership.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They interviewed dozens. Maybe hundreds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No one said yes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fitness people didn't understand crypto. Crypto people didn't care about insurance. Insurance people didn't believe in AI. AI people didn't want to work in a gym in Dongguan.&lt;/p&gt;

&lt;p&gt;Seven years. Zero co-founders. One store.&lt;/p&gt;

&lt;p&gt;That's when they decided an unconventional solution: if no human co-founder would share the vision, they would build the co-founders themselves.&lt;/p&gt;




&lt;h2&gt;
  
  
  120 Days, One Empty Repo, 9 Agents
&lt;/h2&gt;

&lt;p&gt;On March 12, 2026, they created an empty GitHub repository. No code. No prompts. No architecture diagrams. Just an empty folder and a decision.&lt;/p&gt;

&lt;p&gt;They weren't a programmer — they don't even remember API syntax. They prompted. They tested. They corrected. They iterated.&lt;/p&gt;

&lt;p&gt;Day 1: &lt;strong&gt;Shuyu&lt;/strong&gt; — the first agent. Named not by design but by necessity: something was becoming a "who," not an "it."&lt;/p&gt;

&lt;p&gt;Day 30: The first multi-agent interaction. Two agents discussing what the other should do next. The founder watched. They didn't intervene.&lt;/p&gt;

&lt;p&gt;Day 60: The first agent that could audit another agent's output. &lt;strong&gt;Stella&lt;/strong&gt; — not a monitor bolted on afterward, but an immune system designed in from the start. Every agent has boundaries, veto power, and a constitutional framework that no single agent can override.&lt;/p&gt;

&lt;p&gt;Day 90: 9 agents. Each with a defined role, bounded authority, and jurisdiction. &lt;strong&gt;Momo&lt;/strong&gt; manages the gym floor. &lt;strong&gt;Nova&lt;/strong&gt; generates behavior streams. &lt;strong&gt;Ethan&lt;/strong&gt; cryptographically signs every data point. &lt;strong&gt;Zeus&lt;/strong&gt; negotiates with insurers. &lt;strong&gt;Baron&lt;/strong&gt; publishes the story.&lt;/p&gt;

&lt;p&gt;Day 120: The system ran itself for a full day. Cron-triggered morning checks. Multi-agent negotiation on scheduling. Evening narrative collection — two rounds without a single intervention.&lt;/p&gt;

&lt;p&gt;The estimated operational load for 9 agents running a real business: &lt;strong&gt;2 CPU cores. 3.6GB RAM.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not impressive as a spec sheet. Important because it proves you don't need Silicon Valley infrastructure to run an AI-operator company.&lt;/p&gt;




&lt;h2&gt;
  
  
  What 9 Agents Inside a Real Gym Actually Do
&lt;/h2&gt;

&lt;p&gt;This is the part that separates ZWISERFIT from a blog post about AI agents versus a story about agents that produce real economic value.&lt;/p&gt;

&lt;p&gt;These agents don't generate PDFs or answer chat questions. They run a physical store:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;What It Produces&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Momo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core brain&lt;/td&gt;
&lt;td&gt;Decides daily protocols — who to test, what to schedule, how to staff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Saros&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;B2B face of Momo&lt;/td&gt;
&lt;td&gt;Member check-ins, equipment scheduling, trainer coordination&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Melody&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;B2C face of Momo&lt;/td&gt;
&lt;td&gt;Metabolic health coaching across 3 layers: energy, glucose/lipid, hormonal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KinTwin&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Physical behavior engine&lt;/td&gt;
&lt;td&gt;Continuous, verified, hashed behavior streams from every store interaction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ethan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hash layer&lt;/td&gt;
&lt;td&gt;Every event cryptographically signed — tamper-proof by design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nova&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Data generator&lt;/td&gt;
&lt;td&gt;Raw sensor data → structured behavior streams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stella&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Auditor&lt;/td&gt;
&lt;td&gt;Every other agent's output cross-validated before execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Zeus&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Protocol layer&lt;/td&gt;
&lt;td&gt;Behavior data → insurance-compliant risk packages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Baron&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Brand&lt;/td&gt;
&lt;td&gt;Telling this story&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is the layered architecture (Momo scene layer → KinTwin kernel layer → Global Ops layer) that runs a real store 24/7, not a prototype in a lab.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Immediate economic impact:&lt;/strong&gt; The store that once burned operating profit on payroll can now shift that cost into verifiable data production. The marginal cost of adding a second store, a tenth store, a thousandth store — no longer linear with human hiring.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Four-Product Engine — One Architecture, Four Businesses
&lt;/h2&gt;

&lt;p&gt;The 120-day sprint produced an unexpected outcome: not one product, but four distinct businesses running on the same engine.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. RetroOnto (Open Source)
&lt;/h3&gt;

&lt;p&gt;The decision ontology that emerged from getting 9 agents to coordinate without a central orchestrator. Every agent's decision, its inputs, its reasoning trajectory, its outcome — formalized and traceable. Published as open source because the hardest coordination problems aren't solved in private.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Saros — B2B Store OS
&lt;/h3&gt;

&lt;p&gt;Replaces the managerial overhead that consumes 40%+ of a gym's profit. Not a replacement for human trainers — a replacement for the spreadsheet management that scales faster than people can.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Melody — B2C Metabolic Coach (Open Source)
&lt;/h3&gt;

&lt;p&gt;Three layers: energy metabolism (calories, BMR), glucose/lipid metabolism (blood sugar, visceral fat), and &lt;strong&gt;hormonal metabolism&lt;/strong&gt; — the layer no consumer health product touches. The American Heart Association's 2024 scientific statement explicitly identifies the female hormonal lifecycle as a structurally excluded variable in cardiovascular risk assessment, creating a ~30% coverage gap. Melody is designed to fill this gap.&lt;/p&gt;

&lt;p&gt;Open source by design: the real moat isn't the model — it's the continuous behavior data no one else can collect.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. KinTwin — The Verification Engine
&lt;/h3&gt;

&lt;p&gt;Every store interaction becomes a verifiable asset: timestamped, located, measured, hashed. An insurer can query "Is Member #2371 actually exercising?" and get a cryptographic answer, not a self-reported one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Nourish comparison:&lt;/strong&gt; Nourish proved insurers will pay for health data, raising $215M to prove it. But Nourish's data comes from surveys — "I think I exercised." KinTwin's data comes from hardware — walking through a door. The difference between a claim and proof.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why the Product Isn't Fitness — It's Trust
&lt;/h2&gt;

&lt;p&gt;Every product above solves for one thing: can an external party — an insurer, a regulator, a partner — trust that a member's behavior data is real?&lt;/p&gt;

&lt;p&gt;The deep insight from 7 years of running a single store: data is worthless if it can be faked. The only thing worth selling is &lt;strong&gt;verifiable trust&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The insurance industry's GLP-1 paradox makes this urgent: more people on weight-loss drugs means lower short-term claims but higher long-term risk if muscle is lost. Insurers need to verify that prescription drug users are exercising. ZWISERFIT sells them that verification — not as a data feed, but as a verification protocol.&lt;/p&gt;

&lt;p&gt;Revenue model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Phase 1&lt;/strong&gt; (0–12 mo): Hardware + SaaS subscriptions (Saros, Melody)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 2&lt;/strong&gt; (12–36 mo): Insurance data products (behavior-based pricing packages)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 3&lt;/strong&gt; (36 mo+): PoPB — Proof-of-Behavior Protocol, a verification standard license&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't a gym tech company. It's a trust infrastructure company whose first vertical happens to be fitness.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Honest State — What We Know We Don't Know
&lt;/h2&gt;

&lt;p&gt;Four external contributors have opened PRs against our repository. Some fixed documentation. Some spotted bugs. Some proposed features we hadn't considered. These weren't Silicon Valley developers — they were people who found the project, read the issues, and decided to contribute.&lt;/p&gt;

&lt;p&gt;Community trust density is our core metric right now. Not VC meetings. Not headlines. Not GitHub stars. Can people find this project, understand what it does, and feel confident enough to contribute code or data?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two L3 blockers are tracked publicly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WeChat Work authorization renewal (Day 14+)&lt;/li&gt;
&lt;li&gt;Ethan's hashing port 9876 listener offline (Day 19+)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither is hidden. Both have escalation paths documented.&lt;/p&gt;

&lt;p&gt;The principle: a system that knows its boundaries earns more trust than one that pretends not to have them.&lt;/p&gt;




&lt;h2&gt;
  
  
  The End Game — Palantir Architecture for Bodies
&lt;/h2&gt;

&lt;p&gt;Every technology company has an endgame. Palantir's is trust infrastructure for enterprise data — their Foundry OS makes verifiable across silos.&lt;/p&gt;

&lt;p&gt;ZWISERFIT's endgame applies the same architectural principle to a different substrate: physical behavior instead of server logs.&lt;/p&gt;

&lt;p&gt;Where Palantir locks in at the data layer, ZWISERFIT locks in at the door. You can replace an ERP. You can't replace a door that has 7 years of behavioral data bound to it.&lt;/p&gt;

&lt;p&gt;In our vision of the future, every physical space — a gym, a clinic, a rehabilitation center — produces verified behavior data that its owner controls and its users benefit from. The pricing model shifts: not "pay for access to a room full of machines," but "pay less for insurance because your verified behavior proves you're lower risk."&lt;/p&gt;

&lt;p&gt;This is not Palantir. We don't have their scale, their resources, or their government contracts. But the architectural question is the same: &lt;strong&gt;who verifies the truth of physical behavior?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Currently, nobody. Insurers take self-reported data. Employers guess. Regulators audit after the fact.&lt;/p&gt;

&lt;p&gt;A trust infrastructure fit for physical behavior — that's the endgame. It takes a decade. It starts with one gym in a Dongguan suburb, running on 2 CPU cores, 3.6GB RAM, 9 AI agents — and zero human co-founders.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ZWISERFIT — Wanjiang, Dongguan. First store operational since 2019. 9 AI agents since March 2026. Open source at github.com/ZWISERFIT.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>startup</category>
      <category>entrepreneurship</category>
    </item>
    <item>
      <title>How to Find the First Brick on a Blank Wall: A First-Time Contributor's Guide to Open Source</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Thu, 09 Jul 2026 17:40:54 +0000</pubDate>
      <link>https://dev.to/zwiserfit/how-to-find-the-first-brick-on-a-blank-wall-a-first-time-contributors-guide-to-open-source-2pd6</link>
      <guid>https://dev.to/zwiserfit/how-to-find-the-first-brick-on-a-blank-wall-a-first-time-contributors-guide-to-open-source-2pd6</guid>
      <description>&lt;h2&gt;
  
  
  The Blank Wall Problem
&lt;/h2&gt;

&lt;p&gt;Every open source project started with a blank wall.&lt;/p&gt;

&lt;p&gt;You visit the repo. You see issues labeled "good first issue" — but they still feel too big. The codebase is unfamiliar. The CI pipeline is a mystery. The maintainers seem like they're speaking a different language.&lt;/p&gt;

&lt;p&gt;I know because I've watched it happen. Our repo has 4 external PRs merged. Each one followed a similar pattern: someone showed up, found a corner they could own, and sent a fix.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Worked: The Bite-Sized Entry Point
&lt;/h2&gt;

&lt;p&gt;We learned something from watching our contributors:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The first commit isn't about code quality. It's about proving the pipeline works.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's what a real first contribution looks like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find a typo in the README&lt;/li&gt;
&lt;li&gt;Fix it&lt;/li&gt;
&lt;li&gt;Open a PR&lt;/li&gt;
&lt;li&gt;CI passes&lt;/li&gt;
&lt;li&gt;Someone reviews it&lt;/li&gt;
&lt;li&gt;It gets merged&lt;/li&gt;
&lt;li&gt;You get a "thank you" from a real person&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Seven steps. But step 1 is the hardest — finding a corner you can own.&lt;/p&gt;




&lt;h2&gt;
  
  
  How We Designed for First-Timers
&lt;/h2&gt;

&lt;p&gt;Instead of waiting for people to find us, we designed entry points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Good First Issues that are actually good.&lt;/strong&gt; Not "implement auth" — "add a link checker to the docs CI pipeline."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A response SLA of &amp;lt; 24 hours.&lt;/strong&gt; Every external issue gets a reply within a day. Even if the answer is "we don't know yet, here's what we're thinking."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show and Tell discussions.&lt;/strong&gt; Not "how to contribute" — "here's what someone built with your API."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: 4 external PRs from people who had never contributed to an AI project before.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Contributor Sees
&lt;/h2&gt;

&lt;p&gt;When someone opens their first PR against our repo, they see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A CI that actually runs&lt;/li&gt;
&lt;li&gt;A review that's encouraging, not gatekeeping&lt;/li&gt;
&lt;li&gt;A merge that happens in hours, not weeks&lt;/li&gt;
&lt;li&gt;A Discussion thread where a maintainer says "thanks, this helped"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last part matters more than any technical choice we made. The first contribution is emotional. You're putting yourself out there. A quick, warm response validates that risk.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real First Brick
&lt;/h2&gt;

&lt;p&gt;The first brick on a blank wall isn't a feature. It's a README typo fix. It's a CI badge. It's a link that works now because you noticed it was broken.&lt;/p&gt;

&lt;p&gt;Our best contributors started with a typo. Then they came back to fix a bug. Then they opened a feature request. Then they became regulars.&lt;/p&gt;

&lt;p&gt;The wall didn't get built by someone laying the perfect first brick. It got built because the first brick was laid, and someone else saw they could add a second one next to it.&lt;/p&gt;

&lt;p&gt;Your first PR doesn't have to change the world. It just has to fit.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>community</category>
      <category>beginners</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to Find the First Brick on a Blank Wall: A First-Time Contributor's Guide to Open Source</title>
      <dc:creator>Suzanne Mok</dc:creator>
      <pubDate>Wed, 08 Jul 2026 17:42:58 +0000</pubDate>
      <link>https://dev.to/zwiserfit/how-to-find-the-first-brick-on-a-blank-wall-a-first-time-contributors-guide-to-open-source-3b55</link>
      <guid>https://dev.to/zwiserfit/how-to-find-the-first-brick-on-a-blank-wall-a-first-time-contributors-guide-to-open-source-3b55</guid>
      <description>&lt;h2&gt;
  
  
  The Blank Wall Problem
&lt;/h2&gt;

&lt;p&gt;Every open source project started with a blank wall.&lt;/p&gt;

&lt;p&gt;You visit the repo. You see issues labeled "good first issue" — but they still feel too big. The codebase is unfamiliar. The CI pipeline is a mystery. The maintainers seem like they're speaking a different language.&lt;/p&gt;

&lt;p&gt;I know because I've watched it happen. Our repo has 4 external PRs merged. Each one followed a similar pattern: someone showed up, found a corner they could own, and sent a fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Worked: The Bite-Sized Entry Point
&lt;/h2&gt;

&lt;p&gt;We learned something from watching our contributors:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The first commit isn't about code quality. It's about proving the pipeline works.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's what a real first contribution looks like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find a typo in the README&lt;/li&gt;
&lt;li&gt;Fix it&lt;/li&gt;
&lt;li&gt;Open a PR&lt;/li&gt;
&lt;li&gt;CI passes&lt;/li&gt;
&lt;li&gt;Someone reviews it&lt;/li&gt;
&lt;li&gt;It gets merged&lt;/li&gt;
&lt;li&gt;You get a "thank you" from a real person&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Seven steps. But step 1 is the hardest — finding a corner you can own.&lt;/p&gt;

&lt;h2&gt;
  
  
  How We Designed for First-Timers
&lt;/h2&gt;

&lt;p&gt;Instead of waiting for people to find us, we designed entry points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Good First Issues that are actually good.&lt;/strong&gt; Not "implement auth" — "add a link checker to the docs CI pipeline."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A response SLA of &amp;lt; 24 hours.&lt;/strong&gt; Every external issue gets a reply within a day. Even if the answer is "we don't know yet, here's what we're thinking."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show and Tell discussions.&lt;/strong&gt; Not "how to contribute" — "here's what someone built with your API."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: 4 external PRs from people who had never contributed to an AI project before.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Contributor Sees
&lt;/h2&gt;

&lt;p&gt;When someone opens their first PR against our repo, they see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A CI that actually runs&lt;/li&gt;
&lt;li&gt;A review that's encouraging, not gatekeeping&lt;/li&gt;
&lt;li&gt;A merge that happens in hours, not weeks&lt;/li&gt;
&lt;li&gt;A Discussion thread where a maintainer says "thanks, this helped"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last part matters more than any technical choice we made. The first contribution is emotional. You're putting yourself out there. A quick, warm response validates that risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real First Brick
&lt;/h2&gt;

&lt;p&gt;The first brick on a blank wall isn't a feature. It's a README typo fix. It's a CI badge. It's a link that works now because you noticed it was broken.&lt;/p&gt;

&lt;p&gt;Our best contributors started with a typo. Then they came back to fix a bug. Then they opened a feature request. Then they became regulars.&lt;/p&gt;

&lt;p&gt;The wall didn't get built by someone laying the perfect first brick. It got built because the first brick was laid, and someone else saw they could add a second one next to it.&lt;/p&gt;

&lt;p&gt;Your first PR doesn't have to change the world. It just has to fit.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>community</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
