<?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: Aming</title>
    <description>The latest articles on DEV Community by Aming (@amingin_ai).</description>
    <link>https://dev.to/amingin_ai</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3935251%2Fe38632bc-051d-45df-8c07-d7232255591c.jpg</url>
      <title>DEV Community: Aming</title>
      <link>https://dev.to/amingin_ai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amingin_ai"/>
    <language>en</language>
    <item>
      <title>I told my AI to build a feature. Did it? I had no idea.</title>
      <dc:creator>Aming</dc:creator>
      <pubDate>Sat, 16 May 2026 18:43:34 +0000</pubDate>
      <link>https://dev.to/amingin_ai/i-told-my-ai-to-build-a-feature-did-it-i-had-no-idea-1f1</link>
      <guid>https://dev.to/amingin_ai/i-told-my-ai-to-build-a-feature-did-it-i-had-no-idea-1f1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — I tried to "manage" AI by having it write decisions, todos, and constraints into markdown docs. After 56 files, I realized AI doesn't maintain document state. So I built aming-claw — a backlog database AI can actually read and write through MCP.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  A bug I kept running into
&lt;/h2&gt;

&lt;p&gt;I thought I was doing AI collaboration the right way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9toneqw4cnyxjolse20j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9toneqw4cnyxjolse20j.png" alt="Screenshot of docs/dev folder with 56 markdown files using proposal-, review-, and handoff- naming patterns" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the &lt;code&gt;docs/dev/&lt;/code&gt; folder of my aming-claw project — 56 markdown files, all produced through AI collaboration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;proposal-*&lt;/code&gt; — new feature specs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;review-*&lt;/code&gt; — design review records&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;handoff-*&lt;/code&gt; — state passed between sessions&lt;/li&gt;
&lt;li&gt;Plus &lt;code&gt;plan-&lt;/code&gt;, &lt;code&gt;optimization-&lt;/code&gt;, &lt;code&gt;interface-&lt;/code&gt;, &lt;code&gt;manual-fix-&lt;/code&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every file dated. Two months in, over a thousand pages of markdown. I figured the next AI session would read these. I figured I'd be able to search them too.&lt;/p&gt;

&lt;p&gt;But there's one problem I can't engineer my way out of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI doesn't maintain document state.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;proposal-graph-state-reconcile-and-chain-governance-modes.md&lt;/code&gt; — did this proposal ship? Which commit? Is it still valid?&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;handoff-2026-05-10-dashboard-semantic-hash-queue.md&lt;/code&gt; — did the next session actually pick up where this left off?&lt;/li&gt;
&lt;li&gt;18 proposals on file. Which are done, which got rejected, which are still alive? Grep through git log line by line?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I don't manually maintain the docs, so the docs rot.&lt;/strong&gt; AI doesn't maintain them either — its context window only sees a tiny slice of the workspace. The other 56 files are invisible.&lt;/p&gt;

&lt;p&gt;The more we talk, the more we write — and the further docs drift from code. Eventually you don't trust the docs, and you don't have time to read the code.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this happens
&lt;/h2&gt;

&lt;p&gt;This isn't AI being lazy. It's a &lt;strong&gt;structural problem&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Markdown is dead text.&lt;/strong&gt; No state machine. "TODO" doesn't become "DONE" on its own. "Decision: use Redis" doesn't auto-expire when you flip back to in-memory three weeks later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI context has a boundary.&lt;/strong&gt; Each session sees ~200 lines of working code. Old docs never enter the window. Not in the window → can't be maintained.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No traceable link between docs and code.&lt;/strong&gt; Which TODO maps to which function? Once it's done, which commit landed it? Humans can't remember. AI doesn't look it up.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;GitHub Issues, Notion, Linear — none of these help. AI can't see them, so they don't exist.&lt;/p&gt;

&lt;p&gt;The core mismatch is this: &lt;strong&gt;humans want global state. AI sees only local present.&lt;/strong&gt; Between them you need a living, traceable, AI-readable/writable state layer. Markdown isn't that layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  How aming-claw solves it
&lt;/h2&gt;

&lt;p&gt;I gave aming-claw a &lt;strong&gt;dedicated backlog database&lt;/strong&gt; — a peer-level system to the code graph and event ledger, with its own schema, state machine, and query interface. Not stored in markdown. Not buried in code comments. Not dependent on an external issue tracker.&lt;/p&gt;

&lt;p&gt;Each backlog entry is a structured record (todo / decision / constraint) with status, priority, source session, and a code reference (function name or file path). AI reads and writes it through MCP.&lt;/p&gt;

&lt;p&gt;The flow:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. You speak → it goes to the database, not a dead doc
&lt;/h3&gt;

&lt;p&gt;In chat:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Add a retry-after to the rate limiter on UserService.login"&lt;/p&gt;

&lt;p&gt;Or: "Decision — use Redis instead of in-memory for caching"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;aming-claw's MCP server intercepts those statements and writes directly into the backlog:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;    &lt;span class="s"&gt;UserService.login&lt;/span&gt;   &lt;span class="c1"&gt;# function or file path&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;      &lt;span class="s"&gt;todo | decision | constraint&lt;/span&gt;
&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;    &lt;span class="s"&gt;proposed&lt;/span&gt;
&lt;span class="na"&gt;priority&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;P1&lt;/span&gt;
&lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;    &lt;span class="s"&gt;session-id-xyz&lt;/span&gt;
&lt;span class="na"&gt;timestamp&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-05-16T10:23:45Z&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Markdown is dead text. The backlog database is live state — schema, indexed, state-machined, AI-accessible. That's the difference.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Dashboard shows it instantly
&lt;/h3&gt;

&lt;p&gt;Open the aming-claw dashboard — the left panel shows the new backlog entry. Click it — the right panel jumps to the function via the &lt;code&gt;vscode://&lt;/code&gt; protocol. Status chips are editable inline.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1z428hnem7uh0tlsz5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1z428hnem7uh0tlsz5z.png" alt="aming-claw dashboard backlog view showing multiple entries with priority, status, code references, and update timestamps" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The backlog view — every entry has priority, status, code reference, and update timestamp. AI and you query the same source of truth.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. State machine, automatic
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;proposed → in_progress → done(commit hash) → verified
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;in_progress&lt;/code&gt; — AI started working on it&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;done&lt;/code&gt; — commit landed, &lt;strong&gt;hash automatically bound&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;verified&lt;/code&gt; — you reviewed it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every state change is appended to an event ledger: &lt;strong&gt;which day, which session proposed it, which commit implemented it, who verified it&lt;/strong&gt; — all queryable, all replayable.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI reads the backlog itself, next time
&lt;/h3&gt;

&lt;p&gt;Days later, in chat:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Did we ever fix that Codex plugin Windows install bug?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI queries the backlog through MCP and returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;FIXED, P0&lt;/span&gt;
&lt;span class="na"&gt;commit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;0ad8c7e&lt;/span&gt;
&lt;span class="na"&gt;fixed at&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;   &lt;span class="s"&gt;2 days ago&lt;/span&gt;
&lt;span class="na"&gt;file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;       &lt;span class="s"&gt;agent/plugin_installer.py (line 455)&lt;/span&gt;
&lt;span class="na"&gt;change&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;replaced regex pattern with callable replacement&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No grepping git log. No asking a teammate. No "I think we did?"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfyd6yvkpktfdsscq9qg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfyd6yvkpktfdsscq9qg.png" alt="aming-claw dashboard backlog view showing multiple entries with priority, status, code references, and update timestamps" width="800" height="655"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key thing to notice:&lt;/strong&gt; AI didn't "remember" this from conversation history. It queried the backlog database &lt;strong&gt;in real time&lt;/strong&gt; through MCP. Even if this bug was raised three months ago, in a session that's long gone — AI still gets the &lt;strong&gt;current status + full commit trace&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the difference between dead markdown and a live state layer: &lt;strong&gt;the database is the memory, not the conversation.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  This is just the start
&lt;/h2&gt;

&lt;p&gt;Look back at the &lt;code&gt;docs/dev/&lt;/code&gt; screenshot — 56 markdown files, nobody knows which are alive.&lt;br&gt;
Look at the dashboard screenshot — every backlog entry has status, commit, location.&lt;/p&gt;

&lt;p&gt;The difference isn't the tool. &lt;strong&gt;It's whether information has state.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The backlog solves "did the AI build the feature I asked for?" — but AI collaboration has plenty of other holes I'm planning to fill in this series:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pain&lt;/th&gt;
&lt;th&gt;Next article&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI edits one function, breaks 10 callers&lt;/td&gt;
&lt;td&gt;Code graph + impact analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI modifies code it shouldn't touch&lt;/td&gt;
&lt;td&gt;Governance hints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What did AI even change this week?&lt;/td&gt;
&lt;td&gt;Event ledger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Every session starts from zero&lt;/td&gt;
&lt;td&gt;Project memory layer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One article per pain point.&lt;/p&gt;




&lt;h2&gt;
  
  
  About aming-claw
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/amingclawdev/aming-claw" rel="noopener noreferrer"&gt;amingclawdev/aming-claw&lt;/a&gt; — open source&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next post:&lt;/strong&gt; "AI breaks 10 callers when it edits one function" — coming this week&lt;/li&gt;
&lt;li&gt;Hit me with issues if you've felt this pain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If &lt;em&gt;"did the AI actually do that thing I asked?"&lt;/em&gt; sounds familiar, give the repo a star — it costs you nothing and tells me I'm not the only one.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is part 1 of an "AI Collaboration Survival Guide" series — practical tools for the messy reality of building with AI agents.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
