<?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: binith</title>
    <description>The latest articles on DEV Community by binith (@binith_70ad15e12e961ea7d4).</description>
    <link>https://dev.to/binith_70ad15e12e961ea7d4</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2014176%2Fe67cf416-48aa-455b-9a9d-4f1c6aa61243.jpg</url>
      <title>DEV Community: binith</title>
      <link>https://dev.to/binith_70ad15e12e961ea7d4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/binith_70ad15e12e961ea7d4"/>
    <language>en</language>
    <item>
      <title>How to Use AI Coding Agents Across Multiple Repositories (Without a Monorepo Migration)</title>
      <dc:creator>binith</dc:creator>
      <pubDate>Sat, 31 Oct 2026 17:04:41 +0000</pubDate>
      <link>https://dev.to/binith_70ad15e12e961ea7d4/how-to-use-ai-coding-agents-across-multiple-repositories-without-a-monorepo-migration-3g8l</link>
      <guid>https://dev.to/binith_70ad15e12e961ea7d4/how-to-use-ai-coding-agents-across-multiple-repositories-without-a-monorepo-migration-3g8l</guid>
      <description>&lt;p&gt;In &lt;a href="https://dev.to/binith_70ad15e12e961ea7d4/why-ai-coding-feels-faster-while-your-sprints-slow-down-23a1"&gt;Part 1&lt;/a&gt;, we saw that code generation is cheap, while clear intent and contract boundaries are the scarce bottleneck. We concluded with a clean principle: &lt;em&gt;store the living story spec in the repository alongside the code.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then Monday morning arrives, and you pick up your next ticket: &lt;strong&gt;partial refunds&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It touches two repositories: &lt;code&gt;web-checkout&lt;/code&gt; (React) and &lt;code&gt;billing-service&lt;/code&gt; (Go). Real features often touch more, but two are enough to show the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which repository does the specification live in?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you put the spec in &lt;code&gt;web-checkout&lt;/code&gt;, the backend engineer in &lt;code&gt;billing-service&lt;/code&gt; never sees it. If you put it in &lt;code&gt;billing-service&lt;/code&gt;, the frontend agent in &lt;code&gt;web-checkout&lt;/code&gt; invents its own expectations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The agent in &lt;code&gt;web-checkout&lt;/code&gt; invents a JSON field named &lt;code&gt;refund.partialAmount&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;An agent in &lt;code&gt;billing-service&lt;/code&gt; names the incoming field &lt;code&gt;amount_cents&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Both developers run local tests. Both suites pass. Both PRs merge.&lt;/li&gt;
&lt;li&gt;Staging deploys, and checkout fails on an unhandled contract mismatch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both agents followed instructions inside their silos. Lacking cross-repo visibility, they compiled ambiguity into production bugs.&lt;/p&gt;

&lt;p&gt;Nearly every tutorial on &lt;code&gt;AGENTS.md&lt;/code&gt; and Spec-Driven Development assumes your company lives in a single monorepo. But if your team operates across multiple repositories, you need cross-service context without a multi-year migration.&lt;/p&gt;

&lt;p&gt;The answer is the &lt;strong&gt;Sibling Meta-Repo&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Where Does the Context Lake Live? The &lt;code&gt;team-meta&lt;/code&gt; Pattern
&lt;/h2&gt;

&lt;p&gt;Create a lightweight Git repository checked out as a &lt;strong&gt;sibling directory&lt;/strong&gt; alongside your squad's service repositories.&lt;/p&gt;

&lt;p&gt;It acts as the squad's shared memory, holding cross-service feature specs and &lt;strong&gt;Architecture Decision Records (ADRs)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before AI, the reasons behind past architectural choices—&lt;em&gt;why checkout never calls the payment gateway synchronously, or why billing owns currency conversion&lt;/em&gt;—mostly lived inside a few senior developers' heads (and even the rest of the team rarely knew all of them). In AI-driven development, that same gap hits even harder because every agent session starts with a blank slate. &lt;strong&gt;ADRs are the alternative to relying on people's brains—capturing those decisions and trade-offs in a short, structured format that is far more reliable for humans and AI agents alike:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/work/payments-squad/
├── team-meta/                         # &amp;lt;-- Squad Brain (Context Lake + Harness)
│   ├── AGENTS.md                      # Topology, blast radius, contract rules
│   ├── repos.yaml                     # Registry of sibling service repos
│   ├── decisions/                     # Cross-repo ADRs (Architecture Decision Records)
│   │   └── ADR-0014-async-partial-refunds.md
│   └── planning/
│       ├── pi-current/                # (Optional: SAFe / multi-squad objectives)
│       ├── epics/
│       │   ├── EPIC-104-partial-refunds/
│       │   │   ├── epic.md                         # Goal, scope &amp;amp; dataflow
│       │   │   ├── PAY-217-partial-refunds.md      # Story 1: Request &amp;amp; pending UI
│       │   │   └── PAY-218-refund-status-webhook.md # Story 2: Async settlement update
│       │   └── EPIC-105-saved-payment-methods/
│       │       ├── epic.md
│       │       ├── PAY-224-card-tokenization.md
│       │       └── PAY-225-one-click-checkout.md
│       └── archive/                   # Compacted prior completed epics
├── web-checkout/                      # Sibling 1 (React — has local AGENTS.md)
├── billing-service/                   # Sibling 2 (Go — has local AGENTS.md)
└── other-services/                    # More siblings, same layout
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Two Dimensions &lt;code&gt;team-meta&lt;/code&gt; Solves
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;team-meta&lt;/code&gt; solves two problems that single-repo chat tools ignore:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Spatial Dimension (The "Where"):&lt;/strong&gt; Giving the Context Lake and Harness a physical home. Sibling repos hold the code, while &lt;code&gt;team-meta&lt;/code&gt; holds cross-repo ADRs, blast-radius rules, and shared specs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Temporal Dimension (The "When"):&lt;/strong&gt; Coordinating agents across time. Complex features are not built in 10-minute chat turns. &lt;code&gt;team-meta&lt;/code&gt; connects the multi-week plan in &lt;code&gt;planning/epics/&lt;/code&gt; to 1-to-2 day slices like &lt;code&gt;PAY-217&lt;/code&gt;, so an agent picking up frontend work on Tuesday respects the backend contract decided on Monday.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The sibling meta-repo lifts Part 1's three harness pillars to the cross-repo boundary:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Harness Pillar&lt;/th&gt;
&lt;th&gt;Repo-Local (&lt;code&gt;billing-service&lt;/code&gt;)&lt;/th&gt;
&lt;th&gt;Cross-Repo (&lt;code&gt;team-meta&lt;/code&gt;)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context Lake&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Local modules, stack dependencies, owned API schema&lt;/td&gt;
&lt;td&gt;Squad topology map, service ownership, cross-repo ADRs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Way of Working&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Local linting, test runners, code formatting&lt;/td&gt;
&lt;td&gt;Multi-repo change sequence, contract-first rule&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Verification Rig&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Local unit and integration tests&lt;/td&gt;
&lt;td&gt;Cross-repo contract checks across sibling checkouts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The Layering Rule
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo-level &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/strong&gt; defines &lt;em&gt;how to build, lint, and test that specific stack&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;team-meta/AGENTS.md&lt;/code&gt;&lt;/strong&gt; defines &lt;em&gt;how services collaborate&lt;/em&gt;: service ownership, change sequence, and blast-radius rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A small registry, &lt;code&gt;repos.yaml&lt;/code&gt;, lists the sibling repositories so developers and CI work from the same layout.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Where Do Cross-Repo Specs &amp;amp; ADRs Go?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A. Epics, Stories, and Contract Ownership
&lt;/h3&gt;

&lt;p&gt;An Epic is a directory. Its &lt;code&gt;epic.md&lt;/code&gt; holds the overall goal and system flow, and each story nested underneath is a 1-to-2 day slice that names the repositories it touches and the order they change in. (If your organization uses SAFe, &lt;code&gt;planning/pi-current/&lt;/code&gt; tracks cross-squad dependencies; under Scrum or Kanban, omit it.)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# PAY-217: Partial Refunds&lt;/span&gt;
Repos: &lt;span class="sb"&gt;`billing-service`&lt;/span&gt;, &lt;span class="sb"&gt;`web-checkout`&lt;/span&gt;

&lt;span class="gu"&gt;### Change Order&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; &lt;span class="sb"&gt;`billing-service`&lt;/span&gt;: Add &lt;span class="sb"&gt;`POST /v2/refunds`&lt;/span&gt; endpoint and update API schema.
&lt;span class="p"&gt;2.&lt;/span&gt; &lt;span class="sb"&gt;`web-checkout`&lt;/span&gt;: Add the amount input; call the new endpoint.

&lt;span class="gu"&gt;### Acceptance Criteria&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; [ ] Accepts &lt;span class="sb"&gt;`{ "order_id": string, "amount_cents": int }`&lt;/span&gt;.
&lt;span class="p"&gt;-&lt;/span&gt; [ ] Returns an asynchronous pending status with a refund tracking ID.
&lt;span class="p"&gt;-&lt;/span&gt; [ ] Checkout shows a pending state and never waits for settlement.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Keep Code and API Schemas in the Service Repos
&lt;/h4&gt;

&lt;p&gt;Do not copy code or API schemas into &lt;code&gt;team-meta&lt;/code&gt;. Maintaining duplicate schemas creates two sources of truth and guarantees drift.&lt;/p&gt;

&lt;p&gt;Instead, each service repository stays the single source of truth for its own API definition. The story spec in &lt;code&gt;team-meta&lt;/code&gt; simply states &lt;em&gt;what is changing&lt;/em&gt; and &lt;em&gt;which repository changes first&lt;/em&gt;, while the actual code and schema changes happen inside &lt;code&gt;billing-service&lt;/code&gt; and &lt;code&gt;web-checkout&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  B. Cross-Repo ADRs in Practice: Negative Constraints
&lt;/h3&gt;

&lt;p&gt;Consider a rule that usually lives in team folklore:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Never make checkout wait for a refund to finish processing. External payment gateways can be slow under peak load, so refunds must run asynchronously."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Without that context, an AI agent asked to add partial refunds will write the obvious synchronous version: checkout calls billing, billing calls the gateway, and checkout waits for the answer. Local mocks respond instantly, so tests pass. In production, a slow gateway stalls the storefront.&lt;/p&gt;

&lt;p&gt;This is why ADRs belong in &lt;code&gt;team-meta/decisions/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Alongside the usual context and decision, include the section that matters most for AI agents, &lt;strong&gt;Rejected Alternatives&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# ADR-0014: Asynchronous Partial Refunds&lt;/span&gt;
Status: Accepted

Context: External payment gateways can respond slowly during peak sales events.
Decision: &lt;span class="sb"&gt;`billing-service`&lt;/span&gt; queues the refund and returns a pending status
at once. &lt;span class="sb"&gt;`web-checkout`&lt;/span&gt; shows a pending state.
Consequences: Refunds settle asynchronously; customers see the result later.

Rejected Alternatives:
&lt;span class="p"&gt;-&lt;/span&gt; Waiting synchronously for settlement inside the checkout request was
  EXPLICITLY REJECTED, as slow gateway responses block the checkout flow.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;ADR-0014&lt;/code&gt; gives the agent an explicit &lt;strong&gt;negative constraint&lt;/strong&gt;: it knows what &lt;em&gt;not&lt;/em&gt; to build before it writes code.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Coherent Agent Context Without a Monorepo
&lt;/h2&gt;

&lt;p&gt;There are two ways to work with &lt;code&gt;team-meta&lt;/code&gt;, depending on the task.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-Repo Work: Start in &lt;code&gt;team-meta&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;When planning or building a feature that spans multiple services, start in &lt;code&gt;team-meta&lt;/code&gt; with the sibling checkouts attached to your workspace. The agent reads the shared story spec and ADRs first, then follows &lt;code&gt;team-meta/AGENTS.md&lt;/code&gt; to inspect the local rules of each repository listed on the story.&lt;/p&gt;

&lt;h3&gt;
  
  
  Single-Repo Work: Attach &lt;code&gt;team-meta&lt;/code&gt; on Demand
&lt;/h3&gt;

&lt;p&gt;Most daily work in a service repo—bug fixes, local refactors, UI tweaks—is standalone and needs no cross-repo context. Preloading &lt;code&gt;team-meta&lt;/code&gt; on every session wastes context window space.&lt;/p&gt;

&lt;p&gt;When a single-repo task touches a shared API boundary, stay in your service repository and attach &lt;code&gt;../team-meta&lt;/code&gt; on demand (for example, by adding the folder to your IDE workspace or running &lt;code&gt;/add-dir ../team-meta&lt;/code&gt; in a CLI agent). Then point the agent at the specific spec or ADR it should read.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. "Why Not Just...?" The Alternatives Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Setup Cost&lt;/th&gt;
&lt;th&gt;Reversibility&lt;/th&gt;
&lt;th&gt;Agent Sees Cross-Repo Intent?&lt;/th&gt;
&lt;th&gt;Drift Risk&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monorepo Migration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very High (months/years)&lt;/td&gt;
&lt;td&gt;Low (hard to reverse)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Git Submodules&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Medium (complex UX)&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Partially (code yes, intent no)&lt;/td&gt;
&lt;td&gt;High (detached HEADs)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Custom MCP Server Mesh&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Medium to High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Only what MCP tools expose&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sibling Meta-Repo (&lt;code&gt;team-meta&lt;/code&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Low (single git init)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;High (non-invasive)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes (ADRs, specs, and sibling paths)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Low (once the contract gate runs in CI)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Steelmanning the Monorepo Migration
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;If your organization can migrate to a unified monorepo, evaluate it.&lt;/strong&gt; Teams at Google and Meta benefit from atomic commits and single-root navigation. But &lt;strong&gt;most enterprise teams cannot migrate this quarter.&lt;/strong&gt; &lt;code&gt;team-meta&lt;/code&gt; delivers cross-repo context today without touching build systems.&lt;/p&gt;

&lt;p&gt;MCP earns its place for external systems like Jira and Sentry. For files already on disk, a local checkout is faster, with no network hop and no extra tool schemas.&lt;/p&gt;

&lt;p&gt;Most importantly, unlike the other alternatives in the table, &lt;strong&gt;this pattern requires zero permission to try.&lt;/strong&gt; Because &lt;code&gt;team-meta&lt;/code&gt; sits outside your service repositories, any developer on the team can create it locally, experiment on a single cross-repo ticket without altering a single file or CI pipeline in the existing project repos, and onboard the rest of the squad once the results speak for themselves.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Keeping the Meta-Repo Alive (Anti-Rot)
&lt;/h2&gt;

&lt;p&gt;Three practices prevent &lt;code&gt;team-meta&lt;/code&gt; from decaying:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Documentation as Post-Mortem:&lt;/strong&gt; When an agent produces hallucinated code, commit a 5-line PR to &lt;code&gt;team-meta/decisions/&lt;/code&gt; or &lt;code&gt;team-meta/AGENTS.md&lt;/code&gt; so future agents do not repeat it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Contract CI Hook:&lt;/strong&gt; If a service PR modifies an API contract, require it to cite an active Story or ADR from &lt;code&gt;team-meta&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprint Compaction:&lt;/strong&gt; Archive completed stories at iteration boundaries.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  6. Full Circle: How the Partial Refund Lands
&lt;/h2&gt;

&lt;p&gt;Revisit the opening failure: two agents inventing conflicting fields (&lt;code&gt;refund.partialAmount&lt;/code&gt; vs. &lt;code&gt;amount_cents&lt;/code&gt;), passing local tests, and breaking staging.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;team-meta&lt;/code&gt;, that failure disappears:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sequence Locked:&lt;/strong&gt; &lt;code&gt;PAY-217&lt;/code&gt; establishes that &lt;code&gt;billing-service&lt;/code&gt; updates its API schema first with &lt;code&gt;amount_cents&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails Active:&lt;/strong&gt; &lt;code&gt;ADR-0014&lt;/code&gt; stops the agent from blocking checkout on settlement, queuing the refund asynchronously and showing a pending state instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Repo Visibility:&lt;/strong&gt; Working from &lt;code&gt;team-meta&lt;/code&gt;, the checkout agent reads billing's canonical schema instead of guessing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-PR Gating:&lt;/strong&gt; Cross-repo contract checks catch breaking changes before a pull request opens.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ambiguity was resolved in &lt;code&gt;team-meta&lt;/code&gt; before the model generated a single line of code.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. The Bottom Line: Moving Beyond the Autocomplete Era
&lt;/h2&gt;

&lt;p&gt;This way of working is not free. Crisp specs, cross-repo ADRs, and a curated meta-repo take real discipline.&lt;/p&gt;

&lt;p&gt;If your team only uses AI as a &lt;strong&gt;micro-level typing assistant&lt;/strong&gt; for a regex or test boilerplate, your existing workflow is fine. You do not need a meta-repo for autocomplete.&lt;/p&gt;

&lt;p&gt;The danger is the middle ground: &lt;strong&gt;attempting to use AI agents on multi-repo features while keeping your old, casual workflow.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Without a version-controlled Context Lake and verification harness, teams feel faster while cycle times degrade: models generate plausible architectural debt, and senior engineers spend their afternoons untangling broken contracts in review queues.&lt;/p&gt;

&lt;p&gt;Teams face a bimodal choice: keep AI as an individual micro-helper, or make the structural investment to work AI-native at the system level. Half-measures accelerate code generation while crippling delivery.&lt;/p&gt;

&lt;p&gt;For the vast majority of enterprise teams working across multiple repositories without a Big Tech monorepo, a lightweight cross-repo layer like &lt;code&gt;team-meta&lt;/code&gt; is not just useful—it is essential once you move beyond autocomplete. And because it sits entirely outside your existing repositories, any developer can try it out on their next feature without disturbing the existing way of working in other repos.&lt;/p&gt;

&lt;p&gt;By anchoring your squad's context, ADRs, and contracts in a sibling meta-repo, you give AI agents the one thing they cannot hallucinate on their own: the collective architectural memory of your team.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>microservices</category>
      <category>harness</category>
    </item>
    <item>
      <title>Why AI Coding Feels Faster (While Your Sprints Slow Down)</title>
      <dc:creator>binith</dc:creator>
      <pubDate>Thu, 22 Oct 2026 21:11:16 +0000</pubDate>
      <link>https://dev.to/binith_70ad15e12e961ea7d4/why-ai-coding-feels-faster-while-your-sprints-slow-down-23a1</link>
      <guid>https://dev.to/binith_70ad15e12e961ea7d4/why-ai-coding-feels-faster-while-your-sprints-slow-down-23a1</guid>
      <description>&lt;p&gt;If you work on a mature codebase, you have probably felt the weird disconnect around AI coding tools over the past year. In the moment, sitting in your IDE, you feel noticeably faster. You ask an agent for a new endpoint or a state machine refactor, and 200 lines of clean-looking TypeScript or Java appear in ten seconds. &lt;/p&gt;

&lt;p&gt;Then you look at your team's sprint board on Friday. Cycle times haven't moved. Pull request review queues are backed up worse than before, and subtle regression bugs keep slipping into staging.&lt;/p&gt;

&lt;p&gt;In a landmark randomized controlled trial conducted by METR (Model Evaluation &amp;amp; Threat Research), researchers put a stopwatch on experienced open-source developers working across mature codebases. Before starting, developers predicted that frontier AI tools would speed them up by 24%. Even after completing the tasks, they believed they had moved 20% faster.&lt;/p&gt;

&lt;p&gt;When researchers checked the stopwatch, tasks done with AI took &lt;strong&gt;19% longer&lt;/strong&gt; than tasks done without it.&lt;/p&gt;

&lt;p&gt;While tooling and base models have improved since that initial trial, newer industry data from DORA and developer productivity studies confirms that the core paradox has only intensified: &lt;strong&gt;teams are generating 30% to 40% more pull requests, but PR review turnaround times have doubled, and change failure rates remain elevated.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Writing syntax was never the real bottleneck in software engineering. When we prompt an LLM in an ungrounded chat window, we save twenty minutes of typing and spend the next two hours untangling hallucinated contracts, reviewing plausible-looking edge-case failures, and playing detective in integration tests.&lt;/p&gt;

&lt;p&gt;To turn AI from a noisy typing assistant into a dependable team multiplier, we have to confront an uncomfortable truth about a rule most of us have treated as sacred for twenty-five years.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The 180-Degree Inversion: When Code Becomes a Cheap Commodity
&lt;/h2&gt;

&lt;p&gt;For twenty-five years, software engineering culture has been anchored to one foundational line from the 2001 Agile Manifesto:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Working software over comprehensive documentation."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every developer, tech lead, and engineering manager has had this mantra drilled into their instincts: &lt;em&gt;Code is reality. Writing documentation is waste. If it isn't running in production, it doesn't matter.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In 2001, that was pure economic sanity. Human keystrokes were the scarcest resource on a software team. Translating business requirements into working C++ or Java took weeks of manual labor, while 50-page Word documents rotted the afternoon the first production patch was deployed. The source code was the only truth you could afford to trust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With AI agents, that economic reality has flipped 180 degrees.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today, syntax generation is practically free. An agent will happily emit 500 lines of syntactically valid code in thirty seconds for pennies. &lt;/p&gt;

&lt;p&gt;What is scarce and expensive now is &lt;strong&gt;unambiguous intent, domain invariants, and cross-service alignment&lt;/strong&gt;. When an agent breaks a downstream service, it rarely fails because the model forgot how to write a loop. It fails because the edge cases, business rules, and contract boundaries lived inside someone's head, an informal Slack message, or a vague two-sentence Jira ticket.&lt;/p&gt;

&lt;p&gt;Here is the radical shift most teams haven't internalized yet: &lt;strong&gt;application code is still something you commit and maintain, but it is no longer where primary intent lives. Code is now a generated artifact; the living specification is the actual source of truth.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Traditional Agile&lt;/th&gt;
&lt;th&gt;Spec-Driven AI Agile&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary Asset&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Application source code&lt;/td&gt;
&lt;td&gt;Living specs, schemas, invariants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Application Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hand-crafted artifact&lt;/td&gt;
&lt;td&gt;Verified compilation target&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Team Bottleneck&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Typing, syntax, boilerplate&lt;/td&gt;
&lt;td&gt;Spec precision, contract boundaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;User Story&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Advisory conversation starter&lt;/td&gt;
&lt;td&gt;Authoritative contract (&lt;code&gt;Given/When/Then&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;When Code Fails&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Patch code manually&lt;/td&gt;
&lt;td&gt;Fix spec or harness rules and re-run&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The Limits of the Compiler Analogy (Why Prompts Aren't Deterministic)
&lt;/h3&gt;

&lt;p&gt;It is tempting to look at this table and say: &lt;em&gt;"Great, so the LLM is just a C compiler."&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Every experienced engineer knows the catch: compilers are deterministic, but AI models roll dice. If you feed the exact same C source into &lt;code&gt;gcc&lt;/code&gt; twice, you get the exact same binary. But if you give an AI agent the exact same prompt twice, you might get a clean, idiomatic implementation at 10 AM, and an unhandled null pointer or hallucinated dependency at 2 PM.&lt;/p&gt;

&lt;p&gt;You cannot treat code as disposable bytecode when you still have to wake up and support it in production at 3 AM.&lt;/p&gt;

&lt;p&gt;This non-determinism is precisely why you cannot rely on casual chat prompting. Because the model is probabilistic, you must bound it on both sides. The living specification locks down the intent before the model acts, and deterministic automated verification bounds what is acceptable after it acts. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tight specifications narrow the model's solution space, while automated verification enforces correctness. That combination is what finally earns trust from the skeptics on your team.&lt;/strong&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  2. Beyond Chat: Demystifying the Harness Rig
&lt;/h2&gt;

&lt;p&gt;When teams first encounter problems with AI code quality, the initial reaction is usually to tweak the prompt: &lt;em&gt;"Be careful with error handling,"&lt;/em&gt; or &lt;em&gt;"Write production-grade clean code."&lt;/em&gt; When that fails, people dump whole folders into massive context windows, only to discover that flooding a model with hundreds of files causes severe distraction and makes the agent miss subtle constraints.&lt;/p&gt;

&lt;p&gt;The solution is not more clever chat prompting. It is understanding the core systems formula formalized by Thoughtworks Distinguished Engineer Birgitta Böckeler:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Agent = Model + Harness&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The model is the reasoning engine you rent from an AI lab. The &lt;strong&gt;Harness Rig&lt;/strong&gt; is the operational environment your team builds around that model.&lt;/p&gt;

&lt;p&gt;In practice, a harness is not just a test runner. A complete harness rig consists of three distinct pillars working together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Context Lake (What the agent knows):&lt;/strong&gt; Despite the grand name, a team Context Lake does not require an enterprise vector database. It is simply your Git-tracked repository of truth (repo map, API schemas, and active feature specs) fed to the model just-in-time rather than dumped in a prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Way of Working (How the agent behaves):&lt;/strong&gt; The team's conventions, tool access, allowed libraries, and operational boundaries (what the agent can do autonomously vs. when it must ask a human).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Verification Rig (How the agent proves correctness):&lt;/strong&gt; The deterministic compiler checks, linters, and test suites that inspect the output and feed errors back to the model for self-correction.
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["Context Lake&amp;lt;br/&amp;gt;AGENTS.md, schemas, living story spec"] --&amp;gt;|"just-in-time context"| B["Coding Agent"]
    B --&amp;gt;|"proposed diff"| C{"Harness Rig: verify.sh&amp;lt;br/&amp;gt;tests, linters, boundary checks"}
    C --&amp;gt;|"fail: stderr fed back"| B
    C --&amp;gt;|"pass"| D["Human review&amp;lt;br/&amp;gt;PR + spec"]&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  The Two Levels of Intent You Actually Need
&lt;/h3&gt;

&lt;p&gt;Most developers reading about harnesses think: &lt;em&gt;"We don't have custom harness infrastructure. We barely have a generic &lt;code&gt;AGENTS.md&lt;/code&gt; file that Cursor or Claude Code generated for us."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You don't need complex internal platforms to start. To get dependable, repeatable output from an agent, you only need to provide two living files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo-Level Intent (&lt;code&gt;AGENTS.md&lt;/code&gt;):&lt;/strong&gt; This is your team's Way of Working. It doesn't need to be a 1,000-page manual. It simply defines your stack conventions, architectural boundaries (which services can talk to which databases), forbidden dependencies, and how to run tests. It acts as the agent's institutional memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature-Level Intent (The Story Spec):&lt;/strong&gt; This is the contract for the task. It lives in the repository alongside the code, capturing exact endpoints, request/response payloads, and acceptance criteria in unambiguous &lt;code&gt;Given/When/Then&lt;/code&gt; terms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without written repo intent, every agent session starts like an intern who was hired five minutes ago and never read your codebase. Without written feature intent, the agent is forced to guess your business logic. Providing both is the absolute minimum requirement for consistent AI delivery.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Shift-Left Refinement Without Falling Into Waterfall
&lt;/h2&gt;

&lt;p&gt;Whenever you tell experienced engineers that specifications must become the primary source artifact, a red flag immediately goes up:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Wait. Isn't writing detailed specifications before coding just 1990s Big Design Up Front (Waterfall) dressed up in Markdown?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a valid danger. If a team tries to write 50-page markdown documents for an entire quarter upfront, the LLM will miss half the requirements, and engineers will spend their lives maintaining stale prose.&lt;/p&gt;

&lt;p&gt;The difference between modern Spec-Driven Agile and 1990s Waterfall comes down to &lt;strong&gt;batch size&lt;/strong&gt; and &lt;strong&gt;collaborative refinement&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tiny Batch Size:&lt;/strong&gt; Waterfall attempted to freeze six months of requirements across an entire release. Spec-Driven Agile bounds the batch size to a single vertical user story (one or two days of execution), demanding crisp completeness on that slice alone before implementation begins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Four Amigos":&lt;/strong&gt; In traditional Scrum, refinement often rushes through tickets, slapping points on a two-sentence Jira description because &lt;em&gt;"we'll figure out the details when we start coding."&lt;/em&gt; But feeding a two-sentence ticket to an AI agent guarantees hallucinated code. High-leverage squads bring the agent into backlog refinement as the &lt;strong&gt;4th Amigo&lt;/strong&gt; alongside Product, Dev, and QA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In refinement, the agent is strictly forbidden from writing implementation code. Instead, it inspects the draft ticket against the Context Lake to surface missing contracts and hidden assumptions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"This ticket introduces a partial refund, but &lt;code&gt;billing-service&lt;/code&gt; OpenAPI v2 only defines full-void webhooks. Which service versions its schema first?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"What is the fallback behavior if the payment gateway times out after 5,000ms?"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Pragmatic Jira Bridge
&lt;/h3&gt;

&lt;p&gt;Pushing detailed specifications into Git introduces an immediate cultural challenge: &lt;strong&gt;Product Managers and Scrum Masters live in Jira, and they will not review Git pull requests.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Expecting non-engineers to maintain Markdown in Git causes process deadlock. Leaving specifications solely in unstructured Jira descriptions blinds your agents. Practical squads bridge this with a clear split:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developers maintain the technical spec in Git:&lt;/strong&gt; During refinement or upon starting a ticket, the developer pairs with the agent to produce the authoritative technical story specification in Git (covering touched repos, contract changes, edge cases, and verification commands).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync a crisp summary to Jira:&lt;/strong&gt; Once the spec is committed in Git, a short, readable summary is synced back into the Jira ticket (linked directly to the Git spec file). Product managers and stakeholders track status and acceptance criteria on their familiar boards, while the agent executes against the version-controlled specification.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Monorepo Assumption vs. Multi-Repo Reality
&lt;/h2&gt;

&lt;p&gt;Flipping our focus from raw chat prompting to a Git-backed Context Lake, a deterministic Harness Rig, and shift-left story specs provides a predictable foundation for AI development.&lt;/p&gt;

&lt;p&gt;Until you try to implement it across your real architecture.&lt;/p&gt;

&lt;p&gt;Nearly every tutorial, benchmark, and demo on &lt;code&gt;AGENTS.md&lt;/code&gt; and Spec-Driven Development quietly assumes your entire company lives inside a &lt;strong&gt;single monorepo&lt;/strong&gt;. They show an agent running in one root folder, inspecting one directory tree, and executing one test command.&lt;/p&gt;

&lt;p&gt;In practice, a vast majority of enterprise teams operate across multi-repo (polyrepo) architectures. A single business feature frequently cuts across a frontend repo, multiple backend microservices, and shared infrastructure definitions—each with its own repository, permissions, and CI pipeline.&lt;/p&gt;

&lt;p&gt;When your system spans multiple repositories, where does your Context Lake live? Where do you store cross-repo story specs? And how do you give an agent coherent context across repositories without embarking on a painful monorepo migration?&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Part 2&lt;/strong&gt;, we will break down the lightweight architecture that solves this: the &lt;strong&gt;Sibling Meta-Repo (&lt;code&gt;../team-meta&lt;/code&gt;)&lt;/strong&gt; paired with multi-directory workspace mounting (&lt;strong&gt;&lt;code&gt;/add-dir&lt;/code&gt;&lt;/strong&gt;).&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>agile</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
