{
  "@context": "https://schema.org",
  "@type": [
    "NewsArticle",
    "TechArticle"
  ],
  "id": "ed_when-coding-agent-requirements-change-what-should-survive",
  "canonicalUrl": "https://pseedr.com/devtools/when-coding-agent-requirements-change-what-should-survive",
  "alternateFormats": {
    "markdown": "https://pseedr.com/devtools/when-coding-agent-requirements-change-what-should-survive.md",
    "json": "https://pseedr.com/devtools/when-coding-agent-requirements-change-what-should-survive.json"
  },
  "title": "When Coding-Agent Requirements Change, What Should Survive?",
  "subtitle": "When a coding-agent task changes direction, the active specification, the code, the conversation and the earlier checks need separate decisions. Four practitioners explain how they find expired assumptions, keep compatible work and establish whether the revised result meets the new requirement.",
  "category": "devtools",
  "datePublished": "2026-10-29T18:13:23.877Z",
  "dateModified": "2026-10-29T18:13:23.877Z",
  "author": "PSEEDR",
  "tags": [
    "AI coding agents",
    "engineering workflow"
  ],
  "readTimeMinutes": 13,
  "wordCount": 2706,
  "contentTier": "free",
  "isAccessibleForFree": true,
  "editorialFormat": "analysis",
  "qualityFlags": [],
  "sourceCount": 3,
  "newsQualityEligible": true,
  "sourceUrls": [
    "https://code.claude.com/docs/en/checkpointing",
    "https://www.anthropic.com/research/effective-context-engineering-for-ai-agents",
    "https://arxiv.org/html/2609.36789v1"
  ],
  "contentHtml": "<section aria-label=\"Companion video\" style=\"margin:1.5rem 0 2rem\">\n<h2>Watch the analysis</h2>\n<div style=\"position:relative;width:100%;aspect-ratio:16/9\">\n<iframe src=\"https://www.youtube.com/embed/JgpWzfyxCOU\" title=\"When Coding-Agent Requirements Change, What Should Survive?\" style=\"position:absolute;width:100%;height:100%;border:0\" loading=\"eager\" referrerpolicy=\"strict-origin-when-cross-origin\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe>\n</div>\n<p><a href=\"https://www.youtube.com/watch?v=JgpWzfyxCOU\">Watch the full video on YouTube</a> · <a href=\"https://www.youtube.com/shorts/cv56ZwZUU10\">Watch the Short</a></p>\n</section>\n<p>Making a dashboard column sortable sounds like a contained change. Deciding what the column means can reach further.</p>\n<p>In October 2026, Scott Stouffer, Co-Founder and CTO of <a href=\"https://marketbrew.ai/\" rel=\"nofollow\">Market Brew</a>, was using Codex to build the company's client reporting dashboard. The requirements expanded to make every table's column labels sortable. The team kept the existing report and branch, because the change concerned table interaction and a restart would have discarded already-tested work. What still needed settling was which result would count as correct.</p>\n<p>The initial request said dates should sort earliest-first; the clarification changed that to latest-first. Composite columns needed decisions too: sort by the answer's timestamp rather than the prompt text, and by inclusion percentage rather than a raw count. The initial row order had to stay intact until someone clicked a header, and a missing value had to remain distinct from a measured zero.</p>\n<p>These rules decide which result a tester should accept. A check that approved earliest-first ordering cannot also establish that the revised latest-first requirement works. Stouffer said the revised build passed developer verification and fresh tester QA on October 20 before the pull request merged. Earlier approval stayed in the record as history; it was not reused to approve the changed version.</p>\n<p>The same distinction applies to everything an AI coding agent has already produced. A new requirement can invalidate one part of a project while leaving other parts useful. The engineer has to decide which instructions still apply, which code remains compatible, which conversation helps the next step, and which earlier checks still support the result. Choosing whether to keep the chat answers only one of those questions.</p>\n<h2 id=\"follow-the-changed-assumption-through-the-code\">Follow the changed assumption through the code</h2>\n<p>Runbo Li, Co-founder and CEO of <a href=\"https://magichour.ai/\" rel=\"nofollow\">Magic Hour</a>, described a video-template project that changed midway through a Claude Code session. The agent had scaffolded API routes, a database schema and part of the frontend for flat templates. Li then realized that the product needed nested, composable template blocks.</p>\n<p>The shift affected more than the schema declaration. With a flat structure, a renderer can process a single level of items. Nested blocks require the code that consumes the structure to account for deeper levels. Merely telling the agent that the model has changed leaves any old single-level behavior in the repository until someone finds and changes it.</p>\n<p>Li kept the session and asked the agent to sort the existing work by its dependence on the old model. He retained work such as authentication and rate limiting, which he described as independent of the template structure. Rendering logic depended on the old schema and needed replacement. He also discarded work whose compatibility was uncertain. That last decision was his response to uncertainty in this project, not evidence that ambiguous code should always be deleted.</p>\n<p>He then gave the agent a short plaintext specification for the nested model and asked it to identify contradictions in the existing code. According to Li, that scan found a utility that assumed flat template IDs and a frontend component with a single-depth rendering loop. The findings put specific code behind the broad instruction to support nested blocks.</p>\n<p>The causal point is straightforward: code can preserve an old requirement without any remaining prompt telling the agent to follow it. A new chat that reads the same utility or renderer can inherit the same assumption. Inspecting the code's behavior is therefore a separate task from clearing the conversation.</p>\n<p>Li said the team shipped in about a day and a half, including the pivot. He estimated that a complete restart would have added a day. That alternative was not run, so the estimate cannot establish measured time saved or predict the benefit for another team.</p>\n<p>Victor Smushkevich, Founder of <a href=\"https://tested.media/\" rel=\"nofollow\">Tested Media</a>, described another way a changed requirement spreads: a funnel built around a quote form has to become a booking flow halfway through the build. He presented this as a recurring pattern, not a single dated project.</p>\n<p>His first step is to rewrite the short brief at the root of the project and remove the old requirement from the active instructions. As he put it, \"an agent will happily follow a stale line sitting next to a new one.\" He then searches for old wording in form labels, thank-you copy and tracking event names. He keeps layout, styles and SEO structure when they do not depend on the conversion flow, and rebuilds the form handler, confirmation page and follow-up automation from the new brief.</p>\n<p>That division holds only if the retained parts really are independent of the user's action, and the rebuilt parts are exactly the ones that encode it. A page can keep its layout while the action it offers changes. The handler accepts that action, the confirmation page tells the user what happened, and the follow-up automation acts on the result. When a quote request becomes a booking, all three still encode the old action until they are rebuilt. This describes the dependency to check, not unreported details of Smushkevich's implementation.</p>\n<p>A wording search helps locate those dependencies, but it does not settle them. An old term might still belong in historical documentation or a migration. Conversely, a generic function might embody the obsolete behavior without mentioning the old term at all. Li's single-depth renderer is the useful counterexample: the problem lies in how it traverses the data, not necessarily in what its variables are called.</p>\n<p>The outcome of this inspection should be a concrete account of what the change reaches. For nested blocks, that means checking how the structure is identified, stored and rendered. For a booking flow, it means checking what is submitted, what is confirmed and what follows. These are PSEEDR's proposed inspection questions, not additional reported features of either system.</p>\n<h2 id=\"choose-the-conversation-and-the-files-separately\">Choose the conversation and the files separately</h2>\n<p>Abhishek Pareek, Founder and Director of <a href=\"https://www.coders.dev/\" rel=\"nofollow\">Coders.dev</a>, chose a fresh start for the conversation in a fintech API project. Tax requirements moved from a flat structure to a tiered, jurisdiction-based model. His team retained validated data models and discarded the functional routines.</p>\n<p>Pareek is more skeptical than Li about continuing after a major change. \"Attempting to refactor agent-generated code after a major pivot is a sunk-cost trap that usually results in prompt pollution, where the model attempts to reconcile conflicting instructions and produces hybrid logic that fails complex edge cases,\" he wrote in a written response to PSEEDR.</p>\n<p>His practice is to branch from a clean checkpoint and give the agent the retained models alongside the new requirements. \"We now treat agent sessions as ephemeral and output files as durable assets,\" he wrote. He did not supply an elapsed-time comparison or a detailed verification outcome for the project, so his broader claim about efficiency remains his judgment from delivery work.</p>\n<p>Li's account shows that continuing can work in one reported case. Pareek's account explains why his teams prefer to replace the context. Neither establishes a universal rule. Both preserved selected files while explicitly changing the instructions governing subsequent work. The session choice did not determine how much code had to survive.</p>\n<p>Smushkevich makes that choice according to what the conversation contains. He continues when it mainly concerns layout. If it contains hours of discussion about the old flow, he opens a fresh session with updated notes and a short account of the repository changes. Useful background can then carry forward without presenting the withdrawn flow as the current task.</p>\n<p>The four decisions can be kept distinct:</p>\n<table>\n<thead>\n<tr>\n<th>What may carry forward</th>\n<th>What must be decided after the requirement changes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Active specification</td>\n<td>Which instruction now governs the work, and which has been superseded?</td>\n</tr>\n<tr>\n<td>Code and other files</td>\n<td>Which assumptions still hold, including assumptions made by code that consumes changed data?</td>\n</tr>\n<tr>\n<td>Conversation</td>\n<td>Which history helps implement the new requirement, and which history could direct the agent toward the old one?</td>\n</tr>\n<tr>\n<td>Earlier checks and approval</td>\n<td>Which claims remain supported, and which expected results must change?</td>\n</tr>\n</tbody>\n</table>\n<p>This table is PSEEDR's synthesis of the accounts. It does not rank workflows by measured success. Its purpose is to prevent a decision to keep a file or restart a chat from silently carrying an obsolete instruction or approval with it.</p>\n<h2 id=\"a-reset-only-changes-the-state-it-actually-restores\">A reset only changes the state it actually restores</h2>\n<p>Tool controls make the distinction between conversation and files concrete. <a href=\"https://code.claude.com/docs/en/checkpointing\">Claude Code's checkpointing documentation</a>, consulted for this article, describes restoring the code, the conversation, or both. Summarizing a conversation does not change files on disk. Restoring only the conversation leaves the current code in place.</p>\n<p>File restoration also has limits. A file changed only through shell commands is not tracked by these checkpoints. If the session's file-editing tools had already edited that file, however, rewinding also undoes subsequent shell changes to it. Most subagent edits to other files, and edits made outside the session, are not captured. The documentation treats checkpoints as a way to recover within a session, alongside permanent version control.</p>\n<p>So after a rewind, the workspace may still contain changes that the engineer expected to remove. Before using it as the base for the revised task, the engineer needs to establish which files were restored and which remained. These documented controls do not establish which tool version or features any contributor used.</p>\n<p>Conversation compaction has a different job. <a href=\"https://www.anthropic.com/research/effective-context-engineering-for-ai-agents\">Anthropic's explanation of context engineering</a> describes summarizing a long conversation and continuing with that summary in a smaller context. It cautions that excessive compression can remove subtle but important details.</p>\n<p>Selecting what to remember does not by itself determine which requirement is authoritative. Take an illustrative summary of the dashboard project: it could accurately report that dates once needed earliest-first sorting while failing to make clear that latest-first replaced it. The summary would preserve history and still leave the next agent with an unresolved instruction. The revised brief needs to distinguish a former decision from the current one, whether the team continues, compacts or starts a fresh session.</p>\n<h2 id=\"the-best-starting-point-may-be-an-older-version\">The best starting point may be an older version</h2>\n<p>The <a href=\"https://arxiv.org/html/2609.36789v1\">GitHarness preprint</a> studies a related decision: which prior work state fits a changed requirement? Its framework pairs requirement states with recoverable work states. An agent selects a compatible historical base, after which the system can reuse it, modify it or start fresh. The latest version is one possible base, not the automatic choice.</p>\n<p>The mechanism matters because later work may be organized around a requirement the user has withdrawn. Returning to an older compatible version can avoid carrying those changes into the next attempt. But the system still has to interpret the new requirement correctly and choose the appropriate version. Saving history supplies options; it does not identify the right option on its own.</p>\n<p>The authors evaluated constructed, seven-turn requirement sequences derived from existing benchmarks, rather than conversations collected from real users. For the software-engineering tasks, they report 73.6 percent lower average token use than native continuation. Their cost accounting aggregates model calls across each seven-turn interaction and averages completed samples. It does not measure developer hours. The savings also depend on the task: the math results use more tokens than the native baseline.</p>\n<p>One experiment tests the importance of choosing the base. When the system was forced to resume from the latest state, rather than select a historical version, the reported code resolved rate fell from 74.0 percent to 44.0 percent in that setting. Resolved rate is the share of benchmark tasks whose patches met the benchmark's success criterion. This result supports historical selection within the experiment; it does not tell a team which checkpoint to choose in its own repository.</p>\n<p>The authors also acknowledge that restoring a compatible state does not guarantee preservation of all unaffected work. PSEEDR has not reproduced the results, and they are not a product recommendation.</p>\n<p>For the practical decision, the current branch may remain the best base when the change is local and compatible work is already present. An older checkpoint may be useful when later changes depend on the withdrawn requirement. A broader restart becomes reasonable when the engineer cannot establish a reusable boundary at an acceptable cost. None of these choices removes the need to check the resulting behavior.</p>\n<h2 id=\"keep-the-evidence-that-still-answers-the-right-question\">Keep the evidence that still answers the right question</h2>\n<p>Stouffer's dashboard account shows why that final check is separate from choosing what code to keep. The team replaced ambiguous sorting instructions with explicit rules in its existing Monday.com QA item and test plan. In its workflow, a revision to an existing specification returns that QA item to specification approval. A new specification receives a separate change request. A proposed real-data pilot remained follow-up scope.</p>\n<p>Those are the team's reported procedures, not extra approval requirements for every engineering team. Their role in this case was to give the implementer and tester the same revised target while keeping a larger proposed task separate.</p>\n<p>Consider what would happen if an old sorting test survived unchanged. This is PSEEDR's reasoning from the reported rules, not a failure Stouffer described. A test expecting earliest-first order could reject a correct latest-first implementation. If the implementation still sorted earliest-first, that same test could pass while the new requirement remained unmet. The code and test would agree with each other because both still encoded the old rule. Agreement alone would provide false reassurance.</p>\n<p>The opposite mistake is to discard every previous result merely because one rule changed. Earlier checks can remain useful for claims whose relevant assumptions still hold. The work is to identify those claims, update checks that express the superseded rule and test the interactions through which the change might affect retained behavior.</p>\n<p>Stouffer reported browser regression checks and saved-data comparisons for filters, pagination, exports and the underlying evidence. The stated endpoint was acceptance of the revised build and a merged pull request, not production deployment or a measured productivity gain. Missing values and measured zero also needed distinct expectations because the requirement explicitly treated them differently.</p>\n<p>Smushkevich described rebuilding, clicking through the full path on a phone and comparing untouched pages with the previous commit. These checks answer different questions. A comparison can establish that a file did not change. A journey check can expose a broken interaction between files. An unchanged file can still receive different input after its caller changes, so an unchanged diff alone cannot establish that its behavior remains suitable.</p>\n<p>This gives the engineer a reason to retain work beyond the agent's recommendation. A module belongs in the keep group when its relevant requirements and assumptions still hold, supported by inspection and appropriate checks. The agent's classification helps organize that work; the label itself does not supply the evidence.</p>\n<h2 id=\"resume-with-a-clear-requirement-and-a-justified-base\">Resume with a clear requirement and a justified base</h2>\n<p>When requirements change, preserve the work that still fits, then choose how to give the agent that work. Write the revised requirement where the agent will actually read it. Mark superseded instructions as history or remove them from the active brief while preserving the historical record. State which behavior should remain unchanged and follow the changed assumption into the code that depends on it.</p>\n<p>That leaves a concrete choice of starting point. Continue when the instructions are clear and the conversation remains useful. Start a fresh conversation when the old discussion continues to drive obsolete behavior, carrying forward files whose compatibility has been checked. Use an older version when it offers a better base. Restart more broadly when a useful boundary cannot be established.</p>\n<p>Finally, make the checks answer the revised question. The dashboard could keep its report and branch while changing its expected sort order and renewing the evidence for acceptance. Li could keep a session while replacing code tied to flat templates. Pareek could replace the session while retaining selected models. Useful work survives because its assumptions still apply, not because the team chose a particular reset button.</p>\n<p>Li put the remaining responsibility plainly: \"Coding agents are fast, but they don't know when their assumptions expired. That's still your job.\"</p>\n<p><em>Reporting note: These accounts were supplied in written responses to PSEEDR and were not independently reproduced. Contributors hold leadership roles at the companies identified above. Stouffer and Li describe their own companies' products. GitHarness results come from a preprint that PSEEDR has not reproduced. The comparisons, illustrative explanations and proposed checks are PSEEDR's analysis; the accounts are not an industry survey.</em></p>\n",
  "articleImage": {
    "url": "https://content-edge-frzs2wwjiq-uc.a.run.app/assets/article-covers/when-coding-agent-requirements-change-what-should-survive.58278bc8.jpg",
    "width": 1280,
    "height": 720,
    "alt": "Reusable blocks beside a card with crossed-out and revised instructions. Text: What should survive?"
  },
  "image": {
    "@type": "ImageObject",
    "url": "https://content-edge-frzs2wwjiq-uc.a.run.app/assets/article-covers/when-coding-agent-requirements-change-what-should-survive.58278bc8.jpg",
    "width": 1280,
    "height": 720,
    "alt": "Reusable blocks beside a card with crossed-out and revised instructions. Text: What should survive?"
  }
}
