<?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: joyrswd</title>
    <description>The latest articles on DEV Community by joyrswd (@joyrswd).</description>
    <link>https://dev.to/joyrswd</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%2F4093725%2Fc6cbf447-6ce1-498a-a38b-3787c0f7eb25.png</url>
      <title>DEV Community: joyrswd</title>
      <link>https://dev.to/joyrswd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joyrswd"/>
    <language>en</language>
    <item>
      <title>The AI Followed the Instructions. The Documentation Still Fell Apart.</title>
      <dc:creator>joyrswd</dc:creator>
      <pubDate>Tue, 25 Aug 2026 08:18:48 +0000</pubDate>
      <link>https://dev.to/joyrswd/the-ai-followed-the-instructions-the-documentation-still-fell-apart-3i97</link>
      <guid>https://dev.to/joyrswd/the-ai-followed-the-instructions-the-documentation-still-fell-apart-3i97</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; This article was generated with the assistance of AI based on my own development experience, observations, and ideas. I reviewed and edited the final content before publication.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI coding agents are getting remarkably good at following instructions.&lt;/p&gt;

&lt;p&gt;That creates a strange new kind of failure.&lt;/p&gt;

&lt;p&gt;Sometimes the AI does exactly what you asked — and the repository still gets worse.&lt;/p&gt;

&lt;p&gt;I ran into this repeatedly while using AI agents for ongoing software development. The problem was not hallucinated code, ignored instructions, or obviously bad output.&lt;/p&gt;

&lt;p&gt;The agent was behaving reasonably.&lt;/p&gt;

&lt;p&gt;The documentation structure was not.&lt;/p&gt;

&lt;p&gt;Over time, I started seeing the same kinds of failures in different forms.&lt;/p&gt;

&lt;p&gt;The following cases are not three abstract theoretical risks. They are representative examples of symptoms I actually encountered while letting AI agents maintain project documentation over multiple development cycles.&lt;/p&gt;




&lt;h2&gt;
  
  
  Case 1: Evidence Kept Accumulating
&lt;/h2&gt;

&lt;p&gt;At first, keeping verification evidence in the repository seemed useful.&lt;/p&gt;

&lt;p&gt;A change was implemented.&lt;/p&gt;

&lt;p&gt;Tests were run.&lt;/p&gt;

&lt;p&gt;The result was recorded.&lt;/p&gt;

&lt;p&gt;So far, so good.&lt;/p&gt;

&lt;p&gt;Then another change happened.&lt;/p&gt;

&lt;p&gt;And another.&lt;/p&gt;

&lt;p&gt;Each time, the AI preserved the previous evidence and added new material.&lt;/p&gt;

&lt;p&gt;Eventually, the repository contained a growing collection of verification documents describing states that were no longer current.&lt;/p&gt;

&lt;p&gt;Nothing was technically wrong with those files.&lt;/p&gt;

&lt;p&gt;They really had been valid at some point.&lt;/p&gt;

&lt;p&gt;But their continued presence created a new problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;historical evidence started looking like current truth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An AI reading the repository later could not always tell whether a document meant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;this was once observed,&lt;/li&gt;
&lt;li&gt;this is still true,&lt;/li&gt;
&lt;li&gt;this is required to remain true,&lt;/li&gt;
&lt;li&gt;or this has already been superseded.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent had followed the rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep evidence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The repository needed a better rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Evidence needs a lifecycle.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Case 2: Design Documentation Became an Implementation Transcript
&lt;/h2&gt;

&lt;p&gt;Another problem appeared in design documents.&lt;/p&gt;

&lt;p&gt;When asked to update the design after implementation changed, the AI often used the code as its strongest source of information.&lt;/p&gt;

&lt;p&gt;That sounds reasonable.&lt;/p&gt;

&lt;p&gt;The code is concrete.&lt;/p&gt;

&lt;p&gt;The code is current.&lt;/p&gt;

&lt;p&gt;The code is easy to inspect.&lt;/p&gt;

&lt;p&gt;But over time, design documents began filling with details that were effectively descriptions of the current implementation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;class names&lt;/li&gt;
&lt;li&gt;function names&lt;/li&gt;
&lt;li&gt;file paths&lt;/li&gt;
&lt;li&gt;framework-specific structures&lt;/li&gt;
&lt;li&gt;internal data flow&lt;/li&gt;
&lt;li&gt;low-level implementation choices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The document was still called "design."&lt;/p&gt;

&lt;p&gt;But it was becoming a second copy of the codebase written in prose.&lt;/p&gt;

&lt;p&gt;That introduced two problems.&lt;/p&gt;

&lt;p&gt;First, the documentation required constant synchronization.&lt;/p&gt;

&lt;p&gt;Second, and more importantly, future AI agents could treat those implementation details as architectural constraints.&lt;/p&gt;

&lt;p&gt;A temporary implementation choice could quietly become "the design."&lt;/p&gt;

&lt;p&gt;The agent was doing something rational:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Update the design to match the implementation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But what I actually wanted was different:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Preserve the design principles that should constrain future implementations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those are not the same thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Case 3: Correct Placement Produced the Wrong Structure
&lt;/h2&gt;

&lt;p&gt;A third failure was more subtle.&lt;/p&gt;

&lt;p&gt;I had directory-level rules explaining where documents should go.&lt;/p&gt;

&lt;p&gt;Application-specific information belonged near the application.&lt;/p&gt;

&lt;p&gt;System-level information belonged elsewhere.&lt;/p&gt;

&lt;p&gt;The AI followed those placement rules.&lt;/p&gt;

&lt;p&gt;Then the project grew.&lt;/p&gt;

&lt;p&gt;Deployment procedures appeared under multiple applications.&lt;/p&gt;

&lt;p&gt;Operational documents multiplied.&lt;/p&gt;

&lt;p&gt;System documentation became increasingly crowded.&lt;/p&gt;

&lt;p&gt;Again, no individual placement decision was obviously unreasonable.&lt;/p&gt;

&lt;p&gt;The problem only became visible at the repository level.&lt;/p&gt;

&lt;p&gt;Each local decision was valid.&lt;/p&gt;

&lt;p&gt;The global structure was deteriorating.&lt;/p&gt;

&lt;p&gt;This is one of the harder problems in AI-driven development:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;local compliance does not guarantee global coherence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An agent may correctly answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Where should this file go?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;while never asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Should this file exist as a separate artifact at all?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is this responsibility actually shared by several parts of the system?"&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Common Failure
&lt;/h2&gt;

&lt;p&gt;These looked like different documentation problems.&lt;/p&gt;

&lt;p&gt;They were not.&lt;/p&gt;

&lt;p&gt;They were all governance problems.&lt;/p&gt;

&lt;p&gt;I had given the AI instructions about individual actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;preserve this&lt;/li&gt;
&lt;li&gt;update that&lt;/li&gt;
&lt;li&gt;put this type of file here&lt;/li&gt;
&lt;li&gt;record verification&lt;/li&gt;
&lt;li&gt;keep design synchronized&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But I had not clearly defined the lifecycle and authority of the information itself.&lt;/p&gt;

&lt;p&gt;The missing questions were things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which documents are normative?&lt;/li&gt;
&lt;li&gt;Which documents merely record observations?&lt;/li&gt;
&lt;li&gt;When does working material become durable knowledge?&lt;/li&gt;
&lt;li&gt;When should old information be removed?&lt;/li&gt;
&lt;li&gt;What can constrain future implementation?&lt;/li&gt;
&lt;li&gt;Who owns information shared across multiple applications?&lt;/li&gt;
&lt;li&gt;What does "verified" actually mean?&lt;/li&gt;
&lt;li&gt;How long does verification remain valid?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not coding questions.&lt;/p&gt;

&lt;p&gt;They are information governance questions.&lt;/p&gt;




&lt;h2&gt;
  
  
  I Started Treating the Repository as an Information System
&lt;/h2&gt;

&lt;p&gt;That changed how I thought about repository structure.&lt;/p&gt;

&lt;p&gt;Instead of organizing documentation only by document type, I started thinking in terms of several responsibilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authority
&lt;/h3&gt;

&lt;p&gt;What information is allowed to constrain future implementation?&lt;/p&gt;

&lt;p&gt;A requirement can.&lt;/p&gt;

&lt;p&gt;A design principle can.&lt;/p&gt;

&lt;p&gt;A temporary investigation result probably should not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lifecycle
&lt;/h3&gt;

&lt;p&gt;How does information move from:&lt;/p&gt;

&lt;p&gt;investigation → adoption → verification → retention or disposal?&lt;/p&gt;

&lt;p&gt;Not every useful note deserves to become permanent documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evidence
&lt;/h3&gt;

&lt;p&gt;What supports a claim?&lt;/p&gt;

&lt;p&gt;"This file exists" is different from:&lt;/p&gt;

&lt;p&gt;"This is implemented."&lt;/p&gt;

&lt;p&gt;And that is different again from:&lt;/p&gt;

&lt;p&gt;"This was verified under these conditions."&lt;/p&gt;

&lt;h3&gt;
  
  
  Placement
&lt;/h3&gt;

&lt;p&gt;Who actually owns this information?&lt;/p&gt;

&lt;p&gt;Application-specific knowledge and system-wide operational responsibility should not be mixed merely because one application happened to trigger the work.&lt;/p&gt;




&lt;h2&gt;
  
  
  After Changing the Rules
&lt;/h2&gt;

&lt;p&gt;Once I changed the repository governance, the AI did not suddenly become smarter.&lt;/p&gt;

&lt;p&gt;That is the interesting part.&lt;/p&gt;

&lt;p&gt;It was still the same kind of coding agent.&lt;/p&gt;

&lt;p&gt;What changed was the environment in which it was reasoning.&lt;/p&gt;

&lt;p&gt;Instead of asking the AI to infer the role of every document from context, the repository provided stronger boundaries between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;plans&lt;/li&gt;
&lt;li&gt;formal deliverables&lt;/li&gt;
&lt;li&gt;durable references&lt;/li&gt;
&lt;li&gt;temporary working material&lt;/li&gt;
&lt;li&gt;verification material&lt;/li&gt;
&lt;li&gt;execution-environment configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduced a surprising amount of ambiguity.&lt;/p&gt;

&lt;p&gt;The goal was not to tell the AI exactly what to write.&lt;/p&gt;

&lt;p&gt;In fact, overly specific rules create their own problems.&lt;/p&gt;

&lt;p&gt;The goal was to give the agent enough structure to answer a more important question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What kind of information am I dealing with right now?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  This Became AIDD Skeleton
&lt;/h2&gt;

&lt;p&gt;I eventually extracted these ideas into a reusable repository template called &lt;strong&gt;AIDD Skeleton&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/joyrswd/AIDDSkeleton" rel="noopener noreferrer"&gt;AIDD Skeleton on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is a lightweight repository structure for AI-driven development, built around the idea that developers and coding agents need more than coding instructions.&lt;/p&gt;

&lt;p&gt;They also need shared rules for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;planning&lt;/li&gt;
&lt;li&gt;implementation&lt;/li&gt;
&lt;li&gt;references&lt;/li&gt;
&lt;li&gt;working material&lt;/li&gt;
&lt;li&gt;verification&lt;/li&gt;
&lt;li&gt;information ownership&lt;/li&gt;
&lt;li&gt;document lifecycle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The structure currently looks roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plans/       Project plans and sources of truth
products/    Formal implementations, tests, and deliverables
references/  Durable non-normative reference materials
workbench/   Working, exploratory, and verification materials
etc/         Execution-environment configuration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Directory-specific &lt;code&gt;AGENTS.md&lt;/code&gt; files define the responsibilities and boundaries for each area.&lt;/p&gt;

&lt;p&gt;The project is still evolving.&lt;/p&gt;

&lt;p&gt;I am not claiming this is the universal solution to AI-assisted software development.&lt;/p&gt;

&lt;p&gt;But the failures that led to it changed my view of the problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Hard Part Is No Longer Just Getting AI to Follow Instructions
&lt;/h2&gt;

&lt;p&gt;A lot of discussion around AI coding focuses on prompting:&lt;/p&gt;

&lt;p&gt;How do we make the agent follow the rules?&lt;/p&gt;

&lt;p&gt;That is obviously important.&lt;/p&gt;

&lt;p&gt;But there is another problem waiting behind it.&lt;/p&gt;

&lt;p&gt;What happens when the rules themselves produce bad long-term behavior?&lt;/p&gt;

&lt;p&gt;An AI agent can be perfectly compliant while slowly creating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;duplicated documentation&lt;/li&gt;
&lt;li&gt;stale evidence&lt;/li&gt;
&lt;li&gt;accidental sources of truth&lt;/li&gt;
&lt;li&gt;implementation-biased design&lt;/li&gt;
&lt;li&gt;fragmented operational knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, better prompting is not enough.&lt;/p&gt;

&lt;p&gt;The repository needs governance.&lt;/p&gt;

&lt;p&gt;And as AI agents take on longer-running development tasks, I suspect this will matter more than we currently expect.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>documentation</category>
      <category>software</category>
    </item>
  </channel>
</rss>
