<?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: Sapan Mozammel</title>
    <description>The latest articles on DEV Community by Sapan Mozammel (@sapan_mozammel).</description>
    <link>https://dev.to/sapan_mozammel</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%2F4119636%2F376e482b-45a4-43de-8eb8-f7c0e718f954.png</url>
      <title>DEV Community: Sapan Mozammel</title>
      <link>https://dev.to/sapan_mozammel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sapan_mozammel"/>
    <language>en</language>
    <item>
      <title>Stop AI Coding Assistants from Drifting Off Your Architecture</title>
      <dc:creator>Sapan Mozammel</dc:creator>
      <pubDate>Tue, 15 Sep 2026 09:41:10 +0000</pubDate>
      <link>https://dev.to/sapan_mozammel/stop-ai-coding-assistants-from-drifting-off-your-architecture-led</link>
      <guid>https://dev.to/sapan_mozammel/stop-ai-coding-assistants-from-drifting-off-your-architecture-led</guid>
      <description>&lt;h1&gt;
  
  
  Stop AI Coding Assistants from Drifting Off Your Architecture
&lt;/h1&gt;

&lt;p&gt;You're 15 turns into a session with Cursor. The AI is sharp, moving fast, and suddenly it overwrites a core utility file with a "simplified" version that breaks three downstream modules. You catch it before it commits, but the damage is done: the assistant forgot a constraint you set ten messages ago.&lt;/p&gt;

&lt;p&gt;This happens to everyone using Cursor, Claude Code, Copilot, or any conversational AI coding tool. And it's not because the models aren't smart enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem: Context Isn't Sticky
&lt;/h2&gt;

&lt;p&gt;AI coding assistants work brilliantly at what they were designed to do: follow instructions in a conversation. But conversations have limited memory. After 5–10 turns, the model's context window has cycled through enough new information that architectural constraints you spelled out at the top get deprioritized.&lt;/p&gt;

&lt;p&gt;A single-file edit? The model nails it. But multi-file changes expose the weakness. The assistant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forgets that your codebase uses a specific error-handling pattern&lt;/li&gt;
&lt;li&gt;Doesn't realize a utility already exists and re-implements it&lt;/li&gt;
&lt;li&gt;Applies a framework convention that conflicts with your custom setup&lt;/li&gt;
&lt;li&gt;Makes changes to File A without checking if they break Files B, C, and D&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The assistant isn't hallucinating randomly. It's operating on incomplete context. And every time you re-explain the rules, you're not actually fixing the problem—you're working around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How This Cost Me Hours (And Probably Cost You Too)
&lt;/h2&gt;

&lt;p&gt;I was building a Next.js application with Claude Code, Cursor, and GitHub Copilot. Each tool reads its own config format:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cursor reads &lt;code&gt;.cursorrules&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Claude Code reads &lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Copilot reads &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But here's the thing: they were &lt;em&gt;different&lt;/em&gt;. A rule I added to &lt;code&gt;.cursorrules&lt;/code&gt; didn't exist in &lt;code&gt;CLAUDE.md&lt;/code&gt;. When I switched tools mid-session, the new assistant had a different mental model of my project.&lt;/p&gt;

&lt;p&gt;Over a week, this led to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Silent regressions:&lt;/strong&gt; Changes that looked good but violated patterns established in another part of the codebase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeated explanations:&lt;/strong&gt; I had to re-state architectural decisions for every tool switch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wasted review cycles:&lt;/strong&gt; Code reviews caught drift that should have been prevented upstream&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I realized: the problem isn't the AI. The problem is that context is treated as a &lt;em&gt;conversational artifact&lt;/em&gt; instead of a &lt;em&gt;protocol contract&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Deterministic Verification Before Execution
&lt;/h2&gt;

&lt;p&gt;What if, instead of relying on the assistant's memory, you made it verify its context &lt;em&gt;before&lt;/em&gt; touching code?&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Auterix&lt;/strong&gt; to enforce a deterministic 4-stage workflow:&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 1: Research &amp;amp; Architecture Verification
&lt;/h3&gt;

&lt;p&gt;Before writing code, the assistant must state what it's about to change and &lt;em&gt;why&lt;/em&gt;. It re-reads the relevant parts of your codebase, checks &lt;code&gt;.cursorrules&lt;/code&gt; and &lt;code&gt;CLAUDE.md&lt;/code&gt;, and confirms alignment with the project's constraints.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Example: Assistant reads the project spec first&lt;/span&gt;
&lt;span class="c1"&gt;// "I'm about to modify the error handler in utils/errors.ts&lt;/span&gt;
&lt;span class="c1"&gt;// because the auth flow needs to return a 401 instead of 403.&lt;/span&gt;
&lt;span class="c1"&gt;// I verified: &lt;/span&gt;
&lt;span class="c1"&gt;// - Pattern matches existing error throws in src/middleware/auth.ts&lt;/span&gt;
&lt;span class="c1"&gt;// - Follows the ErrorResponse type in types/index.ts&lt;/span&gt;
&lt;span class="c1"&gt;// - Doesn't conflict with the global error boundary"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Stage 2: Plan Formulation
&lt;/h3&gt;

&lt;p&gt;The assistant generates an explicit diff showing exactly what it will change. You see the scope before execution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 3: Explicit Confirmation
&lt;/h3&gt;

&lt;p&gt;You approve. The model doesn't touch a single file without your sign-off.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 4: Execution &amp;amp; Validation
&lt;/h3&gt;

&lt;p&gt;Only after confirmation does the assistant execute. It runs tests, checks for cascading failures, and reports back.&lt;/p&gt;

&lt;p&gt;This turns AI coding from "hope the assistant remembered your constraints" into "the assistant &lt;em&gt;proved&lt;/em&gt; it understood them."&lt;/p&gt;

&lt;h2&gt;
  
  
  How Auterix Works
&lt;/h2&gt;

&lt;p&gt;Auterix synchronizes your rules &lt;em&gt;once&lt;/em&gt;, across all 21 AI coding tools. You define your architecture in a single canonical file, and Auterix ensures every tool sees the same constraints.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install and initialize&lt;/span&gt;
npx auterix init

&lt;span class="c"&gt;# Syncs .cursorrules, CLAUDE.md, .windsurfrules, and .agents/&lt;/span&gt;
&lt;span class="c"&gt;# from a single spec&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, run the diagnostic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx auterix doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Config Sync&lt;/strong&gt; — Are all tool configs in sync?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git Hooks&lt;/strong&gt; — Are pre-commit guards in place?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Files&lt;/strong&gt; — Do .cursorrules and CLAUDE.md match?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context Hash&lt;/strong&gt; — SHA-256 lock: has your context changed since last check?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool Detection&lt;/strong&gt; — Which AI tools are configured in this repo?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drift Detection&lt;/strong&gt; — Are there uncommitted changes that violate your rules?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timestamp Validation&lt;/strong&gt; — When was the context last verified?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rollback Safety&lt;/strong&gt; — Can you revert to a known-good state?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If any check fails, the diagnostic tells you why. No more silent drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Web Studio: Test Without Installing
&lt;/h2&gt;

&lt;p&gt;Don't want to install the CLI yet? Use the Auterix Web Studio.&lt;/p&gt;

&lt;p&gt;Select your stack (Next.js, FastAPI, Cloudflare Workers, React Native, AI agent pipeline), configure your rules, and export a ready-to-use &lt;code&gt;.cursorrules&lt;/code&gt; file. No CLI install, no setup friction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source, Zero Dependencies
&lt;/h2&gt;

&lt;p&gt;Auterix is 100% open-source (MIT license), pure Node.js ESM, no runtime dependencies. It's a 2-minute install and immediately valuable.&lt;/p&gt;

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

&lt;p&gt;✅ &lt;strong&gt;Context drift:&lt;/strong&gt; Assistants can't forget rules they verify before executing&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Multi-tool friction:&lt;/strong&gt; Sync once, use everywhere&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Silent regressions:&lt;/strong&gt; Drift detection catches violations early&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Review overhead:&lt;/strong&gt; The assistant is pre-audited before you see code&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Context pollution:&lt;/strong&gt; Hash locks prevent stale context from being used  &lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Today
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx auterix init
npx auterix doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or test the Web Studio: &lt;a href="https://auterix.vercel.app" rel="noopener noreferrer"&gt;https://auterix.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repo is on GitHub: &lt;a href="https://github.com/SapanMozammel/auterix" rel="noopener noreferrer"&gt;https://github.com/SapanMozammel/auterix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm also building &lt;strong&gt;Auterix Pro&lt;/strong&gt; — a commercial tier with production blueprints, pre-built guards for common frameworks, and CI/CD integration for teams. But the core is open and free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback Welcome
&lt;/h2&gt;

&lt;p&gt;I'd love to hear from you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which drift patterns have frustrated you most?&lt;/li&gt;
&lt;li&gt;Which AI tools are you using?&lt;/li&gt;
&lt;li&gt;Would you use something like this in your workflow?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop a comment below or open an issue on GitHub.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codingassistants</category>
      <category>workflow</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Stop AI Context Drift: A Zero-Dependency Universal Protocol for 21 AI Tools</title>
      <dc:creator>Sapan Mozammel</dc:creator>
      <pubDate>Sat, 12 Sep 2026 14:05:33 +0000</pubDate>
      <link>https://dev.to/sapan_mozammel/stop-ai-context-drift-a-zero-dependency-universal-protocol-for-21-ai-tools-3kg6</link>
      <guid>https://dev.to/sapan_mozammel/stop-ai-context-drift-a-zero-dependency-universal-protocol-for-21-ai-tools-3kg6</guid>
      <description>&lt;h3&gt;
  
  
  4 Core Capabilities in Auterix
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Universal Protocol (21 Native AI Adapters)
&lt;/h4&gt;

&lt;p&gt;You define your project guidelines, tech stack invariants, and coding standards once in &lt;code&gt;.ai/rules/&lt;/code&gt;. Auterix automatically compiles them into native config files for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; (&lt;code&gt;.cursorrules&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code &amp;amp; Claude Desktop&lt;/strong&gt; (&lt;code&gt;CLAUDE.md&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Copilot&lt;/strong&gt; (&lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Windsurf, Cline, Roo Code, Antigravity, Trae, Devin&lt;/strong&gt;, and 15 others.&lt;/li&gt;
&lt;li&gt;Uses SHA-256 cryptographic lockfile tracking to detect rule tampering and drift.
#### 2. &lt;code&gt;npx auterix doctor&lt;/code&gt; (AI Readiness Scorecard)
Run a single command in your terminal to get an instant 8-check diagnostic scorecard (0–100%):&lt;/li&gt;
&lt;li&gt;Adapter synchronization status&lt;/li&gt;
&lt;li&gt;Token-distilled schema presence&lt;/li&gt;
&lt;li&gt;Cross-agent memory integrity&lt;/li&gt;
&lt;li&gt;Git pre-commit hooks&lt;/li&gt;
&lt;li&gt;Secret leak scans&lt;/li&gt;
&lt;li&gt;Modular role definitions
#### 3. Automated Git-Hook Memory Ingestion
Never repeat an architectural decision to your AI twice. When committing code, simply add the &lt;code&gt;--ai-note&lt;/code&gt; flag:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"feat: migrate to drizzle with pgvector --ai-note architecture"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Auterix automatically intercepts the commit hook and records the architectural rationale directly into &lt;code&gt;.ai/memory.md&lt;/code&gt; so future AI sessions know &lt;em&gt;why&lt;/em&gt; a decision was made.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Turnkey GitHub Action
&lt;/h4&gt;

&lt;h2&gt;
  
  
  Auterix includes a headless CI check (&lt;code&gt;action.yml&lt;/code&gt;) that verifies SHA-256 context compliance on Pull Requests in &lt;code&gt;&amp;lt;1.5s&lt;/code&gt; with &lt;code&gt;$0.00&lt;/code&gt; compute overhead.
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Try It in 5 Seconds
&lt;/h3&gt;

&lt;p&gt;You don't need to install anything globally. Run the guided initialization wizard directly in any existing project root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx auterix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;⭐️ &lt;strong&gt;GitHub Repository (MIT)&lt;/strong&gt;: &lt;a href="https://github.com/SapanMozammel/auterix" rel="noopener noreferrer"&gt;https://github.com/SapanMozammel/auterix&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Interactive Web Studio&lt;/strong&gt;: &lt;a href="https://auterix.vercel.app" rel="noopener noreferrer"&gt;https://auterix.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🟣 &lt;strong&gt;Open VSX (Cursor / Windsurf)&lt;/strong&gt;: &lt;a href="https://open-vsx.org/extension/auterix/auterix-workflow" rel="noopener noreferrer"&gt;https://open-vsx.org/extension/auterix/auterix-workflow&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔵 &lt;strong&gt;VS Code Marketplace&lt;/strong&gt;: &lt;a href="https://marketplace.visualstudio.com/items?itemName=auterix.auterix-workflow" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=auterix.auterix-workflow&lt;/a&gt;
I’d love to hear your feedback! How are you and your team currently handling context synchronization across different AI tools?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How I parsed all 50 US state landlord codes and built an offline legal defense suite for renters</title>
      <dc:creator>Sapan Mozammel</dc:creator>
      <pubDate>Thu, 10 Sep 2026 16:07:30 +0000</pubDate>
      <link>https://dev.to/sapan_mozammel/how-i-parsed-all-50-us-state-landlord-codes-and-built-an-offline-legal-defense-suite-for-renters-31ob</link>
      <guid>https://dev.to/sapan_mozammel/how-i-parsed-all-50-us-state-landlord-codes-and-built-an-offline-legal-defense-suite-for-renters-31ob</guid>
      <description>&lt;p&gt;Hey everyone! 👋&lt;/p&gt;

&lt;p&gt;I'm a full-stack developer, and recently I got fed up seeing friends and fellow renters repeatedly get ripped off by landlords — especially when it comes to bogus security deposit deductions, ignored emergency repairs, and informal roommate disputes.&lt;/p&gt;

&lt;p&gt;Most tenants don't realize that US landlord-tenant law is heavily statutory: landlords have strict legal return deadlines (14 to 30 days depending on the state), and missing them often entitles the tenant to 2x or 3x statutory multiplier damages in Small Claims Court. But almost nobody can afford a $300/hr attorney retainer to recover an $1,800 deposit.&lt;/p&gt;

&lt;p&gt;Instead of building a bloated SaaS that requires user logins, databases, and monthly subscriptions, I decided to build &lt;strong&gt;&lt;a href="https://tenantdefense.gumroad.com" rel="noopener noreferrer"&gt;Tenant Defense&lt;/a&gt;&lt;/strong&gt; as a collection of lightweight, offline-first, client-side tools:&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Built:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive HTML Demand Letter Generators:&lt;/strong&gt; Standalone, zero-install browser apps that run locally on any device, ask structured legal dispute questions, auto-populate the exact state civil codes, and generate formal legal demand notices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;50-State Statutory Matrix:&lt;/strong&gt; A fast lookup table detailing exact return windows, itemization requirements, and statutory penalty multipliers across all 50 US states.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repair Clocks &amp;amp; Habitability Kits:&lt;/strong&gt; Formal notice generators that legally start the statutory countdown on landlord cure clocks under the Implied Warranty of Habitability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also released the &lt;strong&gt;&lt;a href="https://tenantdefense.gumroad.com/l/deadlines" rel="noopener noreferrer"&gt;50-State Statutory Deadline Cheat Sheet&lt;/a&gt;&lt;/strong&gt; completely free as an open community resource for anyone moving out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Takeaways:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Offline-First / Zero Dependencies:&lt;/strong&gt; For sensitive legal templates, users prefer not uploading their personal lease agreements or addresses to a remote cloud database. Building client-side single-file HTML/JS applications provided instant trust and privacy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Statutory Parsing:&lt;/strong&gt; Mapping legal statutes across 50 individual state legal codes was an intense research problem, but structuring the data into actionable decision trees makes complex legal disputes accessible to non-lawyers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Would love feedback from other developers on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The UX of client-side HTML self-help generators vs full-blown web apps.&lt;/li&gt;
&lt;li&gt;What other self-help consumer protection areas could benefit from client-side automation?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the free cheat sheet &lt;a href="https://tenantdefense.gumroad.com/l/deadlines" rel="noopener noreferrer"&gt;here&lt;/a&gt; or explore the full suite at &lt;a href="https://tenantdefense.gumroad.com" rel="noopener noreferrer"&gt;tenantdefense.gumroad.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>career</category>
    </item>
  </channel>
</rss>
