<?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: Brooke</title>
    <description>The latest articles on DEV Community by Brooke (@bbos).</description>
    <link>https://dev.to/bbos</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%2F3693213%2Fada94c1e-4c0b-4c90-9d57-10d6371cbe2c.jpg</url>
      <title>DEV Community: Brooke</title>
      <link>https://dev.to/bbos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bbos"/>
    <language>en</language>
    <item>
      <title>About This Documentation Infrastructure</title>
      <dc:creator>Brooke</dc:creator>
      <pubDate>Wed, 07 Jan 2026 01:18:02 +0000</pubDate>
      <link>https://dev.to/bbos/about-this-documentation-infrastructure-3o2n</link>
      <guid>https://dev.to/bbos/about-this-documentation-infrastructure-3o2n</guid>
      <description>&lt;h1&gt;
  
  
  About This Documentation Infrastructure
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;← Back to &lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD entry page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This page describes how the SRDD documentation is structured, built, and published.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation Source
&lt;/h2&gt;

&lt;p&gt;All documentation lives as Markdown files in the &lt;code&gt;./documentation&lt;/code&gt; directory of the &lt;a href="https://github.com/docs-bbos/srdd" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;. This is the single source of truth.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;documentation/
├── index.md              # Entry point / overview
├── pitches.md            # Various length summaries
├── SRDD-part1-of-4.md    # Article series
├── SRDD-part2-of-4.md
├── SRDD-part3-of-4.md
├── SRDD-part4-of-4.md
├── CONTRIBUTING.md       # Contribution guide
├── about.md              # This file
└── .sync-state.json      # Dev.to sync state (auto-generated)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each Markdown file uses YAML front matter for metadata (title, description, etc.) and standard GitHub-flavored Markdown for content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-Document Linking
&lt;/h2&gt;

&lt;p&gt;Documents use a placeholder syntax for internal links:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;See &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Part 1&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; for details.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;{{devto:slug}}&lt;/code&gt; pattern gets transformed differently depending on the target platform:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Transformation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Pages&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;{{devto:slug}}&lt;/code&gt; → &lt;code&gt;./slug.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dev.to&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;{{devto:slug}}&lt;/code&gt; → actual Dev.to URL (e.g., &lt;code&gt;https://dev.to/bbos/...&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This allows documents to link to each other without hard-coding URLs that differ across platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Actions Pipeline
&lt;/h2&gt;

&lt;p&gt;A single workflow (&lt;code&gt;.github/workflows/deploy-and-sync.yml&lt;/code&gt;) handles all publishing:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Build for GitHub Pages
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Transform devto placeholders for GHP&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
    &lt;span class="s"&gt;find ./documentation -name "*.md" -exec sed -i -E \&lt;/span&gt;
      &lt;span class="s"&gt;'s/\{\{devto:([^}]+)\}\}/.\/\1.md/g' {} \;&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build with Jekyll&lt;/span&gt;
  &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/jekyll-build-pages@v1&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&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;./documentation&lt;/span&gt;
    &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;./_site&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ol&gt;
&lt;li&gt;Copies assets into the documentation directory&lt;/li&gt;
&lt;li&gt;Transforms &lt;code&gt;{{devto:slug}}&lt;/code&gt; placeholders to relative &lt;code&gt;.md&lt;/code&gt; links&lt;/li&gt;
&lt;li&gt;Builds with Jekyll&lt;/li&gt;
&lt;li&gt;Deploys to GitHub Pages&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Sync to Dev.to
&lt;/h3&gt;

&lt;p&gt;After GitHub Pages deployment completes:&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;sync-to-devto&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;needs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;deploy&lt;/span&gt;  &lt;span class="c1"&gt;# Run after deploy so canonical URLs are live&lt;/span&gt;
  &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Sync posts to Dev.to&lt;/span&gt;
      &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;DEVTO_API_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.DEVTO_API_KEY }}&lt;/span&gt;
        &lt;span class="na"&gt;SITE_URL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ vars.SITE_URL }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The sync script (&lt;code&gt;scripts/sync-to-devto/sync-to-devto.js&lt;/code&gt;) performs a &lt;strong&gt;two-pass sync&lt;/strong&gt;:&lt;/p&gt;

&lt;h4&gt;
  
  
  Pass 1: Create/Update Articles
&lt;/h4&gt;

&lt;p&gt;For each Markdown file:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Parse front matter and content&lt;/li&gt;
&lt;li&gt;Build canonical URL (pointing to GitHub Pages)&lt;/li&gt;
&lt;li&gt;Transform content (absolute URLs for images, strip styles)&lt;/li&gt;
&lt;li&gt;Create or update the Dev.to article via API&lt;/li&gt;
&lt;li&gt;Capture the returned Dev.to URL&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Pass 2: Resolve Cross-Links
&lt;/h4&gt;

&lt;p&gt;Dev.to generates URLs with unpredictable suffixes (e.g., &lt;code&gt;my-post-4k2n&lt;/code&gt;). After Pass 1, we have a map of &lt;code&gt;slug → actual URL&lt;/code&gt;. Pass 2:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Re-parses documents containing &lt;code&gt;{{devto:slug}}&lt;/code&gt; placeholders&lt;/li&gt;
&lt;li&gt;Replaces placeholders with actual Dev.to URLs from the map&lt;/li&gt;
&lt;li&gt;Updates those articles again with resolved links
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// URL map built during Pass 1&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;index&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://dev.to/bbos/srdd-is-the-best...-4k2n&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SRDD-part1-of-4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://dev.to/bbos/why-srdd-exists-2j8m&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This two-pass approach ensures all cross-references resolve correctly despite Dev.to's dynamic URL generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Incremental Sync
&lt;/h3&gt;

&lt;p&gt;The sync script only uploads posts that have changed, reducing API calls and speeding up the pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Each post's content is hashed (SHA-256, truncated to 32 chars / 128 bits)&lt;/li&gt;
&lt;li&gt;Hashes are stored in &lt;code&gt;documentation/.sync-state.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;On each run, current hashes are compared with stored hashes&lt;/li&gt;
&lt;li&gt;Only posts with different hashes are synced&lt;/li&gt;
&lt;li&gt;The updated state file is committed back to the repository
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;.sync-state.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"index"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a1b2c3d4e5f67890..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"syncedAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-01-07T10:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://dev.to/bbos/srdd-...-4k2n"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pitches"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"f0e1d2c3b4a59687..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"syncedAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-01-07T10:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://dev.to/bbos/pitches-...-2j8m"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;url&lt;/code&gt; field caches each article's Dev.to URL, enabling placeholder resolution even when API rate limits prevent fetching URLs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Force full sync:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To sync all posts regardless of changes, set the &lt;code&gt;FORCE_SYNC&lt;/code&gt; environment variable:&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;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;FORCE_SYNC&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;true'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or run locally with the &lt;code&gt;--force&lt;/code&gt; flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node sync-to-devto.js &lt;span class="nt"&gt;--force&lt;/span&gt;

&lt;span class="c"&gt;# Or with .env file (loads DEVTO_API_KEY, SITE_URL, etc.)&lt;/span&gt;
&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s1"&gt;'^#'&lt;/span&gt; .env | xargs&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; node sync-to-devto.js &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Refresh URL cache:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dev.to URLs are cached in sync state. To refresh the cache (useful if articles were renamed or URLs changed):&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;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;REFRESH_URLS&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;true'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or run locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node sync-to-devto.js &lt;span class="nt"&gt;--refresh-urls&lt;/span&gt;

&lt;span class="c"&gt;# Or with .env file&lt;/span&gt;
&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s1"&gt;'^#'&lt;/span&gt; .env | xargs&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; node sync-to-devto.js &lt;span class="nt"&gt;--refresh-urls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Canonical URLs
&lt;/h2&gt;

&lt;p&gt;Every article on Dev.to includes a &lt;code&gt;canonical_url&lt;/code&gt; pointing to the GitHub Pages version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;canonical_url: https://docs-bbos.github.io/srdd/SRDD-part1-of-4/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells search engines that GitHub Pages is the authoritative source. Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SEO consolidation&lt;/strong&gt;: Search rankings accrue to one URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform flexibility&lt;/strong&gt;: Content can appear on Dev.to, Medium, or future platforms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single source of truth&lt;/strong&gt;: Readers always know where to find the canonical version&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Adding New Documentation
&lt;/h2&gt;

&lt;p&gt;To add a new page:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;documentation/new-page.md&lt;/code&gt; with appropriate front matter&lt;/li&gt;
&lt;li&gt;Link from other pages using &lt;code&gt;{{devto:new-page}}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Commit and push to &lt;code&gt;main&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The pipeline automatically deploys to GitHub Pages and syncs to Dev.to&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Environment Configuration
&lt;/h2&gt;

&lt;p&gt;The pipeline requires:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Secret/Variable&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;DEVTO_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dev.to API key from &lt;a href="https://dev.to/settings/extensions"&gt;dev.to/settings/extensions&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SITE_URL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GitHub Pages URL (e.g., &lt;code&gt;https://docs-bbos.github.io/srdd&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;em&gt;This infrastructure enables "write once, publish everywhere" for living documentation that evolves with the methodology.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
    <item>
      <title>SRDD pitches</title>
      <dc:creator>Brooke</dc:creator>
      <pubDate>Wed, 07 Jan 2026 00:17:50 +0000</pubDate>
      <link>https://dev.to/bbos/srdd-pitches-44pa</link>
      <guid>https://dev.to/bbos/srdd-pitches-44pa</guid>
      <description>&lt;h1&gt;
  
  
  SRDD Is the Best AI Coding Methodology - pitches
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;← Back to &lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD entry page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Summary of pitches
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Document&lt;/th&gt;
&lt;th&gt;Length&lt;/th&gt;
&lt;th&gt;Audience&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One-liner&lt;/td&gt;
&lt;td&gt;1-2 sentences&lt;/td&gt;
&lt;td&gt;Everyone (hook)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elevator pitch&lt;/td&gt;
&lt;td&gt;~150 words / 60 sec&lt;/td&gt;
&lt;td&gt;Networking, intros&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-minute read&lt;/td&gt;
&lt;td&gt;~250 words&lt;/td&gt;
&lt;td&gt;Time-poor anyone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executive brief&lt;/td&gt;
&lt;td&gt;~600 words&lt;/td&gt;
&lt;td&gt;Managers, CTOs, VPs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical brief&lt;/td&gt;
&lt;td&gt;~800 words&lt;/td&gt;
&lt;td&gt;Tech leads, architects&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  One-Liner
&lt;/h2&gt;

&lt;p&gt;AI coding is a force multiplier, not a replacement — SRDD keeps developers in control while AI handles execution, so understanding compounds instead of decaying.&lt;/p&gt;

&lt;h2&gt;
  
  
  Elevator Pitch
&lt;/h2&gt;

&lt;p&gt;Coding at scale and intensity is hard — architecture, interfaces, testing, debugging. AI handles this effortlessly. It's a genuine advancement. But AI can't understand architecture beyond its context window. It knows the &lt;em&gt;how&lt;/em&gt;, not the &lt;em&gt;why&lt;/em&gt;. Businesses that fired their developers are rehiring them. AI is a force multiplier, not a replacement.&lt;/p&gt;

&lt;p&gt;So how do we harness AI's power while keeping developers in control?&lt;/p&gt;

&lt;p&gt;Every approach hits the same wall as systems grow: the AI forgets earlier decisions, architectural drift accumulates, teams stop understanding what they're shipping. Vibe coding forgets. Agentic coding echoes. Spec-driven development fossilizes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SRDD closes the loop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Specifications guide implementation — but code becomes the source of truth. Periodically, understanding is extracted back out through regeneration: fresh specs synthesized from the living system, informed by everything learned along the way.&lt;/p&gt;

&lt;p&gt;The developer dreams; the AI disciplines. Developers stay hands-on — reviewing, steering, choosing when to regenerate — not deskilled into passengers watching the AI drive off a cliff. Understanding compounds instead of decaying. Systems stay maintainable. Velocity doesn't collapse at scale.&lt;/p&gt;

&lt;p&gt;And when it's time to rebuild, you're not reverse-engineering legacy code. The regenerated specs already capture what the system became and what it will become — in English, not yesterday's code or framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  One-Minute Read
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why AI coding matters:&lt;/strong&gt; Coding at scale and intensity is hard — architecture, interfaces, testing, debugging demand enormous cognitive load. AI handles this effortlessly: identifies broken interfaces, writes tests covering every code path, surfaces edge cases, never gets bored. AI coding is a genuine advancement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But AI has limits:&lt;/strong&gt; AI can't understand architecture beyond its context window. It knows the &lt;em&gt;how&lt;/em&gt;, not the &lt;em&gt;why&lt;/em&gt;. Businesses that fired their developers are rehiring them. AI is a force multiplier, not a replacement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem:&lt;/strong&gt; AI-assisted coding accelerates everything — including architectural decay. Vibe coding forgets earlier decisions as context windows overflow. Agentic coding echoes mistakes across autonomous loops. Context engineering curates inputs meticulously but has no mechanism to extract understanding back out. Spec-driven development fossilizes — specs written upfront drift into fiction as reality evolves. Each approach optimises for something real, but none of them close the loop. Teams ship systems they no longer fully understand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The insight:&lt;/strong&gt; Vibe and agentic coding externalize nothing. Context engineering curates inputs but never extracts outputs. SDD writes specs upfront and watches them fossilize. SRDD inverts this: specs are snapshots, not contracts. Code evolves. Periodically, understanding is extracted back out — not as rescue, but as a planned phase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The method:&lt;/strong&gt; SRDD is a six-phase workflow where specs guide implementation, but code becomes the source of truth. When accumulated drift signals misalignment, regeneration synthesizes fresh specs from the living system — capturing everything learned, surfacing technical debt, and reasserting direction. Then the loop begins again: clearer, cleaner, and ready for the next revolution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt; Understanding compounds instead of decaying. Velocity stays high because confidence stays high. Developers remain in control — shaping direction, reviewing PRs, deciding when to regenerate — while AI handles execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For larger systems:&lt;/strong&gt; Scaled SRDD (SSRDD) coordinates multiple independent SRDD loops across domains, enforcing boundaries without bureaucracy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bottom line:&lt;/strong&gt; SRDD makes "burn it down and rebuild properly — keeping everything we learned" a repeatable workflow, not a fantasy.&lt;/p&gt;

&lt;h2&gt;
  
  
  SRDD: Executive Brief
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why AI Coding Matters
&lt;/h3&gt;

&lt;p&gt;Coding at scale and intensity is hard. Architecture, interfaces, testing, debugging — all demand enormous cognitive load. AI changes this: it identifies broken interfaces, generates implementations from design documents, writes tests covering every code path, and surfaces edge cases. It works in any framework and never gets bored.&lt;/p&gt;

&lt;p&gt;AI coding is a genuine advancement in software development.&lt;/p&gt;

&lt;h3&gt;
  
  
  But AI Has Limits
&lt;/h3&gt;

&lt;p&gt;AI cannot understand an architecture that exceeds its context window. It doesn't dream. It cannot generate truly novel ideas. AI knows the &lt;em&gt;how&lt;/em&gt;, not the &lt;em&gt;why&lt;/em&gt; — why we're building this software, who it's for, what problems they're solving.&lt;/p&gt;

&lt;p&gt;Too many businesses assumed AI coding meant they could eliminate most developers. Many did. Those businesses are now rehiring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI is a force multiplier, not a replacement.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is SRDD?
&lt;/h3&gt;

&lt;p&gt;Spec-Roundtrip Driven Development (SRDD) is an AI-assisted development methodology designed for systems that must remain maintainable over time.&lt;/p&gt;

&lt;p&gt;Unlike approaches that treat specifications as fixed contracts or ignore them entirely, SRDD treats specs as snapshots — initially created to establish intent, then periodically regenerated from the living codebase to capture what the system has become and what it will be.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem It Solves
&lt;/h3&gt;

&lt;p&gt;AI-assisted coding delivers significant productivity gains on small projects. But as systems grow, predictable failure modes emerge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architectural drift&lt;/strong&gt; — The AI makes locally optimal changes without awareness of system-wide intent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lost understanding&lt;/strong&gt; — Teams ship systems they no longer fully comprehend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Velocity collapse&lt;/strong&gt; — Simple changes become risky; confidence erodes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical debt accumulation&lt;/strong&gt; — Shortcuts compound invisibly until refactoring becomes prohibitive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These failures are not unique to any single tool. They emerge from a structural gap: understanding flows into AI-generated code, but nothing flows back out.&lt;/p&gt;

&lt;h3&gt;
  
  
  How SRDD Addresses This
&lt;/h3&gt;

&lt;p&gt;SRDD introduces a closed loop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Specs guide implementation&lt;/strong&gt; — Structured planning documents establish intent before code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code becomes source of truth&lt;/strong&gt; — Reality evolves; specs are understood to be point-in-time snapshots&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regeneration extracts understanding&lt;/strong&gt; — Periodically, fresh specs are synthesized from the living system, informed by code, PRs, issues, tests, and production discoveries — and incorporating new functional and non-functional requirements for what it will become next.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is not a rescue operation. It is a planned phase in the system's lifecycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Business Value
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Outcome&lt;/th&gt;
&lt;th&gt;Mechanism&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sustained velocity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Confidence enables speed; regeneration prevents the slow hardening that makes change risky&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reduced rework&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Architectural misalignment is surfaced early, before it becomes expensive to fix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lower onboarding cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Understanding is externalized into regenerated specs, not trapped in tribal knowledge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Retained optionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Systems remain comprehensible and changeable as requirements evolve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Developer retention&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Engineers work on coherent systems with clear direction, not archaeological rescue missions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Future-Proofing
&lt;/h3&gt;

&lt;p&gt;Traditional systems trap knowledge in code. When that code becomes brittle, you face an unpleasant choice: expensive rewrite or slow decay. And rewrites typically reuse existing code to reduce cost — importing the same architectural constraints into the new system.&lt;/p&gt;

&lt;p&gt;SRDD inverts this.&lt;/p&gt;

&lt;p&gt;Understanding is continuously extracted into regenerated specs — language-agnostic, architecture-agnostic documentation of what the system does and why. The code is one implementation of that understanding, not the understanding itself.&lt;/p&gt;

&lt;p&gt;When technology shifts — and it will — the cost of targeting a new language, framework, or architecture is not significantly higher than rewriting in the same stack. You're not reverse-engineering legacy code. You're re-implementing documented understanding, informed by everything learned, with AI doing the heavy lifting.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Traditional rewrite&lt;/th&gt;
&lt;th&gt;SRDD rebuild&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reverse-engineer understanding from brittle code&lt;/td&gt;
&lt;td&gt;Understanding already captured in specs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reuse old code to save time → import old constraints&lt;/td&gt;
&lt;td&gt;Fresh implementation from documented intent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Locked to existing language/architecture&lt;/td&gt;
&lt;td&gt;Free to target new stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Knowledge walks out the door with developers&lt;/td&gt;
&lt;td&gt;Knowledge externalized and versioned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;SRDD doesn't just maintain systems. It makes them &lt;strong&gt;portable across time&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It Requires
&lt;/h3&gt;

&lt;p&gt;SRDD is a methodology, not a product. Adoption requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Planning document discipline&lt;/strong&gt; — Seven structured documents per development cycle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase-aware workflow&lt;/strong&gt; — Six phases from design through production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human judgment at key moments&lt;/strong&gt; — Developers review PRs, decide when to regenerate, and validate direction. The AI guides: surfacing signals, flagging drift, advising when regeneration is due. Humans decide; AI illuminates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The methodology can be adopted today using documentation and rules files. Tooling for enforcement (CLI, MCP integration) is on the roadmap.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to Use SRDD
&lt;/h3&gt;

&lt;p&gt;SRDD suits projects that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Outlive a single coding session&lt;/li&gt;
&lt;li&gt;Involve multiple services, files, or contributors&lt;/li&gt;
&lt;li&gt;Require production validation and iterative refinement&lt;/li&gt;
&lt;li&gt;Must remain maintainable over months or years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For multi-domain systems, Scaled SRDD (SSRDD) coordinates independent SRDD loops across bounded contexts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recommendation
&lt;/h3&gt;

&lt;p&gt;For teams experiencing velocity decay, architectural drift, or loss of system understanding in AI-assisted development, SRDD provides a structured path back to clarity — without abandoning the productivity benefits of AI.&lt;/p&gt;

&lt;p&gt;Pilot adoption on a single project with a willing team. Evaluate after one full cycle including regeneration.&lt;/p&gt;




&lt;h2&gt;
  
  
  SRDD: Technical Brief
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why AI Coding Matters
&lt;/h3&gt;

&lt;p&gt;Coding at scale and intensity is hard. Architecture, interfaces, testing, debugging — enormous cognitive load. AI handles this effortlessly: identifies broken interfaces, generates implementations from specs, finds every linearly independent path through code (cyclomatic complexity) and writes tests to cover them all, surfaces edge cases, works in any framework, never gets bored. It's already ingested StackOverflow.&lt;/p&gt;

&lt;p&gt;AI coding is a genuine advancement.&lt;/p&gt;

&lt;h3&gt;
  
  
  But AI Has Limits
&lt;/h3&gt;

&lt;p&gt;AI can't understand architecture beyond its context window. It doesn't dream. It can't generate novel ideas. AI knows the &lt;em&gt;how&lt;/em&gt;, not the &lt;em&gt;why&lt;/em&gt; — why we're building this, who it's for, what problems they're solving.&lt;/p&gt;

&lt;p&gt;Businesses that fired their developers are rehiring them. AI is a force multiplier, not a replacement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;Spec-Roundtrip Driven Development (SRDD) is a six-phase AI-assisted development methodology that maintains architectural coherence through planned regeneration cycles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core principle:&lt;/strong&gt; Specs are snapshots, not contracts. Code becomes the source of truth. Understanding is periodically extracted back out.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Six Phases
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Key outputs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1. Design&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Establish intent&lt;/td&gt;
&lt;td&gt;Planning docs (00-07)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2. Implementation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;TDD, scope-guarded development&lt;/td&gt;
&lt;td&gt;Code, tests, PRs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3. Review&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Coherence validation&lt;/td&gt;
&lt;td&gt;Approved PRs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4. UAT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Observe and accumulate evidence&lt;/td&gt;
&lt;td&gt;Findings in 07-NextCycle.md&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;5. Triage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Analyze findings, choose path&lt;/td&gt;
&lt;td&gt;Decision: iterate, regenerate, or release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;6. Production&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Version and release&lt;/td&gt;
&lt;td&gt;Tagged release, continued observation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Planning Documents
&lt;/h3&gt;

&lt;p&gt;Each cycle produces a dated planning directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docs/plans/2025-01-15_v2_post-regeneration/
  00-PLANNING.md       ← Requirements questionnaire
  01-REQUIREMENTS.md   ← Functional and non-functional requirements
  02-USECASES.md       ← User stories with acceptance criteria
  03-QA-SESSION.md     ← Clarifying Q&amp;amp;A transcript
  04-ARCHITECTURE.md   ← Technical design, components, data model
  05-IMPLEMENTATION.md ← Phased build plan
  06-TESTPLAN.md       ← Test strategy
  07-NextCycle.md      ← Accumulated signals, candidate contracts, version history
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  AI Responsibilities
&lt;/h3&gt;

&lt;p&gt;During implementation, the AI operates under explicit constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope guardian&lt;/strong&gt; — Cannot modify files outside declared issue scope&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pattern follower&lt;/strong&gt; — Must conform to patterns in ARCHITECTURE.md&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract respecter&lt;/strong&gt; — Cannot change test contracts without explicit approval&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TDD enforcer&lt;/strong&gt; — Red → Green → Refactor on every change&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Human review remains mandatory. The AI determines whether code works; the reviewer determines whether it fits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Regeneration Triggers
&lt;/h3&gt;

&lt;p&gt;The AI monitors for spaghettification signals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Duplicated logic across modules&lt;/li&gt;
&lt;li&gt;Circular dependencies&lt;/li&gt;
&lt;li&gt;Whack-a-mole regressions&lt;/li&gt;
&lt;li&gt;God modules / SRP violations&lt;/li&gt;
&lt;li&gt;Velocity decay on simple changes&lt;/li&gt;
&lt;li&gt;Pattern inconsistency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When signals accumulate, the AI advises regeneration. The decision remains human.&lt;/p&gt;

&lt;h3&gt;
  
  
  Regeneration Process
&lt;/h3&gt;

&lt;p&gt;Regeneration synthesizes fresh specs from multiple sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current codebase&lt;/li&gt;
&lt;li&gt;Prior planning documents&lt;/li&gt;
&lt;li&gt;Git history and PRs&lt;/li&gt;
&lt;li&gt;Issues and tickets&lt;/li&gt;
&lt;li&gt;Test suite&lt;/li&gt;
&lt;li&gt;07-NextCycle.md&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Output: A new dated planning directory describing the system as it now stands — not as it was once imagined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key principle:&lt;/strong&gt; Holistic diagnosis, selective intervention. The entire system is re-understood; only drifted subsystems are redesigned.&lt;/p&gt;

&lt;h3&gt;
  
  
  SSRDD (Scaled SRDD)
&lt;/h3&gt;

&lt;p&gt;For multi-domain systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each domain owns its own planning artefacts and SRDD cycle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CONSTITUTION.md&lt;/strong&gt; defines system-wide integration standards&lt;/li&gt;
&lt;li&gt;Explicit dependency declarations via &lt;code&gt;contracts/consumes.yaml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Boundary drift detection across domains&lt;/li&gt;
&lt;li&gt;Coordinated regeneration when changes cascade&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Trade-offs
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SRDD provides&lt;/th&gt;
&lt;th&gt;SRDD requires&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sustained velocity at scale&lt;/td&gt;
&lt;td&gt;Planning document discipline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Externalized understanding&lt;/td&gt;
&lt;td&gt;Human judgment at triage/review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed technical debt&lt;/td&gt;
&lt;td&gt;Acceptance that regeneration has real cost (days, perhaps weeks, not hours)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clear audit trail&lt;/td&gt;
&lt;td&gt;More ceremony than vibe coding&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Technology Portability
&lt;/h3&gt;

&lt;p&gt;SRDD's regeneration cycle produces specs that are implementation-independent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirements, use cases, and contracts are in natural language&lt;/li&gt;
&lt;li&gt;Architectural decisions are documented with rationale&lt;/li&gt;
&lt;li&gt;Lessons learned and rejected approaches are captured&lt;/li&gt;
&lt;li&gt;Code references illustrate solutions but don't define them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Language migrations (JS → TS, Python → Go) become spec re-implementation, not code translation&lt;/li&gt;
&lt;li&gt;Architecture shifts (monolith → microservices) are informed by documented boundaries&lt;/li&gt;
&lt;li&gt;Framework upgrades are unconstrained by legacy code patterns&lt;/li&gt;
&lt;li&gt;New team members can understand intent without archaeology&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The marginal cost of rebuilding in a new stack versus the same stack is low — because the specs, not the code, carry the knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to Use
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good fit:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Systems expected to live &amp;gt; 6 months&lt;/li&gt;
&lt;li&gt;Multiple contributors or services&lt;/li&gt;
&lt;li&gt;Production validation required&lt;/li&gt;
&lt;li&gt;Maintainability is a priority&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not ideal for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Throwaway scripts / single-session utilities&lt;/li&gt;
&lt;li&gt;Strictly regulated environments requiring SDD-style traceability&lt;/li&gt;
&lt;li&gt;Teams unwilling to maintain planning docs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Adoption Path
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Use planning doc templates (00-07)&lt;/li&gt;
&lt;li&gt;Add SRDD rules to AI configuration (CLAUDE.md, .cursorrules)&lt;/li&gt;
&lt;li&gt;Follow phase workflow manually&lt;/li&gt;
&lt;li&gt;Rely on human review for coherence and scope&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This delivers 60-70% of value. Tooling for reliable enforcement is on the roadmap.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation:&lt;/strong&gt; &lt;a href="https://docs-bbos.github.io/srdd/" rel="noopener noreferrer"&gt;docs-bbos.github.io/srdd&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/docs-bbos/srdd" rel="noopener noreferrer"&gt;github.com/docs-bbos/srdd&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Article series:&lt;/strong&gt; &lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD Is the Best AI Coding Methodology&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  License &amp;amp; Prior Art
&lt;/h2&gt;

&lt;p&gt;© 2026 Brooke Smith. All rights reserved.&lt;/p&gt;

&lt;p&gt;This repository constitutes a public disclosure and defensive publication of the Spec-Roundtrip Driven Development (SRDD) and Scaled SRDD (SSRDD) methodologies.&lt;/p&gt;

&lt;p&gt;The author expressly places the concepts, processes, and workflows described herein into the public domain as prior art, for the purpose of preventing subsequent patent claims or exclusive ownership by third parties.&lt;/p&gt;

&lt;p&gt;Commercial use, redistribution, or derivative works of this text require explicit permission from the author.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
    <item>
      <title>SRDD Is the Best AI Coding Methodology - entry</title>
      <dc:creator>Brooke</dc:creator>
      <pubDate>Wed, 07 Jan 2026 00:17:48 +0000</pubDate>
      <link>https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk</link>
      <guid>https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk</guid>
      <description>&lt;h1&gt;
  
  
  SRDD — Spec-Roundtrip Driven Development
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Keeping developers in control while building better systems with aligned AI&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Jump to quick specification overview in  &lt;a href="https://dev.to/bbos/srdd-pitches-44pa"&gt;Pitches&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;SRDD is an AI-assisted development methodology where specifications and code exist in a closed loop. Specs guide implementation, but code becomes the source of truth. Periodically, understanding is extracted back out through regeneration — synthesising fresh specs from the living system. The developer dreams; the AI disciplines. Understanding compounds instead of decaying.&lt;/p&gt;

&lt;p&gt;For multi-domain systems, &lt;strong&gt;Scaled SRDD (SSRDD)&lt;/strong&gt; wraps multiple SRDD instances with a coordination layer, governing boundaries between independently evolving subsystems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD Overview&lt;/a&gt; &lt;em&gt;(this page)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/bbos/srdd-pitches-44pa"&gt;Pitches&lt;/a&gt; — One-liner to executive brief&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe"&gt;Part 1: Why SRDD Exists&lt;/a&gt; — The problem, the journey, the insight&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4"&gt;Part 2: The AI Coding Landscape&lt;/a&gt; — Vibe coding, agentic coding, context engineering, SDD&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3"&gt;Part 3: The SRDD Workflow&lt;/a&gt; — Phases, contracts, regeneration&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/bbos/srdd-part-4-of-4-scaling-up-ssrdd-principles-and-implementation-1ojb"&gt;Part 4: Scaling Up&lt;/a&gt; — SSRDD, principles, implementation&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bbos/contributing-to-srdd-1g03"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/bbos/about-this-documentation-infrastructure-4b7m"&gt;About&lt;/a&gt; — Documentation infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why AI Coding Matters
&lt;/h2&gt;

&lt;p&gt;Coding at scale and intensity is hard. Architecture, interfaces, testing, debugging — all demand enormous cognitive load. AI handles this effortlessly: identifies broken interfaces, generates implementations from specs, writes tests covering every code path, surfaces edge cases, works in any framework, never gets bored. It's already ingested StackOverflow.&lt;/p&gt;

&lt;p&gt;AI coding is a genuine advancement in software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  But AI Has Limits
&lt;/h2&gt;

&lt;p&gt;AI can't understand architecture beyond its context window. It doesn't dream. It can't generate novel ideas. AI knows the &lt;em&gt;how&lt;/em&gt;, not the &lt;em&gt;why&lt;/em&gt; — why we're building this, who it's for, what problems they're solving.&lt;/p&gt;

&lt;p&gt;Businesses that fired their developers are rehiring them. &lt;strong&gt;AI is a force multiplier, not a replacement.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;AI-assisted coding is transformative for small projects. But as systems grow, the same failure modes appear everywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context windows become constraints, not conveniences&lt;/li&gt;
&lt;li&gt;The AI forgets earlier decisions and repeats mistakes&lt;/li&gt;
&lt;li&gt;Architectural drift accumulates silently&lt;/li&gt;
&lt;li&gt;Velocity slows as complexity rises&lt;/li&gt;
&lt;li&gt;Teams stop understanding the systems they're shipping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every approach optimises for something real — speed, autonomy, discipline, traceability — but none of them close the loop between specification and reality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SRDD closes the loop.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Specs are snapshots, not contracts.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They capture understanding at a moment in time. Code evolves. Periodically, you must extract new understanding &lt;em&gt;from&lt;/em&gt; the code and regenerate the specs.&lt;/p&gt;

&lt;p&gt;Specs guide code. Code informs regenerated specs. It's a closed loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Six Phases
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────┐
│                        SRDD Workflow                            │
└─────────────────────────────────────────────────────────────────┘

Phase 1: Design          → Establish intent, create planning docs
Phase 2: Implementation  → TDD, contracts, scope-guarded development  
Phase 3: Review          → PR review, coherence validation
Phase 4: UAT             → Observe and accumulate evidence
Phase 5: Triage          → Analyze findings, choose path
Phase 6: Production      → Version, release, continue observing

                    ┌─────────────────────────┐
                    │      Phase 4: UAT       │
                    │   (Observe &amp;amp; Accumulate)│
                    └───────────┬─────────────┘
                                │
                                ▼
                    ┌─────────────────────────┐
                    │  Phase 5: Triage and    │
                    │        Decide           │
                    └───────────┬─────────────┘
                                │
            ┌───────────────────┼───────────────────┐
            │                   │                   │
            ▼                   ▼                   ▼
    ┌───────────────┐   ┌───────────────┐   ┌───────────────┐
    │   Phase 1:    │   │   Phase 2:    │   │   Phase 6:    │
    │  Regenerate   │   │   Iterate     │   │  Production   │
    │(architectural)│   │ (bugs/minor)  │   │               │
    └───────────────┘   └───────────────┘   └───────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Planning Documents
&lt;/h2&gt;

&lt;p&gt;Each SRDD cycle produces a dated planning directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docs/plans/2025-12-15_v1_initial-design/
  00-PLANNING.md       ← Initial brain dump from requirements questionnaire
  01-REQUIREMENTS.md   ← Refined functional and non-functional requirements
  02-USECASES.md       ← User stories with acceptance criteria
  03-QA-SESSION.md     ← Q&amp;amp;A transcript clarifying ambiguities
  04-ARCHITECTURE.md   ← Technical design, components, data model
  05-IMPLEMENTATION.md ← Phased plan: what gets built in what order
  06-TESTPLAN.md       ← Test strategy and test data requirements
  07-NextCycle.md      ← Accumulated signals, candidate contracts, version history
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What SRDD Enforces
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Principle&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The roundtrip is the methodology&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Specifications flow into implementation. Understanding flows back out through regeneration.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Specs are snapshots, not contracts&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Specifications capture understanding at a point in time. Code becomes the source of truth.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The codebase is a curriculum&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The AI learns from your existing code. Contradictions breed confusion; consistency compounds velocity.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Guardrails encode judgment structurally&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Types, linters, schemas, and folder boundaries prevent bad patterns before review.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Coherence matters more than correctness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The AI determines whether code works. The reviewer determines whether it fits.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The developer dreams; the AI disciplines&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Humans choose direction. The AI executes, guards scope, and maintains consistency.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Velocity follows clarity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fast development is not the cause of good systems. It is the consequence of clear ones.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Scaled SRDD (SSRDD)
&lt;/h2&gt;

&lt;p&gt;For systems that extend beyond a single bounded context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each domain owns its own planning artefacts and SRDD cycles&lt;/li&gt;
&lt;li&gt;Domains evolve at their own pace and regenerate when local signals demand it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CONSTITUTION.md&lt;/strong&gt; defines system-wide integration standards&lt;/li&gt;
&lt;li&gt;Explicit dependency declarations prevent accidental coupling&lt;/li&gt;
&lt;li&gt;Boundary drift detection flags architectural erosion early&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SSRDD scales &lt;strong&gt;understanding&lt;/strong&gt;, not bureaucracy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current Status
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Methodology documentation&lt;/td&gt;
&lt;td&gt;✅ Available&lt;/td&gt;
&lt;td&gt;This repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Planning doc templates&lt;/td&gt;
&lt;td&gt;✅ Available&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;templates/&lt;/code&gt; directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rules file examples&lt;/td&gt;
&lt;td&gt;✅ Available&lt;/td&gt;
&lt;td&gt;CLAUDE.md templates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope enforcement tooling&lt;/td&gt;
&lt;td&gt;🔲 Planned&lt;/td&gt;
&lt;td&gt;Pre-commit hooks, MCP integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coherence validation&lt;/td&gt;
&lt;td&gt;🔲 Planned&lt;/td&gt;
&lt;td&gt;Pattern comparison against ARCHITECTURE.md&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regeneration advisor&lt;/td&gt;
&lt;td&gt;🔲 Planned&lt;/td&gt;
&lt;td&gt;Cross-session signal tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSRDD coordination layer&lt;/td&gt;
&lt;td&gt;🔲 Planned&lt;/td&gt;
&lt;td&gt;Multi-subsystem orchestration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Adoption Today
&lt;/h3&gt;

&lt;p&gt;Teams can adopt SRDD now by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using the planning doc templates (00-07)&lt;/li&gt;
&lt;li&gt;Adding SRDD rules to AI configuration (CLAUDE.md, .cursorrules, etc.)&lt;/li&gt;
&lt;li&gt;Following the phase workflow manually&lt;/li&gt;
&lt;li&gt;Relying on human review for coherence and scope discipline&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This delivers 60-70% of the value. The remaining 30-40% — reliable enforcement without human vigilance — awaits tooling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roadmap
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Alignment with Agile and SAFe&lt;/strong&gt;&lt;br&gt;
Map SRDD phases to Agile ceremonies and SAFe constructs — regeneration in PI planning, Phase 5 triage in backlog refinement, SSRDD across Agile Release Trains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rules file templates&lt;/strong&gt;&lt;br&gt;
Complete CLAUDE.md, .cursorrules, and copilot-instructions.md templates encoding the full SRDD workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP server integration&lt;/strong&gt;&lt;br&gt;
Real-time SRDD enforcement within Claude Code, Cursor, and similar tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes and container orchestration&lt;/strong&gt;&lt;br&gt;
SSRDD boundaries aligned with Kubernetes namespaces, CONSTITUTION.md as service mesh policies, coordinated regeneration in deployment pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Article Series
&lt;/h2&gt;

&lt;p&gt;This methodology is documented in a four-part series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe"&gt;Part 1: Why SRDD Exists&lt;/a&gt;&lt;/strong&gt; — The problem, the journey, the insight&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4"&gt;Part 2: The AI Coding Landscape&lt;/a&gt;&lt;/strong&gt; — Vibe coding, agentic coding, context engineering, SDD&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3"&gt;Part 3: The SRDD Workflow&lt;/a&gt;&lt;/strong&gt; — Phases, contracts, regeneration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-4-of-4-scaling-up-ssrdd-principles-and-implementation-1ojb"&gt;Part 4: Scaling Up&lt;/a&gt;&lt;/strong&gt; — SSRDD, principles, implementation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;SRDD and SSRDD are open methodologies. Contributions welcome:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tooling development&lt;/li&gt;
&lt;li&gt;Template improvements&lt;/li&gt;
&lt;li&gt;Integration guides for specific frameworks&lt;/li&gt;
&lt;li&gt;Case studies and adoption experiences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See &lt;a href="https://dev.to/bbos/contributing-to-srdd-1g03"&gt;Contributions&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  License &amp;amp; Prior Art
&lt;/h2&gt;

&lt;p&gt;© 2026 Brooke Smith. All rights reserved.&lt;/p&gt;

&lt;p&gt;This repository constitutes a public disclosure and defensive publication of the Spec-Roundtrip Driven Development (SRDD) and Scaled SRDD (SSRDD) methodologies.&lt;/p&gt;

&lt;p&gt;The author expressly places the concepts, processes, and workflows described herein into the public domain as prior art, for the purpose of preventing subsequent patent claims or exclusive ownership by third parties.&lt;/p&gt;

&lt;p&gt;Commercial use, redistribution, or derivative works of this text require explicit permission from the author.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
    <item>
      <title>SRDD (Part 4 of 4) - Scaling Up - SSRDD, Principles, and Implementation</title>
      <dc:creator>Brooke</dc:creator>
      <pubDate>Tue, 06 Jan 2026 23:49:48 +0000</pubDate>
      <link>https://dev.to/bbos/srdd-part-4-of-4-scaling-up-ssrdd-principles-and-implementation-1ojb</link>
      <guid>https://dev.to/bbos/srdd-part-4-of-4-scaling-up-ssrdd-principles-and-implementation-1ojb</guid>
      <description>&lt;h1&gt;
  
  
  SRDD (Part 4 of 4): Scaling Up - SSRDD, Principles, and Implementation
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;← Back to &lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD entry page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is Part 4 of a four-part series on Spec-Roundtrip Driven Development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe"&gt;Read Part 1: Why SRDD Exists&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4"&gt;Read Part 2: The AI Coding Landscape&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3"&gt;Read Part 3: The SRDD Workflow&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Part 3 walked through the SRDD workflow: five phases, contracts as authority, the AI as scope guardian, and regeneration as a deliberate reset of understanding.&lt;/p&gt;

&lt;p&gt;Where the earlier parts focus on failure modes and workflow, this final part focuses on durability: how SRDD holds up under scale, time, and organisational pressure.&lt;/p&gt;

&lt;p&gt;This final article covers three things: how SRDD scales to multi-domain systems through &lt;strong&gt;Scaled SRDD (SSRDD)&lt;/strong&gt;, the principles that underpin the methodology, and the current state of implementation - what you can adopt today and what tooling is still planned.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-01.Scaled_fighter-male-dragon-scale.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-01.Scaled_fighter-male-dragon-scale.png" alt="Fighter Male Dragon Scale fish'" width="700" height="700"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://loveideaet.click/product_tag/55786428_.htmlg" rel="noopener noreferrer"&gt;Fighter Male Dragon Scale fish&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  Scaled SRDD (SSRDD)
&lt;/h2&gt;

&lt;p&gt;For systems that extend beyond a single bounded context, SRDD scales into &lt;strong&gt;Scaled SRDD (SSRDD)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;SSRDD is not a new methodology layered on top of SRDD. It is a coordination wrapper that allows &lt;strong&gt;multiple independent SRDD loops&lt;/strong&gt; to coexist without collapsing into chaos or bureaucracy.&lt;/p&gt;

&lt;p&gt;Each domain, service, or subsystem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;owns its own planning artefacts&lt;/li&gt;
&lt;li&gt;runs its own SRDD cycles&lt;/li&gt;
&lt;li&gt;evolves at its own pace&lt;/li&gt;
&lt;li&gt;regenerates when its local signals demand it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No central plan attempts to predict how the whole system should evolve.&lt;/p&gt;

&lt;p&gt;Instead, SSRDD introduces just enough structure at the &lt;strong&gt;system boundary&lt;/strong&gt; to allow independent evolution without accidental entanglement.&lt;/p&gt;

&lt;h3&gt;
  
  
  System-Level Coordination
&lt;/h3&gt;

&lt;p&gt;At the system level, SSRDD coordinates only what &lt;em&gt;must&lt;/em&gt; be shared:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shared constitutions&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Agreed integration standards that define how domains present themselves to one another - API conventions, event schemas, versioning rules, and compatibility expectations. These govern interaction, not internal design.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explicit contracts&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Public-facing APIs, events, and invariants are declared and versioned. Domains are free to change internally as long as these contracts hold or are deliberately evolved.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dependency visibility&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
What each domain consumes and produces is visible by design. Hidden couplings are surfaced early, before they calcify into architectural traps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Boundary drift detection&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
SSRDD watches for signs that domain boundaries are eroding - duplicated responsibilities, circular dependencies, creeping knowledge of internals - and flags these as candidates for regeneration or boundary renegotiation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This combination is uncommon: most large systems either centralise architectural control to prevent drift, or decentralise teams without making drift visible at the system level. SSRDD does neither - it allows local autonomy while making architectural change observable rather than accidental.&lt;/p&gt;

&lt;p&gt;Crucially, SSRDD does &lt;strong&gt;not&lt;/strong&gt; synchronise development cadence, force shared tooling, or impose uniform internal practices. It coordinates &lt;em&gt;interfaces and intent&lt;/em&gt;, not implementation.&lt;/p&gt;

&lt;p&gt;SSRDD scales &lt;strong&gt;understanding&lt;/strong&gt;, not bureaucracy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why SRDD Works
&lt;/h2&gt;

&lt;p&gt;SRDD succeeds because it aligns with how complex systems &lt;em&gt;actually&lt;/em&gt; evolve - not how we wish they would.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It acknowledges discovery&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
SRDD assumes that important knowledge arrives late. Instead of treating this as failure, it builds discovery into the process and gives it a disciplined place to land.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It prevents specs from becoming fiction&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Specs are continuously regenerated from reality, not left to rot as idealised narratives disconnected from the system that ships.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It manages AI-induced technical debt at the design level&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
AI accelerates both construction and decay. SRDD counters this not by slowing AI down, but by periodically reasserting architectural intent before debt becomes destiny.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It preserves tacit product wisdom&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Decisions that would otherwise live only in heads or pull requests are captured, externalised, and made legible to both humans and machines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It restores human judgment where it belongs&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
AI executes, analyses, and enforces. Humans choose direction, recognise discomfort, and decide when a system needs to change course.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SRDD is not the fastest way to write code.&lt;/p&gt;

&lt;p&gt;It &lt;em&gt;is&lt;/em&gt; the fastest way to keep understanding intact - as systems grow, teams change, and years pass.&lt;/p&gt;

&lt;h3&gt;
  
  
  Boundary Enforcement via Dependency Permissions (SSRDD)
&lt;/h3&gt;

&lt;p&gt;SSRDD does more than coordinate domains. It can &lt;strong&gt;enforce architectural boundaries&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The core rule is explicit:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If a domain does not declare that it consumes another domain, it cannot see it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This model is closely analogous to &lt;strong&gt;Project Jigsaw (Java 9+)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Like Jigsaw, SSRDD treats boundaries as &lt;strong&gt;design-time and compile-time constraints&lt;/strong&gt;, not as informal conventions. Domains must explicitly declare what they depend on and what they expose. Everything else is inaccessible by default.&lt;/p&gt;

&lt;h4&gt;
  
  
  Explicit dependency declarations
&lt;/h4&gt;

&lt;p&gt;Each domain declares its dependencies in &lt;code&gt;contracts/consumes.yaml&lt;/code&gt;:&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;consumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;identity-management/api-users&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;inventory/api-stock&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Controlled evolution of dependencies
&lt;/h4&gt;

&lt;p&gt;In practice, dependency permissions in SSRDD are not universally mutable.&lt;/p&gt;

&lt;p&gt;Domain developers typically &lt;strong&gt;do not have direct write access&lt;/strong&gt; to the system-level SSRDD artefacts that define cross-domain dependencies - such as the shared constitution or dependency registry. Their focus remains local: implementing behaviour within declared boundaries.&lt;/p&gt;

&lt;p&gt;Changes to domain dependencies are instead mediated at the system level, typically by architects or designated system stewards.&lt;/p&gt;

&lt;p&gt;This mirrors the intent of Project Jigsaw: module boundaries are not something individual classes casually rewrite. They are &lt;strong&gt;structural decisions&lt;/strong&gt;, owned at a higher level of abstraction.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why this separation matters
&lt;/h4&gt;

&lt;p&gt;Without this separation, boundaries decay quietly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A developer “just imports” another domain to save time&lt;/li&gt;
&lt;li&gt;A quick integration bypasses the contract layer&lt;/li&gt;
&lt;li&gt;A dependency is added for convenience and never removed&lt;/li&gt;
&lt;li&gt;Architectural coupling becomes invisible until it is irreversible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI-assisted development amplifies this failure mode. When generation is cheap and fast, the path of least resistance is always cross-boundary access.&lt;/p&gt;

&lt;p&gt;SSRDD deliberately resists this by making dependency changes &lt;strong&gt;explicit, reviewable, and intentional&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Developers still move quickly within their domain.&lt;br&gt;
They simply cannot &lt;em&gt;accidentally&lt;/em&gt; change the shape of the system.&lt;/p&gt;

&lt;p&gt;In short: SSRDD treats dependency changes as architectural events, not implementation conveniences.&lt;/p&gt;

&lt;h4&gt;
  
  
  Architectural control without architectural bottlenecks
&lt;/h4&gt;

&lt;p&gt;This is not about slowing teams down.&lt;/p&gt;

&lt;p&gt;By centralising dependency authority:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Domains remain autonomous within their scope&lt;/li&gt;
&lt;li&gt;Integration decisions are made with system-level visibility&lt;/li&gt;
&lt;li&gt;Boundary changes become conscious design moments&lt;/li&gt;
&lt;li&gt;Regeneration remains feasible because coupling stays controlled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is not bureaucracy - it is &lt;strong&gt;preserved optionality&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Architects are not approving code.&lt;br&gt;
They are curating the &lt;em&gt;shape&lt;/em&gt; in which code is allowed to grow.&lt;/p&gt;

&lt;p&gt;SSRDD enforces boundaries the same way strong type systems enforce correctness:&lt;br&gt;
not by trust, but by making the wrong thing impossible.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-02_Principles_man-speaking-at-a-business-conference-picture-id499517325.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-02_Principles_man-speaking-at-a-business-conference-picture-id499517325.jpg" alt="Designated principle speaking to all the other district principles" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;Designated principle &lt;a href="https://studentreasures.com/blog/teaching-strategies/education-conferences/" rel="noopener noreferrer"&gt;speaking to all the other district principles&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  Principles
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The principles that follow were crystallised in part through reflection on Craig Adam's article "&lt;a href="https://medium.com/@craig_32726/agile-is-out-architecture-is-back-7586910ab810" rel="noopener noreferrer"&gt;Agile is Out, Architecture is Back&lt;/a&gt;" - a clear articulation of why architecture matters more, not less, in the age of AI-assisted development. His framing of the codebase as curriculum and the developer's evolving role helped sharpen what SRDD was already reaching toward. Thank you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The five phases describe &lt;em&gt;what&lt;/em&gt; happens in SRDD. This section describes &lt;em&gt;why&lt;/em&gt; certain patterns recur across all of them.&lt;/p&gt;

&lt;p&gt;These principles are not rules to be enforced. They are orientations - ways of thinking that make AI-assisted development more effective, more sustainable, and more aligned with human intent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Designing for AI Comprehension
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Your codebase is a curriculum. Every pattern teaches the AI what to repeat. Contradictions create confusion. Consistency creates velocity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI learns your project not from training, but from context. It reads your existing code and generates more code that looks like it. This has profound implications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rules files instruct. Code demonstrates.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your CLAUDE.md, cursor rules, and similar files tell the AI what to do. Your codebase &lt;em&gt;shows&lt;/em&gt; what "right" looks like. Both matter - but when they conflict, the AI often follows what it sees over what it's told.&lt;/p&gt;

&lt;p&gt;If your codebase contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple logging implementations → AI picks one randomly or invents another&lt;/li&gt;
&lt;li&gt;Inconsistent error handling → AI generates inconsistent error handling&lt;/li&gt;
&lt;li&gt;Mixed naming conventions → AI outputs mixed naming&lt;/li&gt;
&lt;li&gt;God classes alongside clean modules → AI might follow either pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI does not judge which pattern is correct. It pattern-matches on what exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This principle is LLM-agnostic&lt;/strong&gt;: Every AI coding tool - Claude Code, Cursor, Copilot, Windsurf, and tools not yet built - reads your codebase into context. Keep your codebase clean and consistent because the AI will copy what it sees.&lt;/p&gt;

&lt;h4&gt;
  
  
  Applying this across SRDD
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Application&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Phase 1&lt;/td&gt;
&lt;td&gt;Establish intent&lt;/td&gt;
&lt;td&gt;Define canonical patterns in ARCHITECTURE.md before implementation begins&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phase 2&lt;/td&gt;
&lt;td&gt;Build it&lt;/td&gt;
&lt;td&gt;Correct deviations immediately; uncorrected deviations become new patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phase 3&lt;/td&gt;
&lt;td&gt;Check fit&lt;/td&gt;
&lt;td&gt;Review for pattern conformance, not just correctness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phase 4&lt;/td&gt;
&lt;td&gt;Validate reality&lt;/td&gt;
&lt;td&gt;Formalise production discoveries carefully; they become future examples&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phase 5&lt;/td&gt;
&lt;td&gt;Realign or continue&lt;/td&gt;
&lt;td&gt;Consolidate contradictory patterns during regeneration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Guardrails Beyond Tests
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Use types, linters, schemas, and structure not just to enforce correctness - but to communicate intent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tests verify behaviour after the fact. Guardrails prevent bad patterns from entering in the first place. They operate earlier in the feedback loop, and they constrain what the AI can produce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types as documentation:&lt;/strong&gt;&lt;br&gt;
Strong typing (TypeScript, Zod schemas, Pydantic models) constrains AI output at generation time. A well-typed function signature tells the AI what shapes are valid before it writes a line of implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linters as guardrails:&lt;/strong&gt;&lt;br&gt;
ESLint rules, Prettier configurations, and architectural linters (like eslint-plugin-boundaries) reject code that violates conventions automatically. The AI learns quickly that certain patterns don't survive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Schemas as contracts:&lt;/strong&gt;&lt;br&gt;
OpenAPI specs, JSON Schema, and similar declarations make contracts machine-readable. The AI can validate its output against them - and tools can reject non-conforming code before review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Folder structure as architecture:&lt;/strong&gt;&lt;br&gt;
Where code lives communicates what it is. A clear directory structure - with boundaries that match domain concepts - helps the AI place new code appropriately. Ambiguous structure produces ambiguous placement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;These guardrails are not bureaucracy.&lt;/strong&gt; They are force multipliers. Every constraint that prevents a bad pattern from entering is a constraint that doesn't need to be caught in review, fixed in testing, or cleaned up during regeneration.&lt;/p&gt;

&lt;p&gt;Guardrails encode judgment structurally - not just in documentation.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-03.encode_Judgement_day_IMG_1369.JPG" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-03.encode_Judgement_day_IMG_1369.JPG" alt="Image of aJudgement DayJudgement Day w ghouls and devils shredding judged humans" width="800" height="586"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:Judgement_day_IMG_1369.JPG" rel="noopener noreferrer"&gt;Judgement Day&lt;/a&gt;
  &lt;/p&gt;

&lt;h3&gt;
  
  
  Encode Judgment, Don't Just Document It
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Structure that enforces decisions is stronger than documentation that describes them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Documentation can be ignored. Structure cannot.&lt;/p&gt;

&lt;p&gt;When a decision matters - when violating it would cause drift, inconsistency, or architectural decay - encode it in a way that makes violation difficult or impossible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use folder boundaries&lt;/strong&gt; to enforce module separation, not just naming conventions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use types&lt;/strong&gt; to make invalid states unrepresentable, not just documented as "don't do this"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use linter rules&lt;/strong&gt; to reject patterns automatically, not just style guides that request compliance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use CI checks&lt;/strong&gt; to fail builds on violations, not just code review comments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI reads structure more reliably than prose. A linter rule that rejects a pattern is more effective than a CLAUDE.md instruction that discourages it.&lt;/p&gt;

&lt;p&gt;This does not mean documentation is worthless. It means documentation is for &lt;em&gt;explanation&lt;/em&gt;, not &lt;em&gt;enforcement&lt;/em&gt;. Explain the "why" in docs. Enforce the "what" in structure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The test:&lt;/strong&gt; If the AI could violate a decision and still produce code that passes all checks, the decision is not yet encoded. It is merely suggested.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coherence Over Correctness
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Correct code that doesn't fit is worse than imperfect code that coheres.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI can produce code that works. That is table stakes. The harder problem is producing code that &lt;em&gt;fits&lt;/em&gt; - that respects existing boundaries, follows established patterns, and doesn't introduce architectural debt.&lt;/p&gt;

&lt;p&gt;A function can pass all tests and still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a different logging approach than the rest of the system&lt;/li&gt;
&lt;li&gt;Handle errors in a novel way that won't be replicated&lt;/li&gt;
&lt;li&gt;Introduce a dependency that violates layering&lt;/li&gt;
&lt;li&gt;Name things inconsistently with surrounding code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not test failures. They are coherence failures. They make the system harder to understand, harder to maintain, and harder for the AI to pattern-match correctly in future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The reviewer's job is coherence&lt;/strong&gt;: The AI handles correctness. The human ensures fit.&lt;/p&gt;

&lt;p&gt;This requires architectural awareness - understanding not just whether the code works, but whether it belongs. That awareness is precisely what distinguishes a developer from a code generator.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-04_DevsDream_AI-DisciplinesHowAIVibeCodingIsErasingDevelopersSkills.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-04_DevsDream_AI-DisciplinesHowAIVibeCodingIsErasingDevelopersSkills.jpg" alt="Image of a fictional roller-coaster that has a gap in one of it's loops" width="800" height="418"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://coastercritic.com/2013/08/10/roller-coaster-gap-in-loop-youtube-geek-week/" rel="noopener noreferrer"&gt;Some might like this missing loop&lt;/a&gt;
  &lt;/p&gt;

&lt;h3&gt;
  
  
  The Developer Dreams, The AI Disciplines
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Humans are for invention, imagination, and direction. Machines are for execution, analysis, and consistency.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;SRDD deliberately assigns roles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The developer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decides what to build and why&lt;/li&gt;
&lt;li&gt;Makes architectural judgments&lt;/li&gt;
&lt;li&gt;Recognises when something feels wrong&lt;/li&gt;
&lt;li&gt;Chooses direction when trade-offs arise&lt;/li&gt;
&lt;li&gt;Dreams futures the AI cannot imagine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The AI:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Executes implementation within constraints&lt;/li&gt;
&lt;li&gt;Guards scope and flags deviations&lt;/li&gt;
&lt;li&gt;Detects spaghettification signals&lt;/li&gt;
&lt;li&gt;Maintains consistency with established patterns&lt;/li&gt;
&lt;li&gt;Synthesises understanding during regeneration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI does not dream. It interpolates. It gravitates toward the statistical centre of its training data. Novel architectures, distinctive designs, and opinionated choices must come from humans.&lt;/p&gt;

&lt;p&gt;But humans are fallible. They get bored. They take shortcuts. They expand scope opportunistically. The AI provides discipline: holding boundaries, asking clarifying questions, refusing to silently drift.&lt;/p&gt;

&lt;p&gt;Neither is sufficient alone.&lt;br&gt;
Together, they compound.&lt;/p&gt;

&lt;h3&gt;
  
  
  Specs Are Snapshots, Not Contracts
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Specifications capture understanding at a moment in time. Code becomes the source of truth. Periodically, understanding must be extracted back out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the foundational insight of SRDD.&lt;/p&gt;

&lt;p&gt;Traditional spec-driven development treats specifications as authoritative: write the spec, generate the code, update the spec when requirements change. In practice, this breaks down. Code evolves faster than documentation. Implicit behaviours emerge. The spec becomes fiction.&lt;/p&gt;

&lt;p&gt;SRDD inverts the relationship. Specs are &lt;em&gt;inputs&lt;/em&gt; to a cycle, not &lt;em&gt;outputs&lt;/em&gt; of a process. They capture intent at the start. But as implementation proceeds, the code becomes the real source of truth - informed by production discoveries, implicit contracts, and decisions made under pressure.&lt;/p&gt;

&lt;p&gt;The roundtrip is what makes SRDD sustainable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Specs guide initial implementation&lt;/li&gt;
&lt;li&gt;Implementation reveals what specs missed&lt;/li&gt;
&lt;li&gt;Production surfaces implicit contracts&lt;/li&gt;
&lt;li&gt;Regeneration extracts new specs from living code&lt;/li&gt;
&lt;li&gt;The cycle repeats with compounded understanding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without the roundtrip, specs drift into irrelevance. With it, understanding compounds instead of decaying.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-05_VelocityFollowsClarity_moving_bike.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-05_VelocityFollowsClarity_moving_bike.png" alt="Image of a bike made with various size circles with 3d shadows" width="800" height="467"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://visionbook.mit.edu/motion_estimation_intro.html" rel="noopener noreferrer"&gt;Motion-induced visual illusion&lt;/a&gt;
  &lt;/p&gt;

&lt;h3&gt;
  
  
  Velocity Follows Clarity
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Fast development is not the cause of good systems. It is the consequence of clear ones.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Teams do not ship slowly because they lack skill. They ship slowly because they lack confidence. Confidence erodes when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No one is sure what a change might break&lt;/li&gt;
&lt;li&gt;Boundaries have blurred beyond recognition&lt;/li&gt;
&lt;li&gt;Patterns contradict each other&lt;/li&gt;
&lt;li&gt;Tests defend structure rather than contracts&lt;/li&gt;
&lt;li&gt;Tribal knowledge has replaced explicit understanding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SRDD addresses velocity by addressing clarity. Regeneration restores architectural coherence. Contracts make guarantees explicit. Pattern hygiene ensures the AI produces consistent output. Guardrails prevent drift from entering.&lt;/p&gt;

&lt;p&gt;The result is not just a cleaner codebase. It is a faster one - because developers (and AI) can act with confidence instead of caution.&lt;/p&gt;

&lt;p&gt;Speed is earned, not demanded.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Principle&lt;/th&gt;
&lt;th&gt;Core Insight&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Designing for AI Comprehension&lt;/td&gt;
&lt;td&gt;The codebase teaches the AI what to repeat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Guardrails Beyond Tests&lt;/td&gt;
&lt;td&gt;Prevent bad patterns earlier than review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Encode Judgment, Don't Just Document It&lt;/td&gt;
&lt;td&gt;Structure enforces; documentation explains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coherence Over Correctness&lt;/td&gt;
&lt;td&gt;Fit matters more than function&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Developer Dreams, The AI Disciplines&lt;/td&gt;
&lt;td&gt;Humans choose direction; machines maintain consistency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Specs Are Snapshots, Not Contracts&lt;/td&gt;
&lt;td&gt;Understanding must roundtrip back from code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Velocity Follows Clarity&lt;/td&gt;
&lt;td&gt;Confidence enables speed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These principles are not optional.&lt;/p&gt;

&lt;p&gt;SRDD's phases, guardrails, and regeneration cycles exist to enforce them - or surface it clearly when they're being violated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;SRDD is currently a methodology, not a product. This section describes what exists today, what's planned, and what reliable enforcement will require.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current Status
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Methodology documentation&lt;/td&gt;
&lt;td&gt;✅ Available&lt;/td&gt;
&lt;td&gt;SRDD.md, SCALED-SRDD.md&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Planning doc templates&lt;/td&gt;
&lt;td&gt;✅ Available&lt;/td&gt;
&lt;td&gt;00-07 document templates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rules file examples&lt;/td&gt;
&lt;td&gt;✅ Available&lt;/td&gt;
&lt;td&gt;CLAUDE.md templates for SRDD workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope enforcement tooling&lt;/td&gt;
&lt;td&gt;🔲 Planned&lt;/td&gt;
&lt;td&gt;Pre-commit hooks, MCP integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coherence validation&lt;/td&gt;
&lt;td&gt;🔲 Planned&lt;/td&gt;
&lt;td&gt;Pattern comparison against ARCHITECTURE.md&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regeneration advisor&lt;/td&gt;
&lt;td&gt;🔲 Planned&lt;/td&gt;
&lt;td&gt;Cross-session signal tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSRDD coordination layer&lt;/td&gt;
&lt;td&gt;🔲 Planned&lt;/td&gt;
&lt;td&gt;Multi-subsystem orchestration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The methodology can be adopted today using documentation and rules alone. Teams will capture significant value - better than vibe coding, better than undisciplined agentic work. But reliable enforcement of scope guarding, coherence review, and regeneration detection will require tooling that does not yet exist.&lt;/p&gt;

&lt;h3&gt;
  
  
  SRDD Implementation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What works with rules alone:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TDD workflow&lt;/strong&gt;: AI follows this well with clear instructions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR description format&lt;/strong&gt;: templatable, AI complies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communication protocols&lt;/strong&gt;: "ask before expanding scope" works reasonably&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase awareness&lt;/strong&gt;: AI can be reminded which phase it's in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pattern following&lt;/strong&gt;: works if good examples exist in the codebase&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What needs tooling for reliable enforcement:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scope enforcement&lt;/strong&gt;: Pre-commit hooks or CI checks that validate files changed against declared issue scope. AI self-discipline is insufficient; hard blocks are required.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Coherence validation&lt;/strong&gt;: CLI or MCP server that compares implementation against ARCHITECTURE.md patterns. Generates structured report for human review. Could integrate with PR process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pattern drift detection&lt;/strong&gt;: Static analysis that scores conformance against canonical patterns. Custom linter rules or dedicated tool. Runs in CI, blocks on threshold violations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regeneration advisor&lt;/strong&gt;: Tracks signals across sessions: contract change frequency, scope expansion requests, pattern drift indicators. Surfaces recommendations: "3 significant contract changes in 2 weeks - consider regeneration." Cannot rely on AI memory alone.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Planned tooling:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The table below outlines planned tooling that reinforces SRDD practices; the methodology already works today using rules files and process discipline, which cover roughly 60% of the model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;srdd check&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Validate current state against methodology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;srdd review-coherence&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Compare implementation against ARCHITECTURE.md&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;srdd regeneration-status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Surface signals that suggest regeneration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;MCP server integration for real-time checking within Claude Code, Cursor, and similar tools is a longer-term goal. This would make SRDD workflows smoother - the AI checks scope, patterns, and coherence &lt;em&gt;before&lt;/em&gt; acting, rather than failing at commit or review. True enforcement still requires hard blocks at git and CI layers; MCP advises, it does not prevent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adoption without tooling:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Teams can adopt SRDD today by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using the planning doc templates (00-07)&lt;/li&gt;
&lt;li&gt;Adding SRDD rules to their AI configuration (CLAUDE.md, .cursorrules, etc.)&lt;/li&gt;
&lt;li&gt;Following the phase workflow manually&lt;/li&gt;
&lt;li&gt;Relying on human review for coherence and scope discipline&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This delivers 60-70% of the value. The remaining 30-40% - reliable enforcement without human vigilance - awaits tooling.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-06.implementation-guide.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-06.implementation-guide.jpg" alt="Cartoon Image of people holding up gears and cogs - as business processes metaphor" width="800" height="409"&gt;&lt;/a&gt;&lt;br&gt;implementing a &lt;a href="https://www.youraspire.com/guides/landscape/management-software-implementation-best-practices" rel="noopener noreferrer"&gt;management software solution&lt;/a&gt;
  &lt;/p&gt;

&lt;h3&gt;
  
  
  SSRDD Implementation
&lt;/h3&gt;

&lt;p&gt;SSRDD wraps multiple SRDD instances with a coordination layer. Each subsystem runs its own SRDD cycle; SSRDD governs the boundaries between them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional components required:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CONSTITUTION.md enforcement&lt;/strong&gt;: Validation that subsystem contracts conform to system-wide standards. Not just documentation; automated checks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cross-subsystem dependency tracking&lt;/strong&gt;: Visibility into which subsystems depend on which contracts. Change impact analysis before regeneration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Coordinated regeneration&lt;/strong&gt;: When one subsystem regenerates, affected subsystems are notified. Integration contracts are re-validated. Cascade effects are surfaced, not hidden.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;System-wide coherence dashboard&lt;/strong&gt;: Aggregates health signals across subsystems. Pattern drift in subsystem A, contract churn in subsystem B, integration test failures between C and D - visible in one place.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Current status:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SSRDD is documented as methodology. No tooling exists. Adoption today requires:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manual coordination between subsystem teams&lt;/li&gt;
&lt;li&gt;Disciplined maintenance of CONSTITUTION.md&lt;/li&gt;
&lt;li&gt;Human tracking of cross-subsystem dependencies&lt;/li&gt;
&lt;li&gt;Scheduled integration checkpoints&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is workable for small numbers of subsystems (2-4) with disciplined teams. Beyond that, tooling becomes essential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Planned approach:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SSRDD tooling will build on SRDD tooling:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ssrdd status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Health across all subsystems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ssrdd check-constitution&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Validate subsystem compliance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ssrdd impact-analysis &amp;lt;change&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;What subsystems are affected?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ssrdd coordinate-regeneration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Orchestrate multi-subsystem realignment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Timeline: SRDD tooling first, SSRDD coordination layer second.&lt;/p&gt;

&lt;h3&gt;
  
  
  Roadmap
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Alignment with Agile and SAFe&lt;/strong&gt;:&lt;br&gt;
SRDD is designed to complement, not replace, existing delivery frameworks. Future documentation will map SRDD phases to Agile ceremonies and SAFe constructs - showing how regeneration fits into PI planning, how Phase 5 triage aligns with backlog refinement, and how SSRDD coordinates across Agile Release Trains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rules file templates&lt;/strong&gt;:&lt;br&gt;
Complete CLAUDE.md, .cursorrules, and copilot-instructions.md templates that encode SRDD workflow, scope guarding, and pattern-following behaviour. Ready to drop into any project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP server integration&lt;/strong&gt;:&lt;br&gt;
Real-time SRDD enforcement within Claude Code, Cursor, and similar tools. The AI checks scope, patterns, and coherence &lt;em&gt;before&lt;/em&gt; acting. True enforcement still requires git and CI layers; MCP advises and surfaces signals continuously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes and container orchestration&lt;/strong&gt;:&lt;br&gt;
SSRDD's domain model maps naturally to microservices architectures. Future work will explore how SSRDD boundaries align with Kubernetes namespaces, how CONSTITUTION.md standards translate to service mesh policies, and how coordinated regeneration integrates with deployment pipelines. The goal is SSRDD as a design-time discipline that produces systems well-suited to container orchestration - not as an afterthought, but by construction.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-07.contribute.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F4-07.contribute.png" alt="Drawn image of two hands haking with 'cooperation' messages covering both" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.drupal.org/project/contribute" rel="noopener noreferrer"&gt;Contribute to Drupal&lt;/a&gt;
  &lt;/p&gt;

&lt;h3&gt;
  
  
  Contributing
&lt;/h3&gt;

&lt;p&gt;SRDD and SSRDD are open methodologies. The documentation, templates, and (eventually) tooling will be available for community use and contribution.&lt;/p&gt;

&lt;p&gt;If you're interested in contributing to the tooling effort, or adopting SRDD in your organisation and sharing learnings, [contact information / repository link].&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Vibe coding, agentic coding, context engineering, spec-driven development - each optimises for something real. Speed. Autonomy. Discipline. Traceability. None of them are wrong. But none of them close the loop.&lt;/p&gt;

&lt;p&gt;Vibe coding forgets. Agentic coding echoes. Context engineering curates inputs but not outputs. Spec-driven development treats specifications as authoritative even as reality drifts away from them.&lt;/p&gt;

&lt;p&gt;SRDD closes the loop.&lt;/p&gt;

&lt;h3&gt;
  
  
  What SRDD Enforces
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The roundtrip is the methodology.&lt;/strong&gt;&lt;br&gt;
Specifications flow into implementation. Understanding flows back out through regeneration. This is not a rescue operation - it is a planned phase in the system's lifecycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specs are snapshots, not contracts.&lt;/strong&gt;&lt;br&gt;
Specifications capture understanding at a point in time. Code becomes the source of truth. Periodically, understanding is extracted back out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The codebase is a curriculum.&lt;/strong&gt;&lt;br&gt;
The AI learns from your existing code. Every pattern teaches it what to repeat. Contradictions breed confusion; consistency compounds velocity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guardrails encode judgment structurally.&lt;/strong&gt;&lt;br&gt;
Types, linters, schemas, and folder boundaries prevent bad patterns before review. Documentation explains; structure enforces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coherence matters more than correctness.&lt;/strong&gt;&lt;br&gt;
The AI determines whether code works. The reviewer determines whether it fits. Correct code that violates patterns degrades the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The developer dreams; the AI disciplines.&lt;/strong&gt;&lt;br&gt;
Humans choose direction, make architectural judgments, and recognise when something feels wrong. The AI executes, guards scope, and maintains consistency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Velocity follows clarity.&lt;/strong&gt;&lt;br&gt;
Fast development is not the cause of good systems. It is the consequence of clear ones. Confidence enables speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  At Scale
&lt;/h3&gt;

&lt;p&gt;SSRDD extends these principles across domains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Boundaries become explicit&lt;/li&gt;
&lt;li&gt;Dependencies become intentional&lt;/li&gt;
&lt;li&gt;Domains evolve independently without silent entanglement&lt;/li&gt;
&lt;li&gt;Understanding scales - not bureaucracy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Core Commitment
&lt;/h3&gt;

&lt;p&gt;Every senior developer has stared at a system they once understood and thought: "If only I could burn this down and rebuild it properly - keeping everything we learned, but losing the accumulated mess."&lt;/p&gt;

&lt;p&gt;SRDD makes that possible.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Specs deserve a return ticket&lt;/li&gt;
&lt;li&gt;Boundaries deserve enforcement&lt;/li&gt;
&lt;li&gt;Judgment deserves to be structural&lt;/li&gt;
&lt;li&gt;Understanding deserves to survive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI accelerates everything, including mistakes. SRDD exists to make learning faster than decay.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Complete Series
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe"&gt;Part 1: Why SRDD Exists&lt;/a&gt;&lt;/strong&gt; - The problem, the journey, the insight&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4"&gt;Part 2: The AI Coding Landscape&lt;/a&gt;&lt;/strong&gt; - Vibe coding, agentic coding, context engineering, SDD&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3"&gt;Part 3: The SRDD Workflow&lt;/a&gt;&lt;/strong&gt; - Phases, contracts, regeneration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-4-of-4-scaling-up-ssrdd-principles-and-implementation-1ojb"&gt;Part 4: Scaling Up&lt;/a&gt;&lt;/strong&gt; - SSRDD, principles, implementation (this article)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;© 2026 Brooke Smith. All rights reserved.&lt;/p&gt;

&lt;p&gt;This document constitutes a public disclosure and defensive publication of the&lt;br&gt;
Spec-Roundtrip Driven Development (SRDD) and Scaled SRDD (SSRDD) methodologies.&lt;/p&gt;

&lt;p&gt;The author expressly places the concepts, processes, and workflows described&lt;br&gt;
herein into the public domain as prior art, for the purpose of preventing&lt;br&gt;
subsequent patent claims or exclusive ownership by third parties.&lt;/p&gt;

&lt;p&gt;Commercial use, redistribution, or derivative works of this text require&lt;br&gt;
explicit permission from the author.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
    <item>
      <title>SRDD (Part 3 of 4) - The SRDD Workflow</title>
      <dc:creator>Brooke</dc:creator>
      <pubDate>Tue, 06 Jan 2026 23:35:19 +0000</pubDate>
      <link>https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3</link>
      <guid>https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3</guid>
      <description>&lt;h1&gt;
  
  
  SRDD (Part 3 of 4): The SRDD Workflow
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;← Back to &lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD entry page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is Part 3 of a four-part series on Spec-Roundtrip Driven Development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe"&gt;Read Part 1: Why SRDD Exists&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4"&gt;Read Part 2: The AI Coding Landscape&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Part 2 mapped the AI coding landscape - vibe coding, agentic coding, context engineering, and spec-driven development - and showed where each approach predictably breaks down.&lt;/p&gt;

&lt;p&gt;This article is the technical core: the five phases of SRDD, how contracts govern change, what the AI is responsible for during implementation, and how regeneration closes the loop between intent and reality.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F3-01_missingLoop_e00f6-roller-coaster-loop-gap-youtube-geek-week.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F3-01_missingLoop_e00f6-roller-coaster-loop-gap-youtube-geek-week.png" alt="Image of a fictional roller-coaster that has a gap in one of it's loops" width="300" height="290"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://coastercritic.com/2013/08/10/roller-coaster-gap-in-loop-youtube-geek-week/" rel="noopener noreferrer"&gt;Some might like this missing loop&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  SRDD: The Missing Loop
&lt;/h2&gt;

&lt;p&gt;Spec-Roundtrip Driven Development (SRDD) is a development methodology designed for AI-assisted systems that must evolve over time without losing coherence, intent, or professional judgment. It was created in response to a recurring failure mode across modern AI coding approaches: understanding flows in one direction, while systems grow in another.&lt;/p&gt;

&lt;p&gt;In SRDD, specifications, code, tests, and operational reality form a &lt;strong&gt;closed loop&lt;/strong&gt;. Specs inform implementation, implementation reshapes understanding, and that understanding is periodically captured back into renewed specifications. The system is not treated as something to be generated once and maintained defensively, but as something to be &lt;strong&gt;actively developed&lt;/strong&gt; - with intent revisited, designs refined, and direction reasserted as the system grows.&lt;/p&gt;

&lt;p&gt;Spec-Roundtrip Driven Development (SRDD) retains the strengths of earlier approaches while removing their most damaging assumptions.&lt;/p&gt;

&lt;p&gt;It deliberately keeps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The structure of specs&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
SRDD preserves structured specifications as a working medium for intent. Requirements, use cases, architectural boundaries, and test strategies are still articulated explicitly. Specs remain the place where understanding is shaped, challenged, and communicated - not abandoned once code exists. They provide the map from which development proceeds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The speed of AI&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
SRDD fully embraces AI-assisted execution. Generation, refactoring, test scaffolding, and repetitive work are delegated aggressively. The AI accelerates implementation, shortens feedback loops, and keeps momentum high. Humans are freed to make directional decisions rather than fight mechanics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The adaptability of iteration&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
SRDD remains unapologetically iterative, but iteration is not aimless. Each cycle is guided by intent and expressed through &lt;strong&gt;deliberate development&lt;/strong&gt;. Features are not merely discovered; they are designed, implemented, reviewed, and extended in response to real use. Assumptions are corrected, designs are refined, and capabilities are intentionally built out over time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system is not simply allowed to change.&lt;br&gt;&lt;br&gt;
It is &lt;strong&gt;actively developed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI accelerates the mechanics of that development, but humans retain control over direction, scope, and shape. Each cycle ensures that what is built next is informed by what already exists - without being constrained by it.&lt;/p&gt;

&lt;p&gt;But SRDD draws a hard line at one assumption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It rejects the idea that specs are contracts.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Specs are not promises to be enforced against the future. They are snapshots of current understanding, taken so that the next step can be chosen deliberately. When reality diverges - as it inevitably does - SRDD does not force the system back into compliance with an outdated document. Instead, the spec is regenerated from the living system, &lt;em&gt;then actively edited&lt;/em&gt; to reflect what the system &lt;strong&gt;should become next&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Regeneration is not acceptance of the system as it is.  It is not a rationalisation of accumulated &lt;strong&gt;technical debt&lt;/strong&gt;, nor a quiet agreement to live with architectural drift because it has become inconvenient to confront.&lt;/p&gt;

&lt;p&gt;It is re-orientation.&lt;/p&gt;

&lt;p&gt;SRDD begins by accepting reality as evidence: the code that exists, the behaviour that ships, the tests that pass, and the shortcuts that were taken. Technical debt is acknowledged explicitly, not hidden behind compliance or deferred indefinitely. The system is recognised as &lt;em&gt;broken where it is broken&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;But SRDD refuses a more dangerous form of acceptance - the kind where debt becomes destiny.&lt;/p&gt;

&lt;p&gt;Instead, regeneration reasserts intent. The system is deliberately pointed somewhere new, informed by everything that has been learned along the way. Decisions that once lived only as &lt;strong&gt;tribal knowledge&lt;/strong&gt; - why a trade-off was made, why a shortcut was tolerated, why a boundary eroded - are surfaced, articulated, and captured in the regenerated spec.&lt;/p&gt;

&lt;p&gt;What emerges is not a justification of the present system, but a clarified foundation for what comes next.&lt;/p&gt;

&lt;p&gt;The regenerated spec becomes a renewed point of control - a place where technical debt is made visible, tribal knowledge is externalised, and direction is chosen consciously rather than inherited accidentally. Structure is preserved. Direction is reasserted. Progress continues with better footing than before.&lt;/p&gt;

&lt;p&gt;SRDD does not eliminate structure.  It makes structure responsive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That roundtrip is the core innovation.&lt;/strong&gt;&lt;/p&gt;


  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F3-02-auditability_best-practices-improvement-2.jpg" alt="Cartoon hand holding a 'tick' surrounded by business process icons" width="800" height="500"&gt;Best practices: how to develop with &lt;a href="https://grupo-giga.com/blog/develop-with-auditability/" rel="noopener noreferrer"&gt;auditability&lt;/a&gt;
  

&lt;h3&gt;
  
  
  A note on SRDD and auditability
&lt;/h3&gt;

&lt;p&gt;It is worth pausing here to be explicit about how SRDD relates to the core strength of Spec-Driven Development.&lt;/p&gt;

&lt;p&gt;One of the primary reasons SDD exists at all is &lt;strong&gt;auditability&lt;/strong&gt;. By forcing early formalisation and maintaining tight synchronisation between specification and implementation, SDD produces systems where intent, design, code, and change history can be traced with near-forensic precision. That discipline is not incidental - it is the point. In regulated and safety-critical environments, the cost of Big Design Up Front is accepted because the resulting guarantees are required.&lt;/p&gt;

&lt;p&gt;SRDD does not attempt to replicate that level of certainty.&lt;/p&gt;

&lt;p&gt;Instead, it offers a different - and deliberately weaker - form of auditability.&lt;/p&gt;

&lt;p&gt;Where SDD proves correctness through prior formalisation, SRDD produces &lt;strong&gt;evidence through evolution&lt;/strong&gt;. Each regeneration cycle preserves lineage: original intent, implemented reality, subsequent redesign. What remains consistent across regenerations demonstrates stability. What changes documents learning. Technical debt is surfaced rather than concealed, and tribal knowledge is progressively externalised into planning artefacts instead of remaining implicit in code or conversations.&lt;/p&gt;

&lt;p&gt;The system is not certified as &lt;em&gt;never wrong&lt;/em&gt; in advance.&lt;br&gt;
It is traceable in &lt;strong&gt;how it became right over time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This distinction matters. SRDD trades absolute guarantees for adaptability, but it does not abandon accountability. It replaces compliance-driven certainty with historically grounded transparency - sufficient for most software systems, even if it falls short of SDD’s strongest claims.&lt;/p&gt;


  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F3-00_workflowDiagram-transparent.png" alt="Workflow diagram showing the phases of SRDD" width="800" height="1114"&gt;Workflow diagram showing the phases of &lt;a href="https://docs-bbos.github.io/srdd" rel="noopener noreferrer"&gt;SRDD&lt;/a&gt;
  

&lt;h2&gt;
  
  
  The SRDD Workflow
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Phase 1: Design
&lt;/h3&gt;

&lt;p&gt;Phase 1 establishes &lt;em&gt;intent&lt;/em&gt;. It is where understanding is shaped, clarified, and made explicit &lt;strong&gt;before&lt;/strong&gt; implementation hardens around it.&lt;/p&gt;

&lt;p&gt;In an initial build, Phase 1 starts from a blank slate.&lt;br&gt;
In subsequent iterations or regeneration cycles, it is informed by everything learned since the last design - including production evidence captured in &lt;code&gt;07-NextCycle.md&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docs/plans/2025-12-15_v1_initial-design/
  00-PLANNING.md       ← Initial brain dump from requirements questionnaire
  01-REQUIREMENTS.md   ← Refined functional and non-functional requirements
  02-USECASES.md       ← User stories with acceptance criteria
  03-QA-SESSION.md     ← Q&amp;amp;A transcript clarifying ambiguities
  04-ARCHITECTURE.md   ← Technical design, components, data model
  05-IMPLEMENTATION.md ← Phased plan: what gets built in what order
  06-TESTPLAN.md       ← Test strategy and test data requirements
  07-NextCycle.md      ← Placeholder for production discoveries and future intent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Phase 1 is entered as part of a &lt;strong&gt;regeneration cycle&lt;/strong&gt;, the &lt;code&gt;07-NextCycle.md&lt;/code&gt; artefact is treated as an explicit input:&lt;/p&gt;

&lt;p&gt;This document captures production discoveries, unresolved tensions, candidate contracts, and signals of architectural drift. It does not prescribe solutions - it informs what must be reconsidered.&lt;/p&gt;

&lt;h3&gt;
  
  
  00-PLANNING.md
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;00-PLANNING.md&lt;/code&gt; captures the initial brain dump.&lt;/p&gt;

&lt;p&gt;Using a structured questionnaire, the developer and AI work through the problem space: what is being solved, who has the problem, why now, and what constraints exist. In regeneration cycles, this document also reflects on what the system has become - including shortcuts taken, assumptions invalidated, and lessons learned.&lt;/p&gt;

&lt;p&gt;This document is deliberately rough. Its purpose is &lt;strong&gt;breadth, not precision&lt;/strong&gt;. Everything goes on the table before refinement begins.&lt;/p&gt;

&lt;h3&gt;
  
  
  01-REQUIREMENTS.md
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;01-REQUIREMENTS.md&lt;/code&gt; distils the planning document into formal requirements.&lt;/p&gt;

&lt;p&gt;Functional requirements describe what the system must do. Non-functional requirements capture performance, security, reliability, scalability, and operational constraints. MoSCoW prioritisation happens here: must have, should have, could have, won't have.&lt;/p&gt;

&lt;p&gt;In regeneration cycles, requirements may be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reaffirmed&lt;/li&gt;
&lt;li&gt;modified&lt;/li&gt;
&lt;li&gt;retired&lt;/li&gt;
&lt;li&gt;or newly introduced based on production evidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes change explicit rather than accidental.&lt;/p&gt;

&lt;h3&gt;
  
  
  02-USECASES.md
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;02-USECASES.md&lt;/code&gt; translates requirements into concrete user stories with acceptance criteria.&lt;/p&gt;

&lt;p&gt;Each use case follows a consistent structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;As a&lt;/em&gt; [role]&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;I want&lt;/em&gt; [capability]&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;So that&lt;/em&gt; [benefit]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Acceptance criteria define what "done" means in observable terms. These criteria become the authoritative source for functional and integration tests in later phases.&lt;/p&gt;

&lt;p&gt;Importantly, &lt;strong&gt;use cases are not written during production&lt;/strong&gt;. They are derived deliberately here - often directly from discoveries captured in &lt;code&gt;07-NextCycle.md&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  03-QA-SESSION.md
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;03-QA-SESSION.md&lt;/code&gt; preserves the conversation.&lt;/p&gt;

&lt;p&gt;As the AI generates and refines the preceding documents, questions naturally arise: edge cases, ambiguities, unstated assumptions, conflicting goals. This transcript captures the back-and-forth - including corrections, disagreements, and rationale.&lt;/p&gt;

&lt;p&gt;This document exists to preserve &lt;strong&gt;decision context&lt;/strong&gt;, not to enforce outcomes. It becomes invaluable during regeneration, when past intent must be re-understood rather than re-imagined.&lt;/p&gt;

&lt;h3&gt;
  
  
  04-ARCHITECTURE.md
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;04-ARCHITECTURE.md&lt;/code&gt; defines the technical approach.&lt;/p&gt;

&lt;p&gt;It documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;component boundaries&lt;/li&gt;
&lt;li&gt;data models&lt;/li&gt;
&lt;li&gt;API surfaces&lt;/li&gt;
&lt;li&gt;integration patterns&lt;/li&gt;
&lt;li&gt;technology choices and constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where professional architectural judgment matters most. The goal is not novelty, but coherence - ensuring the AI does not default to generic or statistically common patterns that are misaligned with the system's actual needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Canonical patterns are established here&lt;/strong&gt;: Decisions about how the system handles logging, error handling, configuration, and other cross-cutting concerns should be explicit. These patterns become what the AI will replicate throughout implementation. Contradictions introduced later are harder to correct than conventions established early.&lt;/p&gt;

&lt;p&gt;See: &lt;em&gt;Principles → Designing for AI Comprehension&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  05-IMPLEMENTATION.md
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;05-IMPLEMENTATION.md&lt;/code&gt; breaks the work into phases.&lt;/p&gt;

&lt;p&gt;What is built first? What depends on what? What can safely be deferred?&lt;/p&gt;

&lt;p&gt;This document informs issue creation, but the backlog remains intentionally lean. Only a small number of high-level issues are created initially. Additional issues emerge organically as understanding deepens.&lt;/p&gt;

&lt;p&gt;Momentum is preserved by keeping the queue short.&lt;/p&gt;

&lt;h3&gt;
  
  
  06-TESTPLAN.md
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;06-TESTPLAN.md&lt;/code&gt; defines the testing strategy across all layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unit&lt;/li&gt;
&lt;li&gt;integration&lt;/li&gt;
&lt;li&gt;functional&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It clarifies what each layer is responsible for, what constitutes a contract, and what data is required to exercise the system meaningfully. It also specifies how test data will be generated or sourced.&lt;/p&gt;

&lt;p&gt;Tests are not written here - but the &lt;strong&gt;authority and scope of tests&lt;/strong&gt; is.&lt;/p&gt;

&lt;h3&gt;
  
  
  07-NextCycle.md
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;07-NextCycle.md&lt;/code&gt; is created during Phase 1 but &lt;strong&gt;intentionally left empty&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It exists to establish a forward-looking capture point for discoveries that cannot be known at design time. This document is populated &lt;strong&gt;only after a production release&lt;/strong&gt;, when real usage surfaces new expectations, implicit contracts, and architectural tensions.&lt;/p&gt;

&lt;p&gt;During &lt;strong&gt;Phase 4 (Production)&lt;/strong&gt;, findings from UAT are recorded here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;newly discovered behaviours users rely on&lt;/li&gt;
&lt;li&gt;candidate contracts not previously specified&lt;/li&gt;
&lt;li&gt;rejected expectations (explicitly documented)&lt;/li&gt;
&lt;li&gt;signals of architectural strain or drift&lt;/li&gt;
&lt;li&gt;inputs that may justify iteration or regeneration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No implementation occurs at this stage.&lt;br&gt;
&lt;code&gt;07-NextCycle.md&lt;/code&gt; records evidence and intent - not solutions.&lt;/p&gt;

&lt;p&gt;During the next SRDD cycle, this document becomes a &lt;strong&gt;primary input to Phase 1&lt;/strong&gt;, informing updates to requirements, use cases, and architecture. In regeneration cycles, it plays a critical role in re-establishing direction without losing historical context.&lt;/p&gt;

&lt;p&gt;This ensures that production learning is preserved deliberately rather than absorbed accidentally.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;07-NextCycle.md&lt;/code&gt; does not answer questions.&lt;br&gt;
It creates the conditions for better ones.&lt;/p&gt;

&lt;p&gt;When the next SRDD cycle begins, the AI and developer return to Phase 1 with sharper evidence, clearer tensions, and fewer assumptions carried forward by habit alone. Misunderstandings are corrected earlier. Trade-offs are re-examined explicitly. Intent is reasserted before code is touched again.&lt;/p&gt;

&lt;p&gt;The backlog stays intentionally lean.&lt;br&gt;
Understanding compounds instead of drifting.&lt;/p&gt;
&lt;h3&gt;
  
  
  Phase 2: Implementation
&lt;/h3&gt;

&lt;p&gt;Each issue in SRDD is implemented through a strict test-first loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;failing test ↔ implement → pass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not TDD as a ritual. It is TDD as a &lt;strong&gt;boundary-enforcement mechanism&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;SRDD does not use tests to maximise coverage or satisfy process doctrine. Tests exist to enforce boundaries: to make explicit what the system is committing to, and to protect those commitments as change occurs. They define where stability is mandatory and where evolution is permitted.&lt;/p&gt;

&lt;p&gt;TDD here is not about proving correctness in isolation. It is about &lt;strong&gt;protecting intent under change&lt;/strong&gt;. Writing tests first forces an explicit declaration of what is being guaranteed before implementation choices harden around it. Accidental commitments are prevented; deliberate ones are made visible.&lt;/p&gt;

&lt;p&gt;When a test fails, the question is never "How do we fix the test?"  It is "Did we violate a boundary, or did we intentionally choose to move it?"&lt;/p&gt;

&lt;p&gt;This reframes testing from verification to governance. The test suite becomes a living record of the system's contractual surface, enforcing discipline at the edges while leaving the interior free to evolve.&lt;/p&gt;

&lt;h4&gt;
  
  
  Contracts as the Source of Authority
&lt;/h4&gt;

&lt;p&gt;In SRDD, &lt;strong&gt;contracts are authoritative&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A contract is anything that external systems, users, or adjacent components depend on remaining stable unless explicitly versioned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public APIs (request/response shapes, error semantics)&lt;/li&gt;
&lt;li&gt;UI behaviours and interaction guarantees&lt;/li&gt;
&lt;li&gt;Domain events and their payloads&lt;/li&gt;
&lt;li&gt;Invariants (idempotency, ordering guarantees, security constraints)&lt;/li&gt;
&lt;li&gt;Observable side effects (persistence, notifications, integrations)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These contracts define &lt;em&gt;what must not change&lt;/em&gt;.&lt;br&gt;&lt;br&gt;
They are not informal expectations - they are &lt;strong&gt;deliberate commitments&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Tests as Executable Witnesses
&lt;/h4&gt;

&lt;p&gt;Tests are not the source of authority; they are its &lt;strong&gt;executable witnesses&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Each contract is encoded as one or more tests that demonstrate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What behaviour is guaranteed&lt;/li&gt;
&lt;li&gt;Under which conditions it holds&lt;/li&gt;
&lt;li&gt;What constitutes a breaking change&lt;/li&gt;
&lt;/ul&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Contracts define intent.&lt;br&gt;&lt;br&gt;
Tests prove that intent still holds.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If a test fails, SRDD assumes one of only two possibilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The implementation violated a contract
&lt;/li&gt;
&lt;li&gt;The contract itself must be deliberately changed (and versioned)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There is no third option.&lt;/p&gt;
&lt;h4&gt;
  
  
  When Contracts Change
&lt;/h4&gt;

&lt;p&gt;When contracts keep shifting, or each change exposes deeper misalignment, the system is telling you something: boundaries were drawn in the wrong place, responsibilities are unclear, or requirements were not understood well enough.&lt;/p&gt;

&lt;p&gt;The AI is responsible for capturing these signals as they occur. Each significant contract change - and its context - is logged immediately in &lt;code&gt;07-NextCycle.md&lt;/code&gt;. This is not a fix; it is evidence. The document accumulates observations: what changed, why, what it affected, and what tension it revealed.&lt;/p&gt;

&lt;p&gt;As signals accumulate, the AI periodically reviews the list. When the pattern becomes clear - repeated boundary violations, cascading impacts, foundational assumptions proving wrong - it advises regeneration:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"07-NextCycle.md now contains five significant contract changes in three weeks, three of which affected the same boundary. This suggests architectural misalignment. I recommend returning to Phase 1."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The developer makes the final call, but the recommendation is backed by documented evidence, not AI intuition. The decision to regenerate becomes traceable.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minor contract change&lt;/strong&gt; → new issue, normal flow&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Significant contract change&lt;/strong&gt; → new issue, log signal in 07-NextCycle.md&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accumulated signals show pattern&lt;/strong&gt; → AI advises regeneration, evidence already captured, return to Phase 1&lt;/li&gt;
&lt;/ul&gt;


  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F3-03_defining-roles-and-responsibilities.png" alt="4 different business roles and responsibilities shown" width="800" height="466"&gt;Define Roles &amp;amp; &lt;a href="https://www.pmcolumn.com/roles-and-responsibilities/" rel="noopener noreferrer"&gt;Responsibilities&lt;/a&gt;
  

&lt;h4&gt;
  
  
  Layered Tests, Distinct Responsibilities
&lt;/h4&gt;

&lt;p&gt;SRDD adopts the well-established practice of layered testing - not to duplicate coverage, but to assign &lt;strong&gt;jurisdiction&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Authority, in this context, means contractual weight - how strongly a test's failure signals a violated guarantee, and how much scrutiny is required before that test can be changed. High-authority tests encode promises the system makes to the outside world. Changing them is changing the contract. Low-authority tests are internal scaffolding - useful for development velocity, but disposable without consequence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unit tests&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validate local logic and edge cases&lt;/li&gt;
&lt;li&gt;Optimise developer velocity&lt;/li&gt;
&lt;li&gt;Free to change, split, or disappear&lt;/li&gt;
&lt;li&gt;Carry &lt;em&gt;no&lt;/em&gt; contractual authority&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Integration tests&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validate service boundaries and data flows&lt;/li&gt;
&lt;li&gt;Encode API behaviour, persistence semantics, and error handling&lt;/li&gt;
&lt;li&gt;Medium authority&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Functional / contract tests&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encode user-visible or system-visible guarantees&lt;/li&gt;
&lt;li&gt;Represent APIs, UI flows, events, and invariants&lt;/li&gt;
&lt;li&gt;Must not change without explicit intent&lt;/li&gt;
&lt;li&gt;Highest authority&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Internal structure - classes, modules, helpers, private methods - is intentionally &lt;em&gt;not&lt;/em&gt; protected by tests unless it expresses a contract.&lt;/p&gt;

&lt;p&gt;This is a feature, not a limitation.&lt;/p&gt;
&lt;h4&gt;
  
  
  Internal Freedom, External Stability
&lt;/h4&gt;

&lt;p&gt;This is standard software engineering - and SRDD respects it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Outside the contract:&lt;/strong&gt; stability is mandatory
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inside the boundary:&lt;/strong&gt; evolution is encouraged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Refactors, restructures, and architectural shifts are allowed - even expected - as long as contractual tests continue to pass.&lt;/p&gt;

&lt;p&gt;The principle resolves a long-standing tension in software design: private methods remain private, cohesion is preserved, and test suites do not calcify internal structure. Velocity is maintained without eroding guarantees.&lt;/p&gt;

&lt;p&gt;The system becomes &lt;strong&gt;stable where it must be&lt;/strong&gt;, and &lt;strong&gt;fluid where it can be&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;SRDD does not claim to invent this. It simply refuses to abandon it - even when AI-assisted velocity tempts teams to blur boundaries or lock down internals defensively.&lt;/p&gt;
&lt;h4&gt;
  
  
  The AI as Scope Guardian
&lt;/h4&gt;

&lt;p&gt;During implementation, the AI plays a non-negotiable role: &lt;strong&gt;scope guardian&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Its responsibilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preventing feature creep within an issue&lt;/li&gt;
&lt;li&gt;Detecting when a proposed change alters a contract&lt;/li&gt;
&lt;li&gt;Asking explicit questions when a boundary is crossed:
&amp;gt; "This change affects a public API. Should this be versioned?"&lt;/li&gt;
&lt;li&gt;Offering to create new issues for out-of-scope ideas&lt;/li&gt;
&lt;li&gt;Refusing to silently "just add one more thing"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These roles are not aspirational - they can be enforced today through rules files, test discipline, and review structure, with future tooling improving what these already provide.&lt;/p&gt;

&lt;p&gt;This matters because AI-assisted development &lt;strong&gt;amplifies opportunism&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When implementation becomes cheap, fast, and frictionless, the cost of &lt;em&gt;just adding one more thing&lt;/em&gt; collapses. Ideas that would normally be deferred - "while we're here", "it's only a small change", "we can tidy this up later" - are acted on immediately. The AI does not push back. It does not feel scope creep. It executes.&lt;/p&gt;

&lt;p&gt;Developers recognise this instinct instantly. A feature almost works, so you extend it slightly. A function is already open, so you add a parameter. A test is failing nearby, so you broaden its responsibility. None of these decisions are irrational in isolation. In aggregate, they erode boundaries.&lt;/p&gt;

&lt;p&gt;AI accelerates this dynamic. What used to take minutes now takes seconds. What once required intent now happens by momentum. The system drifts not because of negligence, but because the path of least resistance becomes irresistible.&lt;/p&gt;

&lt;p&gt;SRDD treats this not as a moral failing, but as a structural risk.&lt;/p&gt;

&lt;p&gt;By enforcing issue boundaries and making the AI explicitly responsible for guarding scope, SRDD introduces friction &lt;em&gt;where it matters most&lt;/em&gt;. The AI is required to ask: "Is this still the same commitment?" If not, it offers to create a new issue, defer the change, or force an explicit decision.&lt;/p&gt;

&lt;p&gt;This restores a discipline that velocity quietly erodes: the habit of choosing what &lt;em&gt;not&lt;/em&gt; to do next.&lt;/p&gt;

&lt;p&gt;SRDD deliberately counters that by enforcing discipline at the issue boundary.&lt;/p&gt;
&lt;h4&gt;
  
  
  The AI as Pattern Follower
&lt;/h4&gt;

&lt;p&gt;The AI has a second responsibility during implementation: &lt;strong&gt;following established patterns&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Canonical patterns - for logging, error handling, configuration, naming, and other cross-cutting concerns - are defined in &lt;code&gt;04-ARCHITECTURE.md&lt;/code&gt;. The AI should replicate these patterns, not invent alternatives.&lt;/p&gt;

&lt;p&gt;But the AI cannot reliably enforce its own adherence. Pattern conformance requires layered defence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Good examples in the codebase&lt;/strong&gt;: the AI pattern-matches on what exists&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rules files&lt;/strong&gt;: explicit instructions that shape generation (CLAUDE.md, .cursorrules, copilot-instructions.md, or whatever your tooling supports)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linters and static analysis&lt;/strong&gt;: automated rejection of non-conforming code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI checks&lt;/strong&gt;: build failures that prevent violations from merging&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human review in Phase 3&lt;/strong&gt;: coherence review catches what tooling misses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the AI deviates from an established pattern, &lt;strong&gt;correct it immediately&lt;/strong&gt;. Deviations that slip through become examples the AI will repeat. The codebase teaches by demonstration; every inconsistency introduced is an inconsistency that will propagate. The same applies to hallucinations and contrived solutions - an invented API that gets merged becomes a pattern the AI treats as real; a workaround that should have been questioned becomes the template for future workarounds.&lt;/p&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the project uses a specific logging approach, the AI uses that approach&lt;/li&gt;
&lt;li&gt;If error handling follows a defined structure, new errors follow the same structure&lt;/li&gt;
&lt;li&gt;If naming conventions exist, new code matches them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prefer explicit, well-named abstractions. &lt;code&gt;logAuditEvent()&lt;/code&gt; is better than &lt;code&gt;log()&lt;/code&gt;. &lt;code&gt;fetchUserById()&lt;/code&gt; is better than &lt;code&gt;getUser()&lt;/code&gt;. Names that reveal intent help both humans and AI understand what "right" looks like.&lt;/p&gt;

&lt;p&gt;Pattern deviation is not a moral failing - it is a signal. It may indicate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The AI lacks sufficient context (add to rules or provide examples)&lt;/li&gt;
&lt;li&gt;The established pattern is unclear (clarify in ARCHITECTURE.md)&lt;/li&gt;
&lt;li&gt;The guardrails are insufficient (add linter rules or CI checks)&lt;/li&gt;
&lt;li&gt;The pattern itself needs revision (make this explicit, not accidental)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See: &lt;em&gt;Principles → Designing for AI Comprehension&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Phase 3: Review
&lt;/h3&gt;

&lt;p&gt;Pull requests are not just a delivery mechanism in SRDD; they are a &lt;strong&gt;decision record&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every PR captures a moment where intent met reality. In many cases, it records trade-offs: alternatives that were considered or rejected, constraints that surfaced late, or shortcuts that were consciously tolerated. These decisions are often too contextual, too situational, or too nuanced to justify formal documentation at the time - but they matter later.&lt;/p&gt;

&lt;p&gt;In other cases, the PR is far more explicit. It may be the moment where a contract is defined, tightened, or deliberately changed. An API boundary is clarified. A behavioural guarantee is enforced through a new test. A breaking change is versioned rather than smuggled through. In these moments, the PR is not just descriptive - it is &lt;strong&gt;constitutive&lt;/strong&gt;. It establishes what the system now promises.&lt;/p&gt;

&lt;p&gt;Whether implicit or explicit, the PR marks the point at which uncertainty becomes commitment.&lt;/p&gt;

&lt;p&gt;PRs preserve this context implicitly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why a boundary was moved or reinforced&lt;/li&gt;
&lt;li&gt;Why a shortcut was accepted - or explicitly rejected&lt;/li&gt;
&lt;li&gt;Why an interface took its current shape&lt;/li&gt;
&lt;li&gt;Why a test defines a guarantee broadly rather than narrowly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The review conversation, commit history, and diff together form a lightweight narrative of how the system actually evolved - not how it was originally imagined.&lt;/p&gt;

&lt;p&gt;This history becomes critical during regeneration. When the AI synthesises a new spec from the living system, PRs provide the missing "why" that code alone cannot explain. They surface intent that was never formalised, constraints that were discovered late, and decisions that lived temporarily in human judgment.&lt;/p&gt;

&lt;p&gt;Without this trail, regeneration risks erasing hard-won knowledge. With it, SRDD can distinguish between accidental drift and deliberate adaptation.&lt;/p&gt;

&lt;p&gt;PRs do not just close issues.&lt;br&gt;
They preserve reasoning.&lt;/p&gt;

&lt;p&gt;That preservation is what allows understanding to compound rather than reset between cycles.&lt;/p&gt;
&lt;h4&gt;
  
  
  Review for Coherence, Not Just Correctness
&lt;/h4&gt;

&lt;p&gt;The AI can determine whether code works. That is not the reviewer's primary concern.&lt;/p&gt;

&lt;p&gt;The reviewer's responsibility is to assess whether the code &lt;strong&gt;fits&lt;/strong&gt; - whether it coheres with the system's architecture, follows established patterns, and avoids introducing long-term complexity.&lt;/p&gt;

&lt;p&gt;The AI can assist with this review. It can flag potential boundary violations, compare implementations against ARCHITECTURE.md patterns, identify naming inconsistencies, and detect changes to public APIs. Use the AI as a first pass.&lt;/p&gt;

&lt;p&gt;But the human reviewer holds final authority. Review for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architectural coherence&lt;/strong&gt;: Does this change respect existing boundaries? Does it introduce new dependencies that weren't discussed? The AI can flag these; the human decides if they're acceptable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pattern conformance&lt;/strong&gt;: Does the implementation follow canonical patterns, or has the AI introduced a variation? The AI can compare; the human judges whether deviation is drift or improvement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Naming and abstraction&lt;/strong&gt;: Are new functions, classes, and modules named in ways that reveal intent? The AI can check consistency; the human assesses whether names actually clarify.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contractual impact&lt;/strong&gt;: Does this change affect a public API, event, or guarantee? The AI can detect changes mechanically; the human decides if the change is intentional and appropriate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Correctness is necessary but insufficient. A PR can pass all tests - and all AI checks - and still degrade the system's coherence. The human reviewer is the last line of defence against pattern drift, and the only one who can say "this is correct but wrong."&lt;/p&gt;

&lt;p&gt;If the AI has deviated from an established pattern, this is the moment to catch it. Every deviation that merges becomes an example the AI will follow next time.&lt;/p&gt;

&lt;p&gt;See: &lt;em&gt;Principles → Designing for AI Comprehension&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Capturing Signals
&lt;/h4&gt;

&lt;p&gt;Review can surface two kinds of observations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blocking issues&lt;/strong&gt; are problems that must be resolved before the PR can merge. These are captured as PR review comments — not in &lt;code&gt;07-NextCycle.md&lt;/code&gt;. The PR returns to Phase 2 for revision, focused specifically on addressing the review feedback. Once resolved, it returns to Phase 3 for re-review. This is the standard review loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Phase 2 (Implement) → Phase 3 (Review) → Blocking issue found
                           ↓
                      PR comments
                           ↓
            Phase 2 (Revise) → Phase 3 (Re-review) → ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Non-blocking signals&lt;/strong&gt; are observations that don't prevent the PR from merging but inform future work. These are captured in &lt;code&gt;07-NextCycle.md&lt;/code&gt;. They are &lt;strong&gt;implementation signals&lt;/strong&gt; — patterns or tensions visible in the code that may not warrant immediate action but should influence future decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Patterns showing strain or becoming awkward&lt;/li&gt;
&lt;li&gt;Boundaries that feel wrong or artificially placed&lt;/li&gt;
&lt;li&gt;Dependencies heavier or more entangled than expected&lt;/li&gt;
&lt;li&gt;Modules that want to split or merge&lt;/li&gt;
&lt;li&gt;Abstractions that aren't earning their complexity&lt;/li&gt;
&lt;li&gt;Emerging candidates for refactoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These signals are distinct from the &lt;strong&gt;production signals&lt;/strong&gt; captured in Phase 4 (UAT). Implementation signals come from reading and reviewing code; production signals come from observing the system under real conditions. Both feed into regeneration decisions, but they represent different kinds of evidence.&lt;/p&gt;

&lt;p&gt;Not every PR generates signals. Many are clean implementations that fit well. But when something feels off — even if it doesn't block approval — capture it. The pattern may become clearer over time.&lt;/p&gt;

&lt;h4&gt;
  
  
  Continue or Advance?
&lt;/h4&gt;

&lt;p&gt;After each PR merges, the cycle either continues or advances:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More issues in the current cycle?&lt;/strong&gt;&lt;br&gt;
Return to Phase 2. Select the next issue from the backlog, implement, and return to Phase 3 for review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cycle complete?&lt;/strong&gt;&lt;br&gt;
Advance to Phase 4 (UAT). The implemented functionality is ready for validation against reality.&lt;/p&gt;

&lt;p&gt;What constitutes "cycle complete" depends on team workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Time-boxed (Agile sprint):&lt;/strong&gt; The sprint ends. Completed work advances to UAT; incomplete issues return to the backlog. Phase 4 aligns with Sprint Review.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scope-boxed (milestone):&lt;/strong&gt; A defined set of issues constitutes a coherent deliverable. When all are done, the milestone advances to UAT.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hybrid:&lt;/strong&gt; Core functionality must complete before advancing. Nice-to-have scope can carry over to the next cycle.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key criterion: &lt;em&gt;Is there enough implemented functionality to validate against reality?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;SRDD does not prescribe which model to use — that is an organisational choice. But the decision point must be explicit. Drifting into UAT without conscious commitment invites incomplete validation and blurred accountability.&lt;/p&gt;
&lt;h3&gt;
  
  
  Phase 4: UAT (Observe and Accumulate)
&lt;/h3&gt;

&lt;p&gt;UAT is where SRDD validates intent against reality.&lt;/p&gt;

&lt;p&gt;This phase is not treated as the end of development, but as the moment when assumptions are finally exposed to real conditions. The system is exercised using &lt;strong&gt;real data, real permissions, real workflows, and real constraints&lt;/strong&gt; - not sanitised environments optimised to pass automated checks.&lt;/p&gt;

&lt;p&gt;Automated tests have already established correctness. UAT exists to establish &lt;em&gt;fitness&lt;/em&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  A Deliberate Confrontation with Reality
&lt;/h4&gt;

&lt;p&gt;In SRDD, UAT is not a ceremonial sign-off. It is &lt;strong&gt;evidence gathering&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;UAT asks a different question from tests:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Does the system behave acceptably in the world it actually inhabits?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where qualitative judgment enters the loop. Performance may meet metrics but still feel slow. A workflow may be logically correct but cognitively awkward. An edge case may be rare but unacceptable. These are not failures of correctness; they are failures of fit.&lt;/p&gt;

&lt;p&gt;SRDD treats this feedback as first-class evidence - but &lt;strong&gt;does not act on it during this phase&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Accumulate, Don't Fix
&lt;/h4&gt;

&lt;p&gt;Every finding during UAT is captured in &lt;code&gt;07-NextCycle.md&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bugs and defects&lt;/li&gt;
&lt;li&gt;Minor issues and rough edges&lt;/li&gt;
&lt;li&gt;Implicit contracts discovered through use&lt;/li&gt;
&lt;li&gt;Architectural tensions revealed under real conditions&lt;/li&gt;
&lt;li&gt;Performance concerns&lt;/li&gt;
&lt;li&gt;User feedback and behavioural expectations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No fixes are made. No issues are created in the backlog. No code changes.&lt;/p&gt;

&lt;p&gt;This is deliberate. Phase 4 is observation. The decision about &lt;em&gt;what to do&lt;/em&gt; with these findings belongs to Phase 5.&lt;/p&gt;

&lt;p&gt;Each entry in &lt;code&gt;07-NextCycle.md&lt;/code&gt; captures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What was observed&lt;/li&gt;
&lt;li&gt;The context (user, workflow, data conditions)&lt;/li&gt;
&lt;li&gt;Whether it appears to be a bug, a missing contract, or an architectural signal&lt;/li&gt;
&lt;li&gt;Any relevant evidence (logs, screenshots, user quotes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The document accumulates throughout UAT. It becomes the input to triage.&lt;/p&gt;
&lt;h4&gt;
  
  
  Making Implicit Contracts Visible
&lt;/h4&gt;

&lt;p&gt;Crucially, UAT often reveals &lt;strong&gt;implicit contracts&lt;/strong&gt; - behaviours users depend on that were never formally encoded. These are not traditional bugs. They are expectations that emerged through use rather than design.&lt;/p&gt;

&lt;p&gt;The trigger is almost always human.&lt;/p&gt;

&lt;p&gt;A user, product owner, or developer notices a behaviour and says some version of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Oh - actually, I expect this to do &lt;em&gt;that&lt;/em&gt;."&lt;/li&gt;
&lt;li&gt;"If this ever changed, it would break how I use it."&lt;/li&gt;
&lt;li&gt;"We rely on this, even though it isn't documented."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SRDD treats these moments as signals, not interruptions.&lt;/p&gt;

&lt;p&gt;At that point, the AI's role is not to infer intent, but to &lt;strong&gt;force clarification&lt;/strong&gt;. It prompts a series of decisions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should this behaviour be guaranteed going forward?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If no, the rejection is captured deliberately in &lt;code&gt;07-NextCycle.md&lt;/code&gt;. The behaviour remains unsupported, and the system is free to change without preserving it. Future developers - and future AI sessions - will know the decision was conscious, not accidental.&lt;/p&gt;

&lt;p&gt;If yes, the AI captures it as a &lt;strong&gt;candidate contract&lt;/strong&gt; and clarifies its scope:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Context-specific or system-wide&lt;/strong&gt;: Does this guarantee apply everywhere, or only under certain conditions?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stable, versioned, or constrained&lt;/strong&gt;: Should it never change, change only with explicit versioning, or be bounded by specific limits?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These answers are recorded in &lt;code&gt;07-NextCycle.md&lt;/code&gt; alongside the candidate contract - not as a bug to fix now, but as a guarantee to formalize in a future cycle.&lt;/p&gt;

&lt;p&gt;In both cases, ambiguity is resolved consciously.&lt;br&gt;
Nothing remains implicit by accident.&lt;/p&gt;
&lt;h4&gt;
  
  
  UAT as Evidence
&lt;/h4&gt;

&lt;p&gt;UAT is therefore not a destination.&lt;br&gt;
It is a &lt;strong&gt;source of evidence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That evidence - accumulated in &lt;code&gt;07-NextCycle.md&lt;/code&gt; - feeds Phase 5, where the decision is made: iterate, regenerate, or release.&lt;/p&gt;
&lt;h3&gt;
  
  
  Phase 5: Triage and Decide
&lt;/h3&gt;

&lt;p&gt;Phase 5 is the decision point.&lt;/p&gt;

&lt;p&gt;After UAT, &lt;code&gt;07-NextCycle.md&lt;/code&gt; contains accumulated evidence: bugs, minor issues, implicit contracts, architectural signals, user feedback. Phase 5 analyzes this evidence and chooses the path forward.&lt;/p&gt;

&lt;p&gt;This is not a formality. It is where SRDD's discipline pays off.&lt;/p&gt;
&lt;h4&gt;
  
  
  Categorizing Findings
&lt;/h4&gt;

&lt;p&gt;The AI assists in categorizing accumulated findings:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bugs and defects&lt;/strong&gt;:&lt;br&gt;
The system does not behave as specified. Tests should have caught this but didn't, or the condition wasn't anticipated. These require fixes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minor issues and rough edges&lt;/strong&gt;:&lt;br&gt;
The system works but could be better. Performance improvements, UX polish, small enhancements. These are iterative refinements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Candidate contracts&lt;/strong&gt;:&lt;br&gt;
Implicit behaviours that users depend on, surfaced during UAT. These need to be formalized - either as guaranteed contracts or explicitly rejected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural signals&lt;/strong&gt;:&lt;br&gt;
Signs of deeper misalignment: repeated boundary violations, cascading changes, pattern drift, responsibilities in the wrong place. These suggest regeneration.&lt;/p&gt;
&lt;h4&gt;
  
  
  Watching for Spaghettification
&lt;/h4&gt;

&lt;p&gt;As findings are reviewed, the AI actively looks for signs that the system's structure is beginning to degrade - not because of negligence, but because accumulated change has outpaced architectural clarity.&lt;/p&gt;

&lt;p&gt;These signals are collectively referred to as &lt;strong&gt;spaghettification&lt;/strong&gt;, and they tend to surface gradually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Duplicated logic:&lt;/strong&gt; Similar behaviour implemented in multiple places with slight variations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Circular dependencies:&lt;/strong&gt; Components that cannot be reasoned about in isolation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whack-a-mole regressions:&lt;/strong&gt; Fixes in one area repeatedly break others&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;God modules:&lt;/strong&gt; Classes or services that accumulate disproportionate responsibility, violating the &lt;a href="https://en.wikipedia.org/wiki/Single-responsibility_principle" rel="noopener noreferrer"&gt;Single Responsibility Principle&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Velocity decay:&lt;/strong&gt; Simple changes take longer than expected&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hedging language:&lt;/strong&gt; Phrases like "this might break something" or "I'm not entirely sure"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pattern inconsistency:&lt;/strong&gt; The same concern (logging, error handling, configuration) implemented multiple ways across the codebase&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these indicate failure.&lt;br&gt;
They indicate &lt;strong&gt;misalignment between intent and structure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Pattern inconsistency deserves particular attention. When the AI encounters contradictory examples, it cannot determine which is "right." It pattern-matches on whatever is in context - which may not be the canonical approach. This creates a feedback loop: inconsistency breeds inconsistency, accelerating drift.&lt;/p&gt;
&lt;h4&gt;
  
  
  The Decision
&lt;/h4&gt;

&lt;p&gt;Based on the categorized findings and spaghettification signals, Phase 5 chooses one of three paths:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Phase 1 (Regenerate)&lt;/strong&gt;:&lt;br&gt;
Architectural or contractual issues require a return to design. The accumulated signals show misalignment that patching cannot fix. Regeneration synthesizes fresh specs from the living system, and development resumes from a clarified foundation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Phase 2 (Iterate)&lt;/strong&gt;:&lt;br&gt;
Bugs, minor issues, or candidate contracts need to be addressed before release. Issues are created from the relevant findings in &lt;code&gt;07-NextCycle.md&lt;/code&gt;, and development continues through the standard implementation cycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Phase 6 (Production)&lt;/strong&gt;:&lt;br&gt;
The system is ready to version and release. Findings are either minor enough to defer, or the accumulated evidence shows the system is fit for production. The decision moves to release.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ┌─────────────────────────┐
                    │      Phase 4: UAT       │
                    │   (Observe &amp;amp; Accumulate)│
                    └───────────┬─────────────┘
                                │
                                ▼
                    ┌─────────────────────────┐
                    │  Phase 5: Triage and    │
                    │        Decide           │
                    └───────────┬─────────────┘
                                │
            ┌───────────────────┼───────────────────┐
            │                   │                   │
            ▼                   ▼                   ▼
    ┌───────────────┐   ┌───────────────┐   ┌───────────────┐
    │   Phase 1:    │   │   Phase 2:    │   │   Phase 6:    │
    │  Regenerate   │   │   Iterate     │   │  Production   │
    │(architectural)│   │ (bugs/minor)  │   │               │
    └───────────────┘   └───────────────┘   └───────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Advising Regeneration
&lt;/h4&gt;

&lt;p&gt;When spaghettification signals accumulate, the AI does not attempt to quietly compensate with increasingly fragile fixes. Instead, it surfaces the pattern explicitly and advises regeneration.&lt;/p&gt;

&lt;p&gt;This is not an automated action. It is a recommendation.&lt;/p&gt;

&lt;p&gt;The AI explains what it is observing, why incremental change is becoming costly, and which parts of the system appear most affected. The decision to regenerate remains human.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"07-NextCycle.md contains five significant contract changes in three weeks, three of which affected the same boundary. Combined with the pattern drift in error handling and the circular dependency introduced last sprint, this suggests architectural misalignment. I recommend returning to Phase 1."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Regeneration is chosen when the cost of continued patching exceeds the cost of reorientation.&lt;/p&gt;

&lt;p&gt;That choice is never trivial.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Cost and Return of Regeneration
&lt;/h4&gt;

&lt;p&gt;Regeneration is not cheap.&lt;/p&gt;

&lt;p&gt;Depending on the size of the system, how long it has evolved since the last regeneration, and how far it has drifted from its original expectations, returning to feature parity can take days - sometimes weeks. That time is real cost. SRDD does not pretend otherwise.&lt;/p&gt;

&lt;p&gt;What it offers in return is clarity.&lt;/p&gt;

&lt;p&gt;The regenerated system is clean. Architectural intent is explicit again. Implicit requirements surfaced during UAT are captured as contracts and tests. Technical debt is no longer woven invisibly through the codebase; it is either resolved or consciously accepted.&lt;/p&gt;

&lt;p&gt;Most importantly, velocity returns - and with it, confidence. Development after regeneration is faster, more predictable, and more satisfying. Changes no longer feel precarious. The system can once again be reasoned about as a whole.&lt;/p&gt;

&lt;p&gt;For users, this translates into something tangible: &lt;strong&gt;continuous improvement without instability&lt;/strong&gt;. Features ship rapidly. Bugs are fixed promptly. The system evolves visibly - yet it remains reliable. Users experience a product that gets better without breaking, that responds to feedback without regressing. This is only possible when the team behind it can move quickly &lt;em&gt;with&lt;/em&gt; confidence, not despite its absence.&lt;/p&gt;

&lt;p&gt;SRDD makes that sustainable.&lt;/p&gt;

&lt;p&gt;The mechanics of regeneration - what the AI synthesizes and what it produces - are covered in detail in the following section: &lt;em&gt;The Regeneration Cycle&lt;/em&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Alternative
&lt;/h4&gt;

&lt;p&gt;In large, long-lived systems - especially those built by many developers over time - architectural drift is rarely confronted head-on. Instead, it is managed defensively. Code becomes brittle. Knowledge fragments. Boundaries blur. Entire areas of the system acquire reputations: &lt;em&gt;"Don't touch that,"&lt;/em&gt; &lt;em&gt;"No one really knows how this works,"&lt;/em&gt; &lt;em&gt;"It breaks if you look at it wrong."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Organisations attempt to compensate through process.&lt;/p&gt;

&lt;p&gt;The only reliable way to prevent collapse in such systems is an increasingly onerous emphasis on exhaustive testing. Every change must be defended by more tests. Every edge case must be locked down. This is rational - but expensive.&lt;/p&gt;

&lt;p&gt;Writing tests by hand is time-consuming, repetitive, and cognitively draining. It is rarely the work developers are motivated by, and often the first thing deferred under pressure. Over time, test suites grow unevenly: critical paths are over-tested, obscure behaviours remain implicit, and large areas of the codebase exist in a grey zone of partial coverage and collective anxiety.&lt;/p&gt;

&lt;p&gt;The result is stagnation.&lt;/p&gt;

&lt;p&gt;Code that developers are uncertain about is not improved. It is avoided. Bugs persist not because they are unsolvable, but because touching the surrounding code feels too risky. Architectural debt compounds quietly, protected by fear rather than intention. Velocity slows - not because the team lacks skill, but because confidence has eroded.&lt;/p&gt;

&lt;p&gt;SRDD offers a different trade.&lt;/p&gt;

&lt;p&gt;Rather than relying on ever-expanding defensive test suites to prop up brittle structure, SRDD periodically restores architectural clarity through regeneration. Tests remain essential - but they defend &lt;em&gt;contracts&lt;/em&gt;, not accumulated uncertainty. The system is made comprehensible again, not merely survivable.&lt;/p&gt;

&lt;p&gt;This is why regeneration, despite its cost, is often cheaper than the alternative.&lt;/p&gt;

&lt;p&gt;A week of deliberate reorientation can replace months of hesitant change. A system that can be reasoned about invites improvement. A system that cannot eventually resists it.&lt;/p&gt;

&lt;p&gt;SRDD does not promise perpetual cleanliness.&lt;br&gt;
It promises the ability to &lt;strong&gt;recover it&lt;/strong&gt;, intentionally and repeatedly, before brittleness becomes destiny.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Works
&lt;/h4&gt;

&lt;p&gt;SRDD does not treat architectural decay as a moral failing or a crisis. It treats it as a natural consequence of sustained progress - especially in systems that grow through real use, changing requirements, and multiple contributors.&lt;/p&gt;

&lt;p&gt;By making regeneration an expected and supported move - rather than an admission of defeat - SRDD removes the stigma that causes teams to avoid structural correction. Refactoring stops being a desperate rescue operation performed under pressure and becomes a deliberate design activity undertaken with intent.&lt;/p&gt;

&lt;p&gt;Iteration grows the system.&lt;br&gt;
Regeneration realigns it.&lt;/p&gt;

&lt;p&gt;Together, they prevent the slow hardening that turns living systems brittle. Boundaries remain intelligible. Confidence is preserved. Change remains possible even as systems scale in size, age, and ambition.&lt;/p&gt;

&lt;p&gt;And perhaps most importantly, SRDD preserves the role of the developer.&lt;/p&gt;

&lt;p&gt;As AI reshapes employment models and commoditises large portions of implementation work, developers remain valuable not because they type code, but because they &lt;strong&gt;invent, imagine, and choose direction&lt;/strong&gt;. SRDD deliberately assigns mechanical execution to machines and reserves judgment, taste, and intent for humans. Developers are no longer paid to wrestle brittle systems or memorise tribal knowledge - they are paid to design futures, recognise when something feels wrong, and steer systems toward what they should become next.&lt;/p&gt;

&lt;p&gt;In a world where AI can generate endlessly, SRDD ensures that humans still decide &lt;em&gt;why&lt;/em&gt;, &lt;em&gt;where&lt;/em&gt;, and &lt;em&gt;whether&lt;/em&gt;.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F3-04_The-regeneration-cycle-as-a-cascade-of-ecological-processes-and-their-success-and-failure.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F3-04_The-regeneration-cycle-as-a-cascade-of-ecological-processes-and-their-success-and-failure.png" alt="Diagram showing regeneration cycle in plants'" width="800" height="721"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.researchgate.net/publication/281813304_Developing_restoration_strategies_for_temperate_forests_using_natural_regeneration_processes" rel="noopener noreferrer"&gt;Regeration cycle&lt;/a&gt; in plants
  &lt;/p&gt;

&lt;h2&gt;
  
  
  The Regeneration Cycle
&lt;/h2&gt;

&lt;p&gt;This is the roundtrip.&lt;/p&gt;

&lt;p&gt;Regeneration is the moment where SRDD closes the loop between intent and reality - not by rewinding time, but by &lt;strong&gt;rebuilding understanding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is a deliberate return to Phase 1, informed by everything that has been learned, and undertaken with full awareness of its cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the AI Synthesizes
&lt;/h3&gt;

&lt;p&gt;The AI re-synthesises a coherent picture of the system from multiple sources of truth:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;current codebase&lt;/strong&gt; (what actually exists)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;prior planning documents&lt;/strong&gt; (what was intended at different points in time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;git history&lt;/strong&gt; (how and when the system changed)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;issues and tickets&lt;/strong&gt; (what was discovered under pressure)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pull requests&lt;/strong&gt; (why decisions were made)&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;test suite&lt;/strong&gt; (what is contractually protected)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;07-NextCycle.md&lt;/strong&gt; (accumulated signals, candidate contracts, and version history)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these sources is treated as authoritative in isolation. Each is partial, biased, and incomplete. Together, they form a layered record of how the system became what it is.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the AI Produces
&lt;/h3&gt;

&lt;p&gt;From this synthesis, the AI produces a &lt;strong&gt;new, dated planning directory&lt;/strong&gt; - a refreshed set of artefacts that describe the system as it now stands, not as it was once imagined. This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an updated model of the system's boundaries and responsibilities&lt;/li&gt;
&lt;li&gt;an explicit account of preserved contracts&lt;/li&gt;
&lt;li&gt;identified areas of architectural drift&lt;/li&gt;
&lt;li&gt;accumulated technical debt, surfaced rather than rationalised&lt;/li&gt;
&lt;li&gt;open questions and tensions that were previously implicit&lt;/li&gt;
&lt;li&gt;what should be built next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a rollback.&lt;br&gt;
It is a reset of understanding - and a re-assertion of direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Holistic Diagnosis, Selective Intervention
&lt;/h3&gt;

&lt;p&gt;A critical refinement of SRDD is that regeneration is &lt;strong&gt;holistic in diagnosis, selective in intervention&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The entire system is re-understood end-to-end. Dependencies are traced. Assumptions are re-examined. Interfaces are re-evaluated in light of real usage. Nothing is excluded from analysis.&lt;/p&gt;

&lt;p&gt;But redesign is not applied indiscriminately.&lt;/p&gt;

&lt;p&gt;Only subsystems that exhibit clear signs of drift - structural incoherence, brittle contracts, runaway complexity, or mismatched responsibilities - are candidates for redesign. Components that remain cohesive, well-bounded, and stable are &lt;strong&gt;explicitly left alone&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This matters.&lt;/p&gt;

&lt;p&gt;Blanket rewrites destroy trust, erase hard-won learning, and reset momentum. SRDD avoids that trap by making &lt;em&gt;non-intervention&lt;/em&gt; an explicit decision, not an accident. Stability is preserved where it has been earned.&lt;/p&gt;

&lt;h3&gt;
  
  
  Compounding Understanding
&lt;/h3&gt;

&lt;p&gt;The outcome of regeneration is not just cleaner code.&lt;/p&gt;

&lt;p&gt;It is &lt;strong&gt;compounded understanding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Each regeneration captures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;why certain structures survived&lt;/li&gt;
&lt;li&gt;why others failed&lt;/li&gt;
&lt;li&gt;what trade-offs were real versus imagined&lt;/li&gt;
&lt;li&gt;which constraints were fundamental and which were provisional&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That understanding is externalised into artefacts that future humans - and future AI sessions - can reason from. Knowledge stops evaporating when developers leave, teams change, or time passes.&lt;/p&gt;

&lt;p&gt;Instead of entropy winning by default, insight accumulates.&lt;/p&gt;

&lt;p&gt;Iteration grows the system. Regeneration realigns it.&lt;/p&gt;

&lt;p&gt;That is the roundtrip - and it is why SRDD scales not just across codebases, but across years.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F06.WhichWay.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F06.WhichWay.png" alt="Simple text image asking 'where to next..'" width="225" height="225"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.facebook.com/andsowheretonext/" rel="noopener noreferrer"&gt;where to next&lt;/a&gt;
  &lt;/p&gt;

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

&lt;p&gt;The workflow is the engine. But SRDD doesn't stop at single projects.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Part 4&lt;/strong&gt;, I cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How SRDD scales to multi-domain systems through &lt;strong&gt;Scaled SRDD (SSRDD)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The principles that underpin the methodology&lt;/li&gt;
&lt;li&gt;The current state of implementation - what works today&lt;/li&gt;
&lt;li&gt;The roadmap ahead - alignment with Agile and SAFe, rules file templates, and MCP server integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Continue to Part 4:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-4-of-4-scaling-up-ssrdd-principles-and-implementation-1ojb"&gt;Scaling Up: SSRDD, Principles, and Implementation&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or return to earlier parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe"&gt;Part 1: Why SRDD Exists&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4"&gt;Part 2: The AI Coding Landscape&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3"&gt;Part 3: The SRDD Workflow&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;© 2026 Brooke Smith. All rights reserved.&lt;/p&gt;

&lt;p&gt;This document constitutes a public disclosure and defensive publication of the&lt;br&gt;
Spec-Roundtrip Driven Development (SRDD) and Scaled SRDD (SSRDD) methodologies.&lt;/p&gt;

&lt;p&gt;The author expressly places the concepts, processes, and workflows described&lt;br&gt;
herein into the public domain as prior art, for the purpose of preventing&lt;br&gt;
subsequent patent claims or exclusive ownership by third parties.&lt;/p&gt;

&lt;p&gt;Commercial use, redistribution, or derivative works of this text require&lt;br&gt;
explicit permission from the author.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
    <item>
      <title>SRDD (Part 2 of 4) - The AI Coding Landscape</title>
      <dc:creator>Brooke</dc:creator>
      <pubDate>Tue, 06 Jan 2026 23:35:17 +0000</pubDate>
      <link>https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4</link>
      <guid>https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4</guid>
      <description>&lt;h1&gt;
  
  
  SRDD (Part 2 of 4): The AI Coding Landscape
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;← Back to &lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD entry page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is Part 2 of a four-part series on Spec-Roundtrip Driven Development.&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe"&gt;Read Part 1: Why SRDD Exists&lt;/a&gt;&lt;/strong&gt;&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-01.TeachAndLearnWGenAI.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-01.TeachAndLearnWGenAI.jpg" alt="Brain fused on to a circuit board" width="800" height="324"&gt;&lt;/a&gt;&lt;br&gt;Teaching and learning with &lt;a href="https://www.ohio.edu/center-teaching-learning/teaching-learning-genai" rel="noopener noreferrer"&gt;GenAI&lt;/a&gt; (Ohio University)
  &lt;/p&gt;

&lt;p&gt;By mid-2025, it became clear that "AI coding" was no longer a single thing.&lt;/p&gt;

&lt;p&gt;What began as playful experimentation had hardened into recognisable methodologies, each optimising for different trade-offs: speed versus coherence, autonomy versus understanding, structure versus adaptability.&lt;/p&gt;

&lt;p&gt;There are now multiple serious approaches to AI-assisted development. This article breaks down the four most widely adopted - vibe coding, agentic coding, context engineering, and spec-driven development - examining where each shines, where each breaks, and how &lt;strong&gt;Spec-Roundtrip Driven Development (SRDD)&lt;/strong&gt; (and its multi-domain extension, &lt;strong&gt;Scaled SRDD (SSRDD)&lt;/strong&gt;) positions itself relative to them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why SRDD
&lt;/h3&gt;

&lt;p&gt;SRDD draws from the strengths of each approach while addressing their predictable failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From &lt;strong&gt;vibe coding&lt;/strong&gt;: rapid iteration, low ceremony, fast feedback&lt;/li&gt;
&lt;li&gt;From &lt;strong&gt;agentic coding&lt;/strong&gt;: goal-driven autonomy, multi-step task execution&lt;/li&gt;
&lt;li&gt;From &lt;strong&gt;context engineering&lt;/strong&gt;: disciplined curation of what the AI sees&lt;/li&gt;
&lt;li&gt;From &lt;strong&gt;spec-driven development&lt;/strong&gt;: architectural intentionality, explicit contracts, structured documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What distinguishes SRDD from all of these is the &lt;strong&gt;roundtrip&lt;/strong&gt;: planned regeneration cycles that synthesise fresh specs from living code. Specifications are treated as snapshots, not contracts. Code evolves. Understanding must be periodically extracted back out - not as a rescue operation, but as a normal phase in the system's lifecycle.&lt;/p&gt;

&lt;p&gt;This is what every senior developer has quietly wished for. They watch codebases grow over time - clean architecture slowly compromised, elegant patterns eroded by expedient fixes, boundaries blurred by "just this once" shortcuts. They hesitate before every change, unsure what's tested and what isn't, wondering what else might break. The industry calls it technical debt, but that term sanitises what it actually feels like: the slow death of coherence. Every experienced developer has stared at a system they once understood and thought, "If only I could burn this down and rebuild it properly - keeping everything we learned, but losing the accumulated mess." SRDD makes that possible. Regeneration is not fantasy; it is methodology.&lt;/p&gt;

&lt;p&gt;Our time has come. The tooling finally exists. The AI can analyse, synthesise, and rebuild at speeds that make regeneration practical rather than aspirational. What was once a daydream - "start fresh, but keep the wisdom" - is now a workflow. We call it Spec-Roundtrip Driven Development.&lt;/p&gt;

&lt;p&gt;For larger systems composed of independently developed subsystems, &lt;strong&gt;SSRDD&lt;/strong&gt; wraps multiple SRDD instances with a coordination layer. Each subsystem runs its own SRDD cycle - its own planning docs, its own backlog, its own regeneration rhythm. SSRDD governs the boundaries between them: system-wide integration standards (CONSTITUTION.md), explicit API contracts, and dependency declarations that make cross-system coupling visible and intentional. The subsystems evolve independently; SSRDD ensures they integrate coherently.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-02.WhenToUse.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-02.WhenToUse.png" alt="Person holding chopsticks as demonstration of their use" width="742" height="532"&gt;&lt;/a&gt;&lt;br&gt;When to use (&lt;a href="https://livejapan.com/en/article-a0000335/" rel="noopener noreferrer"&gt;chopsticks&lt;/a&gt;)
  &lt;/p&gt;

&lt;h3&gt;
  
  
  When to Use SRDD / SSRDD
&lt;/h3&gt;

&lt;p&gt;SRDD is a generalist approach. It suits most projects that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Outlive a single coding session&lt;/li&gt;
&lt;li&gt;Involve multiple services, files, or contributors&lt;/li&gt;
&lt;li&gt;Need to remain maintainable over time&lt;/li&gt;
&lt;li&gt;Require production validation and iterative refinement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SSRDD is appropriate when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple domains or bounded contexts must integrate&lt;/li&gt;
&lt;li&gt;Teams need to evolve APIs without breaking consumers&lt;/li&gt;
&lt;li&gt;Cross-domain dependencies must be explicit and versioned&lt;/li&gt;
&lt;li&gt;System-wide standards (authentication, error formats, events) must be enforced&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I argue SRDD produces better outcomes than the alternatives for the majority of real-world development - with a few exceptions. Vibe coding remains superior for throwaway scripts and utilities that fit in a single context window. Spec-driven development may suit highly regulated environments where formal traceability is mandated. Context engineering offers value in brownfield systems where you're not trying to improve the architecture - just survive it. Surgical fixes, minimal blast radius, brownfield in, brownfield out.&lt;/p&gt;

&lt;p&gt;For everything else - single projects through to multi-domain systems - SRDD and SSRDD provide the better balance.&lt;/p&gt;

&lt;p&gt;What follows is a breakdown of each approach - its strengths, its limitations, and where it predictably breaks down.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-03.cracked-beam-300x171.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-03.cracked-beam-300x171.png" alt="Representation of failed (cracked) beam" width="300" height="171"&gt;&lt;/a&gt;&lt;br&gt;Failure modes (&lt;a href="https://feaforall.com/failure-modes/" rel="noopener noreferrer"&gt;of structural beams&lt;/a&gt;)
  &lt;/p&gt;

&lt;h3&gt;
  
  
  The Common Failure Pattern
&lt;/h3&gt;

&lt;p&gt;Although these approaches look different on the surface, they fail in remarkably similar ways.&lt;/p&gt;

&lt;p&gt;Across modern AI-assisted development, three failure modes recur - regardless of tooling, workflow, or ideology:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context loss&lt;/strong&gt;: as systems grow beyond what fits inside a single &lt;em&gt;context window&lt;/em&gt;, earlier decisions, trade-offs, and assumptions don’t fail loudly; they simply slip out of view. The AI continues to reason fluently, but no longer conditions on the full history of intent. Nothing announces the loss. Larger context windows may delay it, but often only extend the illusion of coherence - pushing regressions further from their cause. What emerges is the familiar whack-a-mole loop: fixes land, tests pass, and new issues surface elsewhere, not because the model is “bad,” but because architectural memory was never externalised in the first place. The system forgets selectively, locally, and invisibly - until coherence degrades not through error, but through omission, and that loss compounds quietly over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;False confidence&lt;/strong&gt;: the most dangerous failure mode in AI-assisted development - arises when systems continue to signal success after understanding has quietly fallen out of scope. It is not caused by recklessness, nor by poor intentions, nor even by faulty models. It emerges when the mechanisms that normally bind progress to comprehension are no longer required for work to continue.&lt;/p&gt;

&lt;p&gt;In traditional development, forward motion is constrained by friction. Humans must understand enough to proceed: to reason about changes, to predict consequences, to explain intent to others. Difficulty acts as a forcing function. When understanding erodes, progress naturally slows.&lt;/p&gt;

&lt;p&gt;AI-assisted workflows weaken that coupling.&lt;/p&gt;

&lt;p&gt;As context windows truncate history, earlier decisions and assumptions stop influencing new work. Yet the system does not stall. Output remains fluent. Tasks complete. Tests pass. Builds stay green. The visible signals that teams have learned to associate with correctness and safety continue to fire - even as the underlying model of the system becomes partial, fragmented, or obsolete.&lt;/p&gt;

&lt;p&gt;This is the critical shift: &lt;strong&gt;progress no longer requires comprehension&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once that threshold is crossed, confidence becomes structurally unjustified. Work proceeds smoothly not because the system is healthy, but because nothing is demanding that its health be re-established. Risk does not disappear; it becomes latent. Security flaws, architectural shortcuts, duplicated logic, and violated invariants accumulate quietly, masked by the same signals that normally indicate success.&lt;/p&gt;

&lt;p&gt;False confidence is reinforced, not self-correcting. Each locally successful change affirms the belief that things are under control. In autonomous or semi-autonomous workflows, this reinforcement accelerates: agents optimise relentlessly for observable success criteria - task completion, test results, pipeline status - and echo existing patterns outward. What “works” is repeated. What is unexamined is entrenched.&lt;/p&gt;

&lt;p&gt;Crucially, this is not a moral failure and not an AI-specific flaw. Humans fall into the same trap whenever indicators outlive the conditions that once made them meaningful. The danger lies in mistaking fluency for understanding, motion for direction, and the absence of alarms for the presence of safety.&lt;/p&gt;

&lt;p&gt;False confidence therefore fails &lt;em&gt;late&lt;/em&gt; and &lt;em&gt;discontinuously&lt;/em&gt;. Systems appear stable until they are not. Recovery is expensive because the past cannot be reliably reconstructed: intent was never made durable, assumptions were never externalised, and the system evolved faster than understanding could be maintained.&lt;/p&gt;

&lt;p&gt;This failure mode is not universal. Methodologies that impose formalism - explicit specifications, enforced contracts, curated context, or audited intent - resist false confidence by design. They reintroduce friction. They slow progress deliberately. They force understanding to be declared, reviewed, or regenerated before work can continue.&lt;/p&gt;

&lt;p&gt;Where such mechanisms are absent, false confidence is not an edge case. It is the default outcome of success without comprehension.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural drift&lt;/strong&gt;: once progress continues without comprehension, architectural decisions cease to be deliberate. Structure emerges implicitly from local fixes, which accumulate into global incoherence without ever triggering a clear failure.&lt;/p&gt;

&lt;p&gt;The failure pattern above becomes visible earliest and most vividly in low-friction workflows. When progress is cheap and success signals are abundant, context loss, false confidence, and architectural drift surface quickly. Vibe coding sits at that boundary, where the strengths of AI assistance are maximised - and so are its risks.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-04.goodVibes.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-04.goodVibes.png" alt="Tie dye writing of 'good vibes only'" width="372" height="547"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.redbubble.com/i/sticker/Good-vibes-only-tie-dye-by-cedoughert" rel="noopener noreferrer"&gt;Good vibes&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  1. Vibe Coding
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What it is
&lt;/h3&gt;

&lt;p&gt;Vibe coding is the casual extreme of AI-assisted development. You prompt the AI conversationally:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Add this feature.”&lt;br&gt;
“Fix that bug.”&lt;br&gt;
“Refactor this file.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It feels magical when it works - and for small projects, it often does. But the moment architectural memory matters, it starts to unravel. Context windows are finite. As systems grow, the AI forgets earlier decisions, repeats mistakes, and implements the same concern three different ways across three different files.&lt;/p&gt;

&lt;p&gt;Worse, it creates a false sense of confidence: everything appears to work, until it suddenly doesn’t.&lt;/p&gt;

&lt;p&gt;Vibe coding shines for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;small utilities&lt;/li&gt;
&lt;li&gt;scripts and CLIs&lt;/li&gt;
&lt;li&gt;projects that comfortably fit in a single context window&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It breaks the moment continuity and system-level understanding are required.&lt;/p&gt;

&lt;h3&gt;
  
  
  The process
&lt;/h3&gt;

&lt;p&gt;Vibe coding is intentionally fluid and conversational. There is no formal specification, no curated context, and minimal concern for internal structure.&lt;/p&gt;

&lt;p&gt;The loop usually looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Describe the intent, not the implementation (“Make this feel slick”).&lt;/li&gt;
&lt;li&gt;Accept large AI-generated changes wholesale.&lt;/li&gt;
&lt;li&gt;React to outcomes rather than internals.&lt;/li&gt;
&lt;li&gt;Pivot instead of debugging.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You are trading &lt;em&gt;structural integrity&lt;/em&gt; for &lt;em&gt;momentum&lt;/em&gt;. The code is treated as an opaque byproduct, not an artefact to be understood.&lt;/p&gt;

&lt;h3&gt;
  
  
  The pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extreme velocity&lt;/strong&gt;:&lt;br&gt;
Vibe coding collapses idea → code → output into a single conversational loop. Syntax, plumbing, and boilerplate effectively disappear. Feedback becomes immediate, enabling you to explore functionality in minutes rather than days. For small, self-contained problems, this speed is genuinely transformative.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Low-friction creativity&lt;/strong&gt;:&lt;br&gt;
Because you’re not fighting tooling, frameworks, or process, you remain in a high-level creative flow. This makes vibe coding especially effective for UI exploration, proof-of-concepts, demos, and early-stage experimentation - situations where discovering &lt;em&gt;what&lt;/em&gt; to build matters more than how it is structured.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Drudgery elimination&lt;/strong&gt;:&lt;br&gt;
Routine engineering work is overrepresented in model training data. CRUD endpoints, form handling, configuration scaffolding, and common integrations are produced quickly and competently. The AI absorbs the repetitive cognitive load, allowing humans to spend time on differentiation, design intent, and problem framing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Democratisation&lt;/strong&gt;:&lt;br&gt;
Vibe coding lowers the barrier to creation. Designers, founders, and product managers can produce working artefacts without deep technical fluency. When used responsibly, this improves cross-disciplinary communication, reduces translation loss, and allows ideas to be tested in code rather than debated in abstraction.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vibe coding is unbeatable for &lt;strong&gt;0 → 1&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The cons
&lt;/h3&gt;

&lt;p&gt;This is the first place where the common failure pattern becomes visible in full. Vibe coding does not merely suffer from context loss; it actively cultivates &lt;strong&gt;false confidence&lt;/strong&gt;. Progress continues smoothly, outputs look correct, and nothing demands that understanding be re-established before work proceeds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The complexity ceiling&lt;/strong&gt;:&lt;br&gt;
This is the same context loss described earlier. As work exceeds a single context window, assumptions fall out of scope without warning. Coherence degrades quietly, and fixes begin to chase symptoms rather than intent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Invisible technical debt&lt;/strong&gt;:&lt;br&gt;
In vibe coding, debt does not accumulate because developers are careless - it accumulates because the system provides no reason to look. Output remains fluent, changes land cleanly, and nothing signals that architectural intent has slipped out of view. &lt;/p&gt;

&lt;p&gt;Code is generated in fragments, accepted opportunistically, and rarely revisited with architectural intent. Because there is no externalised model of the system, duplication, leaky abstractions, and accidental coupling emerge gradually and silently. The system appears to move quickly right up until it doesn’t - at which point the cost is no longer incremental. Refactors become risky, fixes cascade unpredictably, and the only visible option is wholesale rewrite. Debt was always present; it was simply never surfaced early enough to be managed deliberately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security and correctness risks&lt;/strong&gt;:&lt;br&gt;
False confidence is especially dangerous here, because plausibility and correctness are easily confused.&lt;/p&gt;

&lt;p&gt;Large language models optimise for plausibility, not for adversarial safety, invariants, or edge-case integrity. In a vibe-coding loop, there is rarely a formal declaration of what &lt;em&gt;must not&lt;/em&gt; happen - only an informal sense of what “seems right.” This leads to insecure defaults (over-permissive access, missing validation, unsafe deserialisation), fragile assumptions (happy-path logic treated as universal), and correctness gaps that surface only under load or abuse.&lt;/p&gt;

&lt;p&gt;Critically, recognising these failures requires professional experience. Security flaws are often invisible to non-specialists, and correctness bugs frequently masquerade as acceptable behaviour until they are exploited or stressed. Vibe coding lowers the barrier to entry so far that individuals with little or no background in security, systems design, or failure analysis can ship applications used by millions - without understanding the risks they have encoded. The danger is not malice; it is invisibility. Problems are present from day one, but only become obvious to those trained to look for them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auditor fatigue&lt;/strong&gt;:&lt;br&gt;
Reviewing AI-generated code is not equivalent to reviewing human-written code. Humans compress intent when they write; AI expands it. The result is large volumes of syntactically correct but semantically diffuse output. Developers are forced to read more code, hold more state in their heads, and infer intent that was never explicitly declared. Over time, this leads to a subtle but dangerous shift: reviews become superficial, approvals become habitual, and “looks fine” becomes a substitute for understanding. Teams stop building systems and start rubber-stamping artefacts they did not truly author.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-reproducibility&lt;/strong&gt;:&lt;br&gt;
As long as things appear to work, this instability remains hidden.&lt;/p&gt;

&lt;p&gt;Without specifications, structured context, or stable contracts, vibe coding is inherently non-deterministic. The same prompt, run days or weeks apart, may yield different abstractions, naming schemes, or architectural decisions - not because requirements changed, but because the statistical path through the model did, whether due to context sensitivity, probabilistic sampling (including temperature), or a later model update. This fragility undermines collaboration: teammates cannot reliably reproduce or extend work, onboarding becomes archaeology, and long-term maintenance turns into guesswork. The system’s shape becomes an accident of timing rather than a consequence of intent.&lt;/p&gt;

&lt;p&gt;Vibe coding is exhilarating - until you have to live with what you shipped.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bottom line
&lt;/h3&gt;

&lt;p&gt;Vibe coding is the ultimate &lt;strong&gt;0 → 1 tool&lt;/strong&gt;. It becomes dangerous the moment a system needs to be maintained, reasoned about, or trusted.&lt;/p&gt;

&lt;p&gt;Most experienced developers now use it &lt;em&gt;selectively&lt;/em&gt;: to explore ideas quickly - and then transition to something more disciplined once the idea is worth keeping.&lt;/p&gt;

&lt;h3&gt;
  
  
  SRDD Comparison
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Where SRDD meets vibe coding&lt;/strong&gt;:&lt;br&gt;
SRDD preserves the rapid iteration that makes vibe coding effective. Within an issue, the developer and AI move quickly - TDD loops are tight, feedback is immediate, and the AI handles boilerplate, tests, and routine implementation. The conversational fluidity isn't lost; it's bounded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where SRDD goes beyond&lt;/strong&gt;:&lt;br&gt;
SRDD externalises what vibe coding keeps implicit. Architectural intent is captured in planning docs. Contracts make guarantees explicit. The scope guardian prevents the opportunistic drift that accumulates into chaos. Most critically, regeneration cycles mean the complexity ceiling isn't a dead end - it's a trigger for deliberate realignment. Understanding compounds instead of decaying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where vibe coding wins&lt;/strong&gt;:&lt;br&gt;
For throwaway scripts and single-session utilities, SRDD is overhead you don't need. But the bottom line above points to the real relationship: vibe coding excels at exploration; SRDD is what you transition to once the idea is worth keeping. They are sequential, not competing.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-05.agentic.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-05.agentic.png" alt="Cute android with pretty smile. Like one seen in Disney movies." width="800" height="548"&gt;&lt;/a&gt;&lt;br&gt;An &lt;a href="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html" rel="noopener noreferrer"&gt;agentic AI&lt;/a&gt; mascot
  &lt;/p&gt;

&lt;h2&gt;
  
  
  2. Agentic Coding
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What it is
&lt;/h3&gt;

&lt;p&gt;Agentic coding introduces structure and autonomy. Instead of responding to a single prompt, the AI is given a goal and allowed to plan, act, verify, and correct itself using tools.&lt;/p&gt;

&lt;p&gt;The interaction shifts from &lt;em&gt;chat&lt;/em&gt; to &lt;em&gt;task&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In practice, the AI behaves like a junior engineer with shell access: exploring the repository, editing files, running builds, fixing errors, and iterating until its own success criteria are met.&lt;/p&gt;

&lt;p&gt;It feels like leverage.&lt;/p&gt;

&lt;p&gt;But it remains fundamentally &lt;strong&gt;code-first&lt;/strong&gt;. The agent reasons over the current repository state, not over a durable representation of intent. Understanding emerges implicitly, if at all.&lt;/p&gt;

&lt;h3&gt;
  
  
  The process
&lt;/h3&gt;

&lt;p&gt;Agentic workflows follow a loop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Goal definition&lt;/strong&gt;:
The human provides a task framed as a definition of done, not a conversational prompt.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous discovery&lt;/strong&gt;:
The agent scans the repository, reads files, greps for relevant symbols, and maps dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Planning&lt;/strong&gt;:
The agent generates a step-by-step plan and may request approval before proceeding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution&lt;/strong&gt;:
The agent edits files, runs commands, fixes errors, installs dependencies, and retries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verification&lt;/strong&gt;:
Tests are run; failures trigger replanning and further action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handoff&lt;/strong&gt;:
The agent stops when tests pass, a blocker is reached, or human intervention is required.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Persistence is the defining feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where it shines
&lt;/h3&gt;

&lt;p&gt;Agentic coding excels at &lt;strong&gt;execution-heavy work with clear local success criteria&lt;/strong&gt; - especially when progress can be measured mechanically.&lt;/p&gt;

&lt;p&gt;It is particularly effective for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mechanical refactors at scale&lt;/strong&gt;:&lt;br&gt;
Large, repetitive changes (renaming APIs, migrating libraries, flattening abstractions) are where agentic loops shine. The agent can apply consistent transformations across dozens of files faster than any human.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dependency and ecosystem churn&lt;/strong&gt;:&lt;br&gt;
Upgrading frameworks, fixing breaking changes, resolving deprecated APIs - all benefit from the agent’s willingness to brute-force its way through build errors until the system compiles again.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test and lint repair&lt;/strong&gt;:&lt;br&gt;
When tests already encode desired behaviour, agents are good at iterating until green. This creates the impression of “self-healing” codebases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Throughput amplification&lt;/strong&gt;:&lt;br&gt;
One engineer can suddenly “do the work of many” - touching wide surface areas, unblocking pipelines, and clearing backlogs that would otherwise stall teams.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where the &lt;strong&gt;echo effect&lt;/strong&gt; begins.&lt;/p&gt;

&lt;p&gt;Agentic coding amplifies &lt;em&gt;whatever signal you give it&lt;/em&gt;. If the success signal is “tests pass” or “build succeeds,” the agent will relentlessly optimise toward that outcome - even if the system becomes less coherent, less understandable, or more fragile in the process.&lt;/p&gt;

&lt;p&gt;In short: agentic coding is excellent at &lt;strong&gt;local optimisation&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Failure modes at scale
&lt;/h3&gt;

&lt;p&gt;At scale, those same echo effects turn pathological.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context loss becomes probabilistic and compounding&lt;/strong&gt;:&lt;br&gt;
This is the same context loss described earlier, now multiplied by autonomy and multiple agents. Each agent succeeds locally, but none conditions on the full system history. Intent fragments, assumptions fall out of scope, and coherence collapses through the compounded interaction of many individually correct steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural drift accelerates under success&lt;/strong&gt;:&lt;br&gt;
Under sustained false confidence, architectural decisions stop being deliberate. Because the agent optimises for task completion, it reinforces whatever patterns already exist - good or bad. Local fixes echo outward, entrenching accidental structure. Over time, the codebase becomes a sedimentary record of agent decisions that were never globally evaluated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;False confidence through mechanical success&lt;/strong&gt;:&lt;br&gt;
This is the false confidence described earlier, now reinforced by autonomy. Tests passing become the dominant success signal. If the tests are incomplete, mis-scoped, or outdated, the agent will happily satisfy them while violating unstated invariants. The system appears healthy while drifting further from its original intent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Professional judgment erodes through delegation&lt;/strong&gt;:&lt;br&gt;
Once false confidence takes hold, the volume of agent-generated changes shifts team behaviour and reduces the likelihood of deep review. Fifteen-file diffs across four modules push teams into audit mode rather than design mode. “Looks fine” becomes normal. Understanding quietly decays.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autonomy magnifies blast radius&lt;/strong&gt;:&lt;br&gt;
Because agents require broad access - terminals, file systems, credentials - their mistakes scale too. Runaway loops, dependency explosions, or subtle security regressions are not edge cases; they are natural consequences of autonomous optimisation without durable intent.&lt;/p&gt;

&lt;p&gt;The net effect is a dangerous illusion: &lt;strong&gt;high velocity with hidden decay&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Agentic coding doesn’t fail loudly. It fails &lt;em&gt;gradually&lt;/em&gt;, echoing small local decisions into system-wide incoherence - until the cost of recovery exceeds the cost of having gone slower.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verdict
&lt;/h3&gt;

&lt;p&gt;Agentic coding is &lt;strong&gt;delegated execution&lt;/strong&gt;, not delegated responsibility.&lt;/p&gt;

&lt;p&gt;It delivers speed without stability.&lt;/p&gt;

&lt;h3&gt;
  
  
  SRDD Comparison
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Where SRDD meets agentic coding&lt;/strong&gt;:&lt;br&gt;
SRDD doesn't reject agentic execution - it harnesses it. Within Phase 2, the AI operates agentically: planning steps, editing files, running tests, fixing errors, iterating until done. The TDD loop is an agentic loop. The difference is that SRDD bounds what "done" means and guards what the agent is allowed to touch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where SRDD goes beyond&lt;/strong&gt;:&lt;br&gt;
Agentic coding optimises for task completion. SRDD optimises for &lt;em&gt;coherent&lt;/em&gt; task completion - with the developer kept deliberately in the loop. The scope guardian prevents the echo effect: the AI cannot silently expand scope or reinforce bad patterns unchecked. PRs are mandatory, and review focuses on coherence, not just "tests pass." Contracts provide a durable representation of intent that survives beyond the current repository state. When the AI advises regeneration, the human decides whether to act. SRDD treats agentic execution as a tool to be supervised, not a strategy to be delegated to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where agentic coding wins&lt;/strong&gt;:&lt;br&gt;
For pure mechanical transformations - bulk renames, dependency upgrades, migration scripts - where architectural coherence is irrelevant and the only goal is "make it compile again," raw agentic execution is faster. SRDD's guardrails add friction that isn't needed when you genuinely don't care about the system's future. But those cases are rarer than they appear. Most systems need to be maintained, and "tests pass" is not the same as "understanding survives."&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-06_context.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-06_context.png" alt="Cartoon with random 'thread' shown in one person's head, spilling out to someone where it is arranged in a spiral ie. organized" width="800" height="367"&gt;&lt;/a&gt;&lt;br&gt;Context analysis in &lt;a href="https://www.matrix.edu.au/10-things-you-must-know-about-context-analysis-in-year-9-english/" rel="noopener noreferrer"&gt;education&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Context Engineering
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What it is
&lt;/h3&gt;

&lt;p&gt;Context Engineering focuses on controlling &lt;em&gt;what&lt;/em&gt; the AI sees, &lt;em&gt;when&lt;/em&gt;, and &lt;em&gt;in what form&lt;/em&gt;. The goal is not more context, but better abstraction.&lt;/p&gt;

&lt;p&gt;It treats the context window as a scarce resource.&lt;/p&gt;

&lt;h3&gt;
  
  
  The process
&lt;/h3&gt;

&lt;p&gt;Context Engineering is less about “adding information” and more about &lt;strong&gt;actively sculpting what the model is allowed to know at any moment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context curation (skeletons, exemplars, rules)&lt;/strong&gt;&lt;br&gt;
Instead of feeding the AI full source trees, developers aggressively abstract:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Skeletons&lt;/em&gt; replace implementations with method signatures, interfaces, and type definitions - enough to communicate shape without drowning the model in detail.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Exemplars&lt;/em&gt; provide a small number of “gold standard” patterns that demonstrate how the team wants problems solved.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Rules&lt;/em&gt; encode architectural constraints, banned libraries, naming conventions, and stylistic expectations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The intent is to reduce variance by narrowing the solution space. Ironically, &lt;em&gt;less&lt;/em&gt; code often produces &lt;em&gt;better&lt;/em&gt; results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context management (summaries, scratchpads)&lt;/strong&gt;:&lt;br&gt;
Because real tasks exceed a single context window, teams introduce mechanisms to preserve continuity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-maintained summaries that periodically compress prior conversations and decisions&lt;/li&gt;
&lt;li&gt;Scratchpad files (&lt;code&gt;memory.md&lt;/code&gt;, &lt;code&gt;notes.md&lt;/code&gt;) where the model records intermediate reasoning or assumptions&lt;/li&gt;
&lt;li&gt;Explicit handoff points where context is refreshed or reset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This turns long interactions into staged engagements rather than unbounded chats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dynamic retrieval (MCP, tools, on-demand access)&lt;/strong&gt;:&lt;br&gt;
Rather than front-loading everything, agents pull information &lt;em&gt;only when needed&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model Context Protocol (MCP) calls to inspect files, logs, schemas, or APIs&lt;/li&gt;
&lt;li&gt;On-demand documentation lookup for version-accurate library behaviour&lt;/li&gt;
&lt;li&gt;Tool-mediated access to repositories, databases, and build systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model becomes less of a “reader” and more of an &lt;em&gt;investigator&lt;/em&gt;, requesting context just in time.&lt;/p&gt;




&lt;h3&gt;
  
  
  The pros
&lt;/h3&gt;

&lt;p&gt;Used well, Context Engineering delivers genuine improvements over ad-hoc prompting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fewer hallucinations&lt;/strong&gt;:&lt;br&gt;
By grounding the model in curated constraints, the AI is far less likely to invent APIs, libraries, or patterns that don’t exist. This is especially valuable in legacy systems or regulated environments where correctness matters more than creativity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lower cost and better performance&lt;/strong&gt;:&lt;br&gt;
Skeletons and selective retrieval dramatically reduce token usage. Smaller, higher-signal contexts not only cost less, they often produce &lt;em&gt;more accurate&lt;/em&gt; outputs by avoiding “lost in the middle” failures, where LLMs weight the beginning and the most recent end of the context window more heavily, causing architectural decisions and constraints in between to be silently dropped as conversations grow - without warning or explicit failure signals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural enforcement&lt;/strong&gt;:&lt;br&gt;
Context files act as soft guardrails. AI-generated code naturally conforms to senior-level conventions, reducing stylistic drift and PR churn. This is one of the few ways to reliably encode architectural intent without constant human intervention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Determinism for contract-driven systems&lt;/strong&gt;:&lt;br&gt;
In API-first or schema-driven environments, well-engineered context can make AI output surprisingly consistent. Given the same spec and constraints, regeneration becomes predictable - a prerequisite for CI/CD and automated codegen workflows.&lt;/p&gt;




&lt;h3&gt;
  
  
  The cons
&lt;/h3&gt;

&lt;p&gt;The problems with Context Engineering are not subtle - they emerge directly from its strengths.&lt;/p&gt;

&lt;p&gt;Unlike vibe or agentic coding, Context Engineering largely resists false confidence and architectural drift by design - but it does so by imposing deliberate friction, ongoing cognitive overhead, and manual reconciliation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High cognitive overhead&lt;/strong&gt;:&lt;br&gt;
Designing, maintaining, and evolving the AI’s “mental environment” is work. Developers can spend more time tuning context than building features. For small teams or solo developers, this overhead quickly becomes unsustainable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fragility across model changes&lt;/strong&gt;:&lt;br&gt;
Context strategies are tightly coupled to model behaviour. A carefully tuned setup for one model version can degrade when the model changes, forcing teams into continuous recalibration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context bloat&lt;/strong&gt;:&lt;br&gt;
This is the same context loss described earlier, now driven by accumulation. As context files grow, signal is buried by its own scaffolding, recreating the very “lost in the middle” failures they were meant to avoid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slower feedback loops&lt;/strong&gt;:&lt;br&gt;
What could have been a five-second experiment becomes a multi-minute ritual: curate context, verify rules, run the agent, review output. For exploratory work, this feels like procedural friction masquerading as discipline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One-directional knowledge flow&lt;/strong&gt;:&lt;br&gt;
Most critically, Context Engineering only controls what flows &lt;em&gt;into&lt;/em&gt; the model. There is no native mechanism to extract updated understanding back out. When the system evolves, humans must manually reconcile reality with the curated context - or accept drift.&lt;/p&gt;

&lt;h3&gt;
  
  
  SRDD Comparison
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Where SRDD meets context engineering&lt;/strong&gt;:&lt;br&gt;
SRDD shares context engineering's recognition that &lt;em&gt;what the AI knows matters&lt;/em&gt;. Rules files (CLAUDE.md), canonical patterns (ARCHITECTURE.md), and planning docs all shape how the AI reasons about the system. But the flow differs fundamentally. Context engineering focuses on preparing inputs - curating skeletons, examples, and abstraction layers before the AI begins work. Whether humans or AI assist with that curation, the knowledge flows one direction: into the coding session. SRDD closes the loop. The AI sees reality in full, synthesises understanding during regeneration, and produces planning docs for human approval. What the AI extracts - and the human approves - becomes the authoritative input for the next cycle. Context engineering curates &lt;em&gt;before&lt;/em&gt;. SRDD extracts &lt;em&gt;after&lt;/em&gt; - and feeds it forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where SRDD goes beyond&lt;/strong&gt;:&lt;br&gt;
Context engineering is one-directional: carefully curated inputs, no mechanism to extract updated understanding back out. SRDD closes that loop. Regeneration cycles synthesise fresh specs from living code, ensuring that context files reflect reality rather than gradually drifting into fiction. The planning docs aren't static artefacts maintained by ceremony - they're regenerated from evidence. This is the fundamental difference: context engineering improves inputs; SRDD also regenerates understanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where context engineering wins&lt;/strong&gt;:&lt;br&gt;
For brownfield systems where the goal is surgical fixes - not architectural transformation - context engineering's discipline is exactly right. When you don't own the architecture, can't regenerate, and just need to thread a needle without breaking anything, meticulous curation is the entire game. Brownfield in, brownfield out. SRDD assumes you can reshape the system over time; context engineering is designed for when you can't or won't.&lt;/p&gt;

&lt;h3&gt;
  
  
  The takeaway
&lt;/h3&gt;

&lt;p&gt;Context Engineering is powerful, disciplined, and increasingly necessary for large or constrained systems. But it solves the context window problem through &lt;strong&gt;curation and ceremony&lt;/strong&gt;, not through feedback.&lt;/p&gt;

&lt;p&gt;It improves inputs.&lt;br&gt;
It does not regenerate understanding.&lt;/p&gt;

&lt;p&gt;And that unclosed loop is precisely why SRDD exists.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-07.Specifications_Blueprint-gc87638b5f_1280.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F2-07.Specifications_Blueprint-gc87638b5f_1280.jpg" alt="Architectural room design on a large piece of paper (or on screen)" width="800" height="525"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.designingbuildings.co.uk/wiki/Specification_for_construction" rel="noopener noreferrer"&gt;Architectural plan&lt;/a&gt; - a specification
  &lt;/p&gt;

&lt;h2&gt;
  
  
  4. Spec-Driven Development (SDD)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What it is
&lt;/h3&gt;

&lt;p&gt;Spec-Driven Development (SDD) is a spec-first methodology designed to produce software with high certainty, traceability, and auditability. The specification is treated as the primary artefact of intent: requirements, constraints, and behavioural guarantees are articulated explicitly and used to drive implementation. The human role is not simply to “build features”, but to formalise what must be true, verify that the resulting system matches it, and maintain a defensible trail of why the system behaves as it does.&lt;/p&gt;

&lt;p&gt;Modern Spec-Driven Development makes this practical by formalising software development around &lt;strong&gt;continuously synchronised specifications&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In contemporary SDD, the specification and the codebase exist in a bidirectional relationship. The spec is not a static document, nor merely an input to generation. Instead, it is a living artefact that is actively reconciled with the implementation. AI agents generate code from the spec, detect divergence as development proceeds, and update the specification to reflect reality when change occurs.&lt;/p&gt;

&lt;p&gt;This spec ↔ code synchronisation is foundational. It allows SDD to maintain traceability while tolerating controlled evolution. Requirements, architectural decisions, and behavioural guarantees remain preserved as first-class artefacts, while AI handles the mechanical work of keeping them aligned with the implementation.&lt;/p&gt;

&lt;p&gt;In practice, SDD treats the AI less like a pair programmer and more like a compiler for intent - one that continuously verifies that what exists matches what was declared.&lt;/p&gt;

&lt;p&gt;This posture is intentional. SDD optimises for certainty.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why sync exists
&lt;/h3&gt;

&lt;p&gt;This was not always the case.&lt;/p&gt;

&lt;p&gt;Early forms of Spec-Driven Development assumed a &lt;strong&gt;one-way flow&lt;/strong&gt;: specification first, code second, and never the reverse. The spec was authoritative; the implementation was disposable. Any change to behaviour required prior modification of the specification.&lt;/p&gt;

&lt;p&gt;While conceptually pure, this model collapsed under real-world pressure.&lt;/p&gt;

&lt;p&gt;It suppressed exploratory development, punished learning-through-implementation, and forced teams into &lt;strong&gt;Big Design Up Front&lt;/strong&gt; simply to make progress. Developers either abandoned the methodology when reality diverged, or quietly modified code and backfilled the spec later - eroding trust in the very artefact meant to provide certainty.&lt;/p&gt;

&lt;p&gt;Spec ↔ code synchronisation emerged as a corrective to this failure.&lt;/p&gt;

&lt;p&gt;By allowing controlled reverse sync, modern SDD preserves auditability without prohibiting reality. Drift is surfaced explicitly rather than hidden. Documentation remains truthful. The system stays inspectable.&lt;/p&gt;

&lt;p&gt;But the underlying philosophy remains unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where it shines
&lt;/h3&gt;

&lt;p&gt;Spec-Driven Development is genuinely effective &lt;strong&gt;when the cost of ambiguity exceeds the cost of rigidity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stable core logic&lt;/strong&gt;:&lt;br&gt;
When requirements are well understood and evolve slowly, SDD performs exactly as intended. Deterministic business rules, calculation engines, and policy enforcement benefit from being specified once and regenerated reliably. Creativity is not the objective; consistency is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regulated domains&lt;/strong&gt;:&lt;br&gt;
In finance, healthcare, safety-critical systems, and government, SDD aligns naturally with compliance requirements. Specifications double as audit artefacts. The ability to demonstrate that an implementation was derived from a formally reviewed description of intent is a powerful organisational capability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regenerable systems&lt;/strong&gt;:&lt;br&gt;
SDD excels when code is treated as a secondary artefact. Entire services can be regenerated across languages, frameworks, or platforms, provided the spec remains authoritative. In theory, this reduces long-term platform risk and vendor lock-in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High audit requirements&lt;/strong&gt;:&lt;br&gt;
Traceability is SDD’s native strength. Every behaviour can be traced to an explicit declaration. For systems where explanation matters more than adaptability, this trade-off is not just acceptable - it is required.&lt;/p&gt;

&lt;p&gt;In short, SDD is optimised for systems that are already known.&lt;/p&gt;

&lt;h3&gt;
  
  
  Failure modes
&lt;/h3&gt;

&lt;p&gt;The limitations of SDD emerge precisely where software becomes uncertain.&lt;/p&gt;

&lt;p&gt;SDD suppresses false confidence and architectural drift by making intent explicit and authoritative, but the cost is that discovery is constrained rather than emergent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reintroduces Big Design Up Front&lt;/strong&gt;:&lt;br&gt;
Even with synchronisation, SDD still requires correctness to be formalised early, because the specification remains the authoritative artefact. This mirrors the core assumption of Waterfall: that complex systems can be fully and accurately described before meaningful experience exists. Sync does not alter that premise - it merely constrains how far the implementation is allowed to diverge from an early formalisation.&lt;/p&gt;

&lt;p&gt;Discovery is not eliminated; it is deferred. Understanding still arrives late, but the cost of revising foundational assumptions is higher because the system must be reconciled back into a pre-existing specification. What appears as flexibility is, in practice, controlled deviation within a design that was fixed too soon.&lt;/p&gt;

&lt;p&gt;For traceability to remain meaningful, the spec and the code must remain nearly isomorphic. Code may evolve, but only within the conceptual envelope already declared. Reverse sync exists to reconcile drift, not to legitimise it. If implementation deviates too far, traceability collapses - the spec no longer explains the system; it merely describes it after the fact.&lt;/p&gt;

&lt;p&gt;This places a hard ceiling on discovery. Significant design insight cannot emerge organically through coding, because any non-trivial departure must first be formalised in the spec. Exploration becomes paperwork. Learning is permitted only insofar as it can be anticipated, named, and approved before it exists.&lt;/p&gt;

&lt;p&gt;As a result, SDD remains fundamentally spec-first. Sync makes the process survivable, but it does not change the core assumption: that understanding precedes implementation, rather than being produced by it. Big Design Up Front is softened - not removed.&lt;/p&gt;

&lt;p&gt;Discovery is delayed, constrained, and filtered through formality. It is not eliminated, but it is never allowed to lead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Defers rather than resolves drift&lt;/strong&gt;:&lt;br&gt;
Synchronisation keeps documents accurate, but it does not question whether the architecture itself is sound. Specs follow reality; they do not critique it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compliance over coherence&lt;/strong&gt;:&lt;br&gt;
Because success is measured by adherence rather than design quality, systems can remain formally correct while becoming structurally brittle. Architectural discomfort has no formal signal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Excludes human taste and intuition&lt;/strong&gt;:&lt;br&gt;
Most critically, SDD has no natural mechanism for expressing unease. LLMs interpolate; they do not imagine. When generation is driven primarily by specifications, outputs converge toward statistically defensible patterns rather than inspired ones.&lt;/p&gt;

&lt;p&gt;AI doesn’t dream.&lt;br&gt;
And SDD gives it nothing else to work with.&lt;/p&gt;

&lt;p&gt;Human judgment - taste, discomfort, intuition, the sense that something is &lt;em&gt;technically correct but wrong&lt;/em&gt; - has no formal entry point. The spec becomes a narrowing funnel, and the AI fills it faithfully with the safest patterns available.&lt;/p&gt;

&lt;p&gt;The result is software that is correct, auditable, and consistent - and increasingly indistinguishable.&lt;/p&gt;

&lt;p&gt;This mirrors a familiar pattern already visible in AI-generated art. As models train increasingly on their own outputs, variance collapses. Novelty erodes. The work converges toward a safe, statistically defensible centre. Texture, risk, and idiosyncrasy are averaged away until what remains is technically coherent but aesthetically flat - the oft-invoked image of everything drifting toward the same muted, featureless form.&lt;/p&gt;

&lt;p&gt;SDD exhibits the same gravitational pull. When generation is driven exclusively by prior specifications and statistically common patterns, each new system reinforces the last. Architectural decisions harden into defaults. Interfaces converge. Systems stop reflecting the peculiarities of their context and instead resemble the accumulated median of what has come before.&lt;/p&gt;

&lt;p&gt;The danger is not incorrectness.&lt;br&gt;
It is homogenisation.&lt;/p&gt;

&lt;p&gt;Over time, SDD does not merely prevent surprise - it systematically removes the conditions under which genuinely new structure, interaction, or architecture can emerge.&lt;/p&gt;

&lt;h3&gt;
  
  
  SRDD Comparison
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Where SRDD meets SDD&lt;/strong&gt;:&lt;br&gt;
Both methodologies reject the chaos of undocumented, ad-hoc development. Both produce planning artefacts. Both recognise that specifications matter. And both establish a relationship between spec and code that goes beyond one-way generation. The superficial shape is similar: documents drive implementation, and implementation informs documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where SRDD goes beyond&lt;/strong&gt;:&lt;br&gt;
The relationship to the spec is fundamentally different. In SDD, the specification remains authoritative - code must reconcile back to it, and sync exists to detect drift, not to question the architecture. In SRDD, specifications are snapshots, not contracts. They capture understanding at a moment in time, but code becomes the source of truth as reality evolves. Regeneration doesn't sync - it &lt;em&gt;synthesises&lt;/em&gt;. The AI extracts fresh specs from living code, informed by everything learned: PRs, issues, tests, production discoveries. The output isn't a reconciled document; it's a new foundation.&lt;/p&gt;

&lt;p&gt;More critically, SRDD preserves human judgment as a first-class input. SDD has no formal mechanism for taste, intuition, or the sense that something is "correct but wrong." The spec is a narrowing funnel; the AI fills it faithfully with statistically safe patterns. SRDD explicitly counters this: the developer dreams, the AI disciplines. Architectural discomfort has a voice. Discovery is allowed to lead, not merely to be tolerated within pre-declared boundaries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where SDD wins&lt;/strong&gt;:&lt;br&gt;
When formal traceability is mandated - not preferred, but legally or contractually required - SDD's rigour is the point. Regulated domains (finance, healthcare, safety-critical systems) often demand that every behaviour trace to an explicit, pre-approved declaration of intent. SRDD's "specs are snapshots" philosophy doesn't satisfy auditors who need to demonstrate that implementation derived from reviewed specifications. If the cost of ambiguity exceeds the cost of rigidity, and external compliance requires it, SDD remains the appropriate choice. SRDD is not designed for environments where flexibility is a liability.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F06.WhichWay.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F06.WhichWay.png" alt="Simple text image asking 'where to next..'" width="225" height="225"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.facebook.com/andsowheretonext/" rel="noopener noreferrer"&gt;where to next&lt;/a&gt;
  &lt;/p&gt;

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

&lt;p&gt;The landscape is clear. Each approach optimises for something real - speed, autonomy, discipline, traceability - but none of them close the loop between specification and reality.&lt;/p&gt;

&lt;p&gt;SRDD does.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Part 3&lt;/strong&gt;, I walk through the SRDD workflow in detail: the five phases, how contracts are defined and protected, the role of the AI as scope guardian, and what regeneration actually looks like in practice.&lt;/p&gt;

&lt;p&gt;Continue to Part 3:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3"&gt;The SRDD Workflow&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or return to Part 1:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe"&gt;Why SRDD Exists&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;© 2026 Brooke Smith. All rights reserved.&lt;/p&gt;

&lt;p&gt;This document constitutes a public disclosure and defensive publication of the&lt;br&gt;
Spec-Roundtrip Driven Development (SRDD) and Scaled SRDD (SSRDD) methodologies.&lt;/p&gt;

&lt;p&gt;The author expressly places the concepts, processes, and workflows described&lt;br&gt;
herein into the public domain as prior art, for the purpose of preventing&lt;br&gt;
subsequent patent claims or exclusive ownership by third parties.&lt;/p&gt;

&lt;p&gt;Commercial use, redistribution, or derivative works of this text require&lt;br&gt;
explicit permission from the author.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
    <item>
      <title>SRDD (Part 1 of 4) - The Best AI Coding Methodology</title>
      <dc:creator>Brooke</dc:creator>
      <pubDate>Tue, 06 Jan 2026 23:12:58 +0000</pubDate>
      <link>https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe</link>
      <guid>https://dev.to/bbos/srdd-part-1-of-4-the-best-ai-coding-methodology-8fe</guid>
      <description>&lt;p&gt;&lt;strong&gt;Spec-Roundtrip Driven Development&lt;/strong&gt; - Keeping developers in control while building better systems with aligned AI&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;← Back to &lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD entry page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'm a senior software engineer with over 25 years of experience working across government, finance, science, defence, and large-scale commercial systems. I started AI-assisted coding in January 2025 and joined a community of like-minded professionals at &lt;a href="https://www.skool.com/new-society" rel="noopener noreferrer"&gt;New Society&lt;/a&gt;, where AI tools, methods, and real-world projects are discussed daily.&lt;/p&gt;

&lt;p&gt;The source documentation for this series - including the evolving methodology, explanations, and supporting material - is maintained openly at &lt;strong&gt;&lt;a href="https://docs-bbos.github.io/srdd/" rel="noopener noreferrer"&gt;https://docs-bbos.github.io/srdd/&lt;/a&gt;&lt;/strong&gt;. That site serves as the canonical reference for the ideas presented here.&lt;/p&gt;

&lt;p&gt;The underlying repository, which includes working assets such as templates, rules files, and examples, is available at &lt;strong&gt;&lt;a href="https://github.com/docs-bbos/srdd/" rel="noopener noreferrer"&gt;https://github.com/docs-bbos/srdd/&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This article series on Medium is a narrative representation of that source material, available at &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-is-the-best-ai-coding-methodology-entry-4pkk"&gt;SRDD Is the Best AI Coding Methodology&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Much of the work that informed this series was done in my own time, driven by a growing fascination - and concern - that AI-assisted coding is where the software engineering world is headed. Over the months that followed, I spent time working with multiple AI coding methodologies - from low-friction experimentation to heavily structured approaches - and saw the same patterns repeat as systems grew.&lt;/p&gt;

&lt;p&gt;It became clear to me that the industry had been set adrift by the sudden acceleration of these tools, with no shared footing yet established. What I've learned - and what I'm trying to convey in this series - is an attempt to help find that footing, without discarding the hard-won lessons of software engineering along the way.&lt;/p&gt;

&lt;p&gt;Like most developers, I arrived curious, sceptical, and slightly overwhelmed.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F01.StompDinosaurStomp.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F01.StompDinosaurStomp.jpg" alt="Bright colourful book cover for Stomp Stomp Stomp. Picture of bright green dinosaur. By Margaret Mayo and Alex Ayliffe" width="440" height="482"&gt;&lt;/a&gt;&lt;br&gt;Book cover for Stomp &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fwww.hachette.com.au%2Fmargaret-mayo-alex-ayliffe%2Fstomp-dinosaur-stomp" rel="noopener noreferrer"&gt;Dinosaur Stomp!&lt;/a&gt; By Margaret Mayo and Alex Ayliffe
  &lt;/p&gt;

&lt;h2&gt;
  
  
  Finding My Footing
&lt;/h2&gt;

&lt;p&gt;I immersed myself in Cursor IDE and immediately appreciated the tight integration between editor and assistant. AI-assisted development, instant explanations of unfamiliar code, integrated terminals, and one-click error interpretation all felt like genuine productivity gains.&lt;/p&gt;

&lt;p&gt;Recent releases pushed this even further: background agents running in isolated environments, parallel agents via git worktrees, integrated browsers for testing, automated PR review bots, voice input, and fast-turnaround “composer” tasks that complete in seconds.&lt;/p&gt;

&lt;p&gt;But very quickly, something started to bother me.&lt;/p&gt;

&lt;p&gt;The more capable these tools became, the more they &lt;em&gt;pulled the developer away&lt;/em&gt; from the system itself. And we’re already seeing the consequences play out across the industry. Klarna laid off around 700 customer-service staff in favour of AI-driven automation, only to later acknowledge falling service quality and begin rehiring human agents (&lt;em&gt;&lt;a href="https://www.economictimes.com/news/international/us/company-that-sacked-700-workers-with-ai-now-regrets-it-scrambles-to-rehire-as-automation-goes-horribly-wrong/articleshow/121732999.cms" rel="noopener noreferrer"&gt;Company That Sacked 700 Workers With AI Now Regrets It&lt;/a&gt;&lt;/em&gt;; &lt;em&gt;&lt;a href="https://www.forbes.com/sites/quickerbettertech/2025/05/18/business-tech-news-klarna-reverses-on-ai-says-customers-like-talking-to-people/" rel="noopener noreferrer"&gt;Klarna Reverses on AI, Says Customers Like Talking to People&lt;/a&gt;&lt;/em&gt;). Forrester has similarly predicted that more than half of AI-attributed layoffs will be quietly reversed as organisations confront the limits of premature automation (&lt;em&gt;&lt;a href="https://www.theregister.com/2025/10/29/forrester_ai_rehiring/" rel="noopener noreferrer"&gt;Forrester: AI Layoffs Will Be Quietly Reversed&lt;/a&gt;&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;The problem isn’t the tools. It’s the loss of understanding.&lt;/p&gt;

&lt;p&gt;When nobody really knows what the code is doing, you get what one observer called &lt;em&gt;archaeological programming&lt;/em&gt;: future developers reverse-engineering AI-generated systems like anthropologists studying ancient ruins. Commit histories read “AI improvements” and “ChatGPT optimisation” with no explanation of &lt;em&gt;why&lt;/em&gt; anything exists. Every change risks breaking something else - a pattern increasingly described as software archaeology (&lt;em&gt;&lt;a href="https://generativeai.pub/the-junior-developer-extinction-were-all-building-the-next-programming-dark-age-f66711c09f25" rel="noopener noreferrer"&gt;The Junior Developer Extinction: We’re All Building the Next Programming Dark Age&lt;/a&gt;&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Developers need to remain across the codebase and architecture. The sweet spot is automating the boring, low-value work - boilerplate, tests, routine fixes, explanations - while keeping humans responsible for structure, intent, and judgment.&lt;/p&gt;

&lt;p&gt;That’s why tools like Claude Code and OpenAI’s Codex clicked for me. Command-line assistants keep you closer to what’s actually happening. You run the AI deliberately, review diffs in your editor, and stay oriented. I don’t understand every line of generated code - no one can unless they write it all themselves - but I maintain &lt;em&gt;architectural understanding&lt;/em&gt;: how the system fits together, where the boundaries are, and where to look when something breaks.&lt;/p&gt;

&lt;p&gt;Businesses don't care which sorting algorithm you chose. They care that the system solves their problem. As developers, our job is to care &lt;em&gt;just enough&lt;/em&gt; - and to name things well enough that intent stays visible.&lt;/p&gt;

&lt;p&gt;This matters more with AI-generated code, not less. When you didn't write it yourself, you need to grasp intent at a glance. I'd much rather see &lt;code&gt;sortRedBlackTree()&lt;/code&gt; than &lt;code&gt;sort()&lt;/code&gt; and retain that understanding without spelunking through every line. The AI can generate the implementation; the human ensures the names reveal what it actually does.&lt;/p&gt;

&lt;p&gt;This is Uncle Bob's "Clean Code" - small, well-named functions that communicate intent. See &lt;a href="https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29#functions-rules" rel="noopener noreferrer"&gt;summary&lt;/a&gt;, &lt;a href="https://youtu.be/7EmboKQH8lM" rel="noopener noreferrer"&gt;video&lt;/a&gt;, and &lt;a href="https://www.goodreads.com/book/show/3735293-clean-code" rel="noopener noreferrer"&gt;book&lt;/a&gt;. The principles predate AI coding, but AI coding makes them essential. If the AI generates opaque code with generic names, you've lost the architectural understanding that keeps you in control.&lt;/p&gt;

&lt;p&gt;This article is not just an introduction to a new methodology. It is also a survey of the major AI-assisted development approaches that have emerged over the past year - what they optimise for, where they succeed, and where they begin to break down as systems grow.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F02.HoneymoonPhase.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F02.HoneymoonPhase.jpg" alt="Man and woman holding hands on a beach. They are in their honeymoon phase" width="800" height="348"&gt;&lt;/a&gt;&lt;br&gt;Honeymoon phase - courtesy &lt;a href="https://www.marriage.com/advice/love/honeymoon-stage-of-relationship/" rel="noopener noreferrer"&gt;marriage.com&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  The Honeymoon Phase
&lt;/h2&gt;

&lt;p&gt;Like everyone new to AI coding, I started with “vibe coding”. I churned out utilities I’d previously written off as not worth the effort. Fully tested, well-documented tools appeared in hours instead of weekends.&lt;/p&gt;

&lt;p&gt;It also solved another persistent problem: returning to old codebases. Even with good documentation, once a project spanned multiple files and services, understanding decayed quickly. AI code analysis changed that. Point it at a repository and ask, “What does this do?” - and within seconds you get a coherent, high-level explanation that would normally take hours of context rebuilding.&lt;/p&gt;

&lt;p&gt;That kind of patience changes how you work.&lt;/p&gt;

&lt;p&gt;At the same time, I should be clear about something: I don’t buy the modern obsession with speed for its own sake. Not everything needs to be solved immediately, as if a meteorite were on a collision course with Earth - or some alien civilisation had scheduled our planet for demolition to make way for an intergalactic super-highway. Most of the urgency we live under isn’t existential at all. It’s manufactured - a capitalistic pressure built around perpetual competition. We must ship first. We must grow faster. Before them. What a load of codswallop. This mindset is quietly exhausting people and degrading the planet in the process.&lt;/p&gt;

&lt;p&gt;I’ve written - and continue to write - about these dynamics elsewhere, for anyone interested in digging further.&lt;/p&gt;

&lt;p&gt;The reason I &lt;em&gt;do&lt;/em&gt; embrace AI coding is different. It removes the mundane and the laborious. Writing boilerplate. Churning out test scaffolding. Re-implementing solutions that have already been solved a thousand times, in a dozen languages. Few developers genuinely enjoy that work, and fewer would argue it’s where human creativity is best spent.&lt;/p&gt;

&lt;p&gt;What &lt;em&gt;is&lt;/em&gt; fulfilling is building architecturally coherent systems, writing novel code where novelty matters, and shaping systems with a sense of intent - even a kind of poetry or artistry. AI coding makes room for that. By offloading the repetitive and the already-solved, it gives developers the space to focus on structure, meaning, and design.&lt;/p&gt;

&lt;p&gt;And that shift - from exhaustion to intention - is quietly transformative.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F03.hitting-brick-wall.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F03.hitting-brick-wall.jpg" alt="Man and woman holding hands on a beach. They are in their honeymoon phase" width="179" height="240"&gt;&lt;/a&gt;&lt;br&gt;Man hard up against the &lt;a href="https://wendykeller.com/when-your-life-hits-a-brick-wall/" rel="noopener noreferrer"&gt;wall&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  Hitting the Wall
&lt;/h2&gt;

&lt;p&gt;The cracks appeared when I moved beyond small tools into multi-service systems.&lt;/p&gt;

&lt;p&gt;I first encountered this while writing long-form essays - expecting the AI to maintain continuity across chapters, only to discover it quietly rewriting earlier material. The assumption that it was “keeping the whole thing in mind” turned out to be false. Later, the same thing happened in code. As systems grew, context windows became constraints rather than conveniences.&lt;/p&gt;

&lt;p&gt;When that continuity breaks, the AI doesn’t fail loudly - it degrades subtly. Lacking persistent awareness of prior decisions, intent, and structure, it defaults to locally optimal changes made one prompt at a time. That’s when the familiar symptoms begin to appear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scope creep, one “small change” at a time&lt;/li&gt;
&lt;li&gt;inconsistent implementations of the same concerns&lt;/li&gt;
&lt;li&gt;architectural drift&lt;/li&gt;
&lt;li&gt;regressions popping up elsewhere&lt;/li&gt;
&lt;li&gt;god classes forming&lt;/li&gt;
&lt;li&gt;velocity slowing as complexity rose&lt;/li&gt;
&lt;li&gt;the AI hedging: “I’m not sure if this will break something”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d been coding long enough to recognise the pattern. This wasn’t just a tooling problem. It was a deeper failure of software-engineering fundamentals - violated design principles, eroded architectural patterns, and the slow decay of clean, comprehensible code. These are issues that only emerge clearly with professional experience. They don’t announce themselves immediately, and they’re easy to miss if you haven’t had to maintain, extend, and live with systems over time. But once you have, the signs are unmistakable.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F04.SheepSurveyingTheLandscape.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F04.SheepSurveyingTheLandscape.jpg" alt="Sheep looking down to the valley below" width="800" height="326"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.photocatalyst.uk/Portfolio/i-kB2JFpW" rel="noopener noreferrer"&gt;Sheep surveying the landscape&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  Surveying the Landscape
&lt;/h2&gt;

&lt;p&gt;By mid-2025, it was clear that I wasn’t alone in hitting this wall. As AI-assisted coding moved beyond small tools and demos into longer-lived systems, the same failure modes were appearing everywhere: loss of coherence, architectural drift, and teams no longer fully understanding the systems they were shipping.&lt;/p&gt;

&lt;p&gt;In response, the industry began to fragment into distinct AI coding methodologies. Some approaches effectively ignored the problem altogether - because they were never intended to operate at that scale. Others attempted to address it directly, each in their own way, with different assumptions about control, structure, and responsibility.&lt;/p&gt;

&lt;p&gt;We watched Andrej Karpathy coin &lt;em&gt;vibe coding&lt;/em&gt;. GitHub released Spec Kit. Thoughtworks declared the shift toward &lt;em&gt;context engineering&lt;/em&gt;. Others leaned into increasingly agentic approaches.&lt;/p&gt;

&lt;p&gt;What became clear is that this wasn’t a binary debate. Five distinct approaches were emerging:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vibe coding&lt;/strong&gt;: fast, magical, but limited to what fits in context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agentic coding&lt;/strong&gt;: goal-driven and powerful, but still code-first&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context engineering&lt;/strong&gt;: disciplined curation of information, but brittle and one-way&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spec-driven development (SDD)&lt;/strong&gt;: structured and consistent - but Big Design Up Front in modern dress&lt;/li&gt;
&lt;li&gt;…and something missing in between&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SDD in particular troubled me. It promises order, but assumes you can fully specify complex systems upfront - the same Waterfall fallacy Agile emerged to escape. Worse, there’s a quieter problem nobody talks about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI doesn’t dream.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;LLMs interpolate. They gravitate toward the statistical centre of their training data. If you rely entirely on AI to implement from specification, your architecture - and your interfaces - converge on the same patterns everyone else ships.&lt;/p&gt;

&lt;p&gt;A human developer feels when a screen is doing too much, when a flow is awkward, when something technically works but emotionally misses. Those judgments emerge through use, friction, and lived interaction. They do not reside cleanly in specifications.&lt;/p&gt;

&lt;p&gt;Pure SDD doesn’t optimise for speed. At scale, it is often painfully slow. What it optimises for instead is &lt;strong&gt;consistency, formal declaration, and auditability&lt;/strong&gt;: clearly defined artefacts, traceable decisions, and boxes that can be ticked with confidence. The result is systems that are internally coherent on paper, defensible in process, and deeply constrained in expression.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F05.maze_image_for_third_way_blog_january_2024.jpg" 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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F05.maze_image_for_third_way_blog_january_2024.jpg" alt="Sheep looking down to the valley below" width="600" height="300"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.artsetcbarbados.com/blog/finding-third-way" rel="noopener noreferrer"&gt;The maze&lt;/a&gt; at German adventure park Erlebnispark Teichland
  &lt;/p&gt;

&lt;h2&gt;
  
  
  Finding a Third Way
&lt;/h2&gt;

&lt;p&gt;As a solo developer working unpaid in my spare time, I knew I wouldn’t sustain any of these for my bigger projects. So I drew on my 25+ years of experience - from Waterfall and spiral models, through UML-heavy enterprise systems, to Agile teams and SAFe programs - to build something that worked for me.&lt;/p&gt;

&lt;p&gt;That professional background isn’t the point. It simply informed my analysis and helped me recognise the patterns early. The result itself is deliberately simple.&lt;/p&gt;

&lt;p&gt;I call it &lt;strong&gt;Spec-Roundtrip Driven Development (SRDD)&lt;/strong&gt;. For larger environments, it scales through &lt;strong&gt;Scaled SRDD (SSRDD)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The core insight is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specs are snapshots, not contracts.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They capture understanding at a moment in time. Code evolves. Periodically, you must extract new understanding &lt;em&gt;from&lt;/em&gt; the code and regenerate the specs.&lt;/p&gt;

&lt;p&gt;Specs guide code. Code informs regenerated specs. It’s a closed loop.&lt;/p&gt;

&lt;p&gt;The developer stays hands-on - shaping requirements, reviewing PRs, and validating behaviour - with their hands firmly on the steering wheel. The AI handles execution, analysis, and discipline, keeping the system within its lane and keeping that baby on the road. The human dreams and chooses the destination; the AI helps get there.&lt;/p&gt;

&lt;p&gt;That roundtrip is what keeps understanding compounding instead of decaying.&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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F06.WhichWay.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%2Fdocs-bbos.github.io%2Fsrdd%2Fimages%2F06.WhichWay.png" alt="Simple text image asking 'where to next..'" width="225" height="225"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.facebook.com/andsowheretonext/" rel="noopener noreferrer"&gt;where to next&lt;/a&gt;
  &lt;/p&gt;

&lt;h2&gt;
  
  
  Where This Goes Next
&lt;/h2&gt;

&lt;p&gt;Spec-Roundtrip Driven Development is about aligning AI-assisted coding with the realities of professional systems development and the outcomes we actually care about: coherent architecture, maintainable systems, and products that feel intentional rather than accidental - &lt;strong&gt;with the potential to operate effectively at scale&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;SRDD builds on what AI is genuinely good at, recognises its limits, and restores the developer's role as the system's steward - hands on the steering wheel - rather than a passive passenger.&lt;/p&gt;

&lt;p&gt;This is a four-part series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Part 1&lt;/strong&gt; (this article): Why SRDD exists&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4"&gt;Part 2: The AI Coding Landscape&lt;/a&gt;&lt;/strong&gt; - Vibe coding, agentic coding, context engineering, and spec-driven development&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-3-of-4-the-srdd-workflow-3hn3"&gt;Part 3: The SRDD Workflow&lt;/a&gt;&lt;/strong&gt; - Phases, contracts, regeneration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-4-of-4-scaling-up-ssrdd-principles-and-implementation-1ojb"&gt;Part 4: Scaling Up&lt;/a&gt;&lt;/strong&gt; - SSRDD, principles, and implementation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Continue to Part 2:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://dev.to/bbos/srdd-part-2-of-4-the-ai-coding-landscape-16p4"&gt;The AI Coding Landscape&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;© 2026 Brooke Smith. All rights reserved.&lt;/p&gt;

&lt;p&gt;This document constitutes a public disclosure and defensive publication of the&lt;br&gt;
Spec-Roundtrip Driven Development (SRDD) and Scaled SRDD (SSRDD) methodologies.&lt;/p&gt;

&lt;p&gt;The author expressly places the concepts, processes, and workflows described&lt;br&gt;
herein into the public domain as prior art, for the purpose of preventing&lt;br&gt;
subsequent patent claims or exclusive ownership by third parties.&lt;/p&gt;

&lt;p&gt;Commercial use, redistribution, or derivative works of this text require&lt;br&gt;
explicit permission from the author.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
    <item>
      <title>Contributing to SRDD</title>
      <dc:creator>Brooke</dc:creator>
      <pubDate>Tue, 06 Jan 2026 23:12:56 +0000</pubDate>
      <link>https://dev.to/bbos/contributing-to-srdd-1g03</link>
      <guid>https://dev.to/bbos/contributing-to-srdd-1g03</guid>
      <description>&lt;h1&gt;
  
  
  Contributing to SRDD
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;← Back to &lt;a href="{{devto:index}}"&gt;SRDD entry page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Fork the &lt;a href="https://github.com/docs-bbos/srdd" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a branch for your changes&lt;/li&gt;
&lt;li&gt;Make your edits&lt;/li&gt;
&lt;li&gt;Submit a Pull Request&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All PRs will be reviewed before merging.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
