<?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: Sharon Y. Barr</title>
    <description>The latest articles on DEV Community by Sharon Y. Barr (@sharonyb).</description>
    <link>https://dev.to/sharonyb</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%2F2237268%2Fac8a5d8d-9400-4d95-8be9-a15d47a5daf9.jpeg</url>
      <title>DEV Community: Sharon Y. Barr</title>
      <link>https://dev.to/sharonyb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sharonyb"/>
    <language>en</language>
    <item>
      <title>Jest Unit Testing with AI Coding Agents: A 5-Gate Workflow</title>
      <dc:creator>Sharon Y. Barr</dc:creator>
      <pubDate>Wed, 26 Aug 2026 06:48:42 +0000</pubDate>
      <link>https://dev.to/sharonyb/jest-unit-testing-with-ai-coding-agents-a-5-gate-workflow-7e6</link>
      <guid>https://dev.to/sharonyb/jest-unit-testing-with-ai-coding-agents-a-5-gate-workflow-7e6</guid>
      <description>&lt;p&gt;Current AI coding agents can usually produce Jest syntax. They can write &lt;code&gt;describe&lt;/code&gt;, &lt;code&gt;test&lt;/code&gt;, &lt;code&gt;expect&lt;/code&gt;, mocks, and fixtures quickly. That is no longer the difficult part.&lt;/p&gt;

&lt;p&gt;The difficult part is getting a test that belongs in the repository and protects behavior that matters. An agent can write a perfectly valid test for the wrong boundary, mock away the risk, or report a passing command that proves much less than the reviewer assumes.&lt;/p&gt;

&lt;p&gt;The prompt should therefore define a testing workflow, not merely request test code. The sequence I use is context, risk, one focused implementation, an adversarial challenge, and an evidence report.&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%2Fwww.startearly.ai%2Fimages%2Fdevto%2Fjest-ai-agent-workflow-v1.png%2F" 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%2Fwww.startearly.ai%2Fimages%2Fdevto%2Fjest-ai-agent-workflow-v1.png%2F" title="Five gates turn generated Jest code into reviewable test evidence." alt="Repository context and behavior risk lead to a focused Jest test, an adversarial challenge, and a final evidence report" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Begin With the Repository, Not Jest
&lt;/h2&gt;

&lt;p&gt;Before asking an agent to install Jest or create tests, ask it to map the existing test system. This matters because Jest may not be the right runner. A frontend workspace may already use Vitest. A Node project may use the built-in test runner. A monorepo may use different runners in different packages. When Jest is appropriate, its &lt;a href="https://jestjs.io/docs/configuration" rel="noopener noreferrer"&gt;official configuration reference&lt;/a&gt; should be the source for version-specific options rather than a remembered setup recipe.&lt;/p&gt;

&lt;p&gt;Use an inspection prompt that forbids edits:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Inspect this repository before making changes.

Determine:
- The package manager, language, and module system.
- Whether this is a monorepo and which workspace owns [target].
- The current test runner, libraries, commands, and CI setup.
- Whether Jest is installed and how it is configured.
- The nearest tests, fixtures, factories, and naming conventions.
- Any TypeScript, ESM, path alias, DOM, or transform requirements.

Report whether Jest is appropriate for [target], the smallest safe
path forward, and any decisions I need to make. Do not edit files.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This first response is a gate. If the agent recommends adding Jest to a workspace that already has an established runner, ask it to justify the operational cost. The correct result can be a decision not to use Jest.&lt;/p&gt;

&lt;p&gt;Durable repository instructions also vary by agent. &lt;a href="https://developers.openai.com/codex/guides/agents-md" rel="noopener noreferrer"&gt;Codex reads layered &lt;code&gt;AGENTS.md&lt;/code&gt; files&lt;/a&gt;. &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;Claude Code supports &lt;code&gt;CLAUDE.md&lt;/code&gt; and scoped rules&lt;/a&gt;. &lt;a href="https://docs.cursor.com/context/rules" rel="noopener noreferrer"&gt;Cursor uses project rules under &lt;code&gt;.cursor/rules&lt;/code&gt;&lt;/a&gt;. &lt;a href="https://docs.github.com/en/copilot/how-tos/configure-custom-instructions-in-your-ide/add-repository-instructions-in-your-ide" rel="noopener noreferrer"&gt;GitHub Copilot supports repository and path-specific instructions&lt;/a&gt;, with support depending on the environment. The prompts in this article are portable, but you still need to confirm what your chosen agent actually loads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask for a Behavior and Risk Plan
&lt;/h2&gt;

&lt;p&gt;"Write tests for this file" gives the agent a file boundary, not a quality standard. It can reward itself with coverage by testing getters, copying implementation branches, or asserting that mocks were called.&lt;/p&gt;

&lt;p&gt;Ask for a plan before code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Plan Jest tests for [feature, module, or change]. Do not write code yet.

Read the implementation, callers, nearby tests, and relevant product
or API documentation. For each proposed case, report:
- The observable behavior or contract.
- Why failure matters.
- The normal, boundary, and error cases.
- The correct test level: unit, integration, contract, or end-to-end.
- Dependencies that should remain real.
- Boundaries that should be mocked and why.
- Existing coverage that already protects the behavior.

Finish with the smallest useful test set and explain what it will not prove.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The test-level decision is important. A pure function is a natural unit-test target. A route that depends on middleware, serialization, or authentication may need HTTP-level evidence. A data-access change may need a real schema. Mocking every dependency can make a test fast while removing the behavior that carries the risk.&lt;/p&gt;

&lt;p&gt;Consider a service that rejects expired discount codes. A weak generated test may mock the expiry validator and assert that the mock was called. It executes the service without testing the rule. A useful unit test supplies timestamps immediately before, at, and after the expiry boundary and asserts the observable result. A separate integration test may still be needed to prove that stored timestamps are serialized and interpreted correctly. The behavior determines the boundary, not the convenience of the mock.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generate One Focused Test
&lt;/h2&gt;

&lt;p&gt;Once the plan is approved, reduce the scope again. One behavior is easier to inspect than a repository-wide request that produces dozens of plausible cases.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Implement the approved Jest tests for [single behavior].

Constraints:
- Follow the nearest test file's structure and naming conventions.
- Assert exact observable outcomes when exact values are available.
- Include only meaningful normal, boundary, and failure cases.
- Reuse established fixtures without hiding key inputs.
- Do not update snapshots without showing and explaining the diff.
- Do not change production code without stopping to explain why.

Run the smallest relevant Jest command. If it passes and the working
tree is isolated and clean, temporarily alter the implementation
behavior to confirm the key assertion can fail. Revert the mutation,
rerun the focused test, and confirm the final diff contains no mutation
residue. Report all three results and the changed files.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The temporary mutation is a narrow trust check. If changing the intended behavior does not make the new test fail, the assertion probably does not protect the rule it claims to protect. This does not replace a mutation-testing system, but it catches a common weakness in generated tests.&lt;/p&gt;

&lt;p&gt;Command execution is not uniform across agents. It depends on the product, permissions, sandbox, and environment. If the agent cannot run Jest, it has produced a proposed test change. It has not produced verified test evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review Tests as Generated Code
&lt;/h2&gt;

&lt;p&gt;Passing tests still deserve a separate review pass. The same agent can do useful first-pass criticism when the prompt asks it to look for failure modes rather than approve its own work.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Review the new Jest tests as a skeptical maintainer.

Look for weak assertions, implementation mirroring, mocks that replace
the logic under test, missing awaits, shared state, nondeterminism,
opaque snapshots, duplicate cases, and tests that would still pass if
the intended behavior were broken.

For each finding, cite the test and explain the failure mode. Apply
clear fixes, rerun the focused suite, and report unresolved concerns.
Do not praise the tests or summarize unchanged files.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Review the production diff beside the test diff. A generated test can accurately encode current behavior even when the intended requirement is different. Important assertions should trace to a product rule, API contract, defect report, or observable user outcome. If that source is unclear, ask for clarification instead of generating another case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat Coverage as a Map
&lt;/h2&gt;

&lt;p&gt;Coverage identifies code that did not execute. It does not tell you whether an assertion is meaningful, whether a mock is realistic, or whether the chosen cases represent the product contract.&lt;/p&gt;

&lt;p&gt;One hundred percent coverage is therefore not the goal. A suite can execute every line while relying on weak assertions and unrealistic mocks. Every test should earn its place by protecting meaningful behavior, documenting a stable contract, reproducing an important failure, or making a risky change easier to verify.&lt;/p&gt;

&lt;p&gt;Ask the agent to classify weak tests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Audit the Jest tests in [scope] for value, not test count.

Classify each weak or costly test as:
- Strengthen: the behavior matters, but the assertion is weak.
- Replace: the risk is real, but the test uses the wrong boundary.
- Delete: the test is duplicate, tautological, obsolete, or coupled to
  implementation without protecting an observable contract.
- Keep: the test provides clear evidence for meaningful behavior.

Explain the evidence for every recommendation. Do not delete tests
only to simplify maintenance or improve speed. Apply only approved
changes and report any behavior that lost protection.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A test that is inconvenient because it exposes a compatibility requirement is not low quality. A test that fails during harmless refactoring because it mirrors private implementation probably is. The agent should make that distinction explicit.&lt;/p&gt;

&lt;h2&gt;
  
  
  End With Evidence, Not Confidence
&lt;/h2&gt;

&lt;p&gt;The final handoff should separate what ran from what remains an assumption.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prepare the testing evidence for this change.

Report:
1. The behavior and risk the Jest tests address.
2. Test files added or changed.
3. Exact commands run and their results.
4. Key assertions and why they detect the intended failure.
5. Mocks used and which real contracts they exclude.
6. Coverage change, if measured, without treating it as proof.
7. Behavior that still needs integration, contract, end-to-end, or
   regression verification.
8. Tests considered but intentionally not added, and why.

Use only evidence from this task. Do not claim the change is safe or
ready to ship beyond what the executed checks establish.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep this report with the pull request or task. The next reviewer should not need to reconstruct the agent conversation to learn which commands ran or which risks remain.&lt;/p&gt;

&lt;p&gt;AI coding agents make Jest implementation faster. The durable advantage comes from prompting them to inspect before editing, test behavior rather than structure, challenge their own assertions, and report the limits of their evidence.&lt;/p&gt;

&lt;p&gt;Jest evidence also has a boundary. A passing unit test can verify selected JavaScript or TypeScript behavior under the supplied cases. It cannot prove that a release preserves behavior across services, data contracts, infrastructure, configuration, or operational dependencies. That wider risk needs the appropriate integration, contract, end-to-end, and regression evidence.&lt;/p&gt;

&lt;p&gt;The syntax is cheap. The judgment about what deserves protection is not.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>javascript</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>5 Checks to Catch Regressions in Agent-Generated Code</title>
      <dc:creator>Sharon Y. Barr</dc:creator>
      <pubDate>Mon, 24 Aug 2026 20:08:26 +0000</pubDate>
      <link>https://dev.to/sharonyb/5-checks-to-catch-regressions-in-agent-generated-code-4h99</link>
      <guid>https://dev.to/sharonyb/5-checks-to-catch-regressions-in-agent-generated-code-4h99</guid>
      <description>&lt;p&gt;Consider a coding agent asked to add a promotion type to a shared discount service. The task looks narrow. The agent changes one API endpoint, adds focused tests, and returns a clean diff.&lt;/p&gt;

&lt;p&gt;Everything in the assigned task can be correct while the release still changes renewal pricing, invoice totals, account entitlements, or a reporting job that depends on the same service.&lt;/p&gt;

&lt;p&gt;That is the core problem with reviewing agent-generated code only at the task boundary. The implementation is visible in the pull request. Its consequences can be distributed across the product.&lt;/p&gt;

&lt;p&gt;A useful release review needs more than one passing signal. It needs evidence that moves from the narrow intent of the task to the wider behavior of the build the team plans to deploy, often called the release candidate.&lt;/p&gt;

&lt;h2&gt;
  
  
  A passing task is not the same as release confidence
&lt;/h2&gt;

&lt;p&gt;Coding agents work from the context they receive: a prompt, repository instructions, selected files, tool output, and known tests. That context may not include every business flow that depends on the changed behavior.&lt;/p&gt;

&lt;p&gt;The same boundary applies to conventional review tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A diff shows what changed in the repository.&lt;/li&gt;
&lt;li&gt;A test suite shows whether encoded expectations passed.&lt;/li&gt;
&lt;li&gt;Static analysis shows whether selected rules were violated.&lt;/li&gt;
&lt;li&gt;A security scanner shows whether its checks found known classes of problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each signal is valuable. None proves that all existing product behavior remained intact.&lt;/p&gt;

&lt;p&gt;GitHub's &lt;a href="https://docs.github.com/en/copilot/responsible-use/agents" rel="noopener noreferrer"&gt;responsible-use guidance for coding agents&lt;/a&gt; makes the human boundary explicit: generated output still requires review and verification. The practical question is what evidence a reviewer should require before approving a release.&lt;/p&gt;

&lt;p&gt;The following five checks build a useful release record.&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%2Fwww.startearly.ai%2Fimages%2Fdevto%2Fagent-generated-code-release-evidence-v1.png%2F" 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%2Fwww.startearly.ai%2Fimages%2Fdevto%2Fagent-generated-code-release-evidence-v1.png%2F" title="Move from task intent through behavioral comparison before making the release decision." alt="A completed promotion task sits inside a larger release boundary containing renewal, invoice, entitlement, and reporting behavior." width="1000" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Move from task intent through behavioral comparison before making the release decision.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Define the intended behavior before reviewing the code
&lt;/h2&gt;

&lt;p&gt;Start with the intended change, not the implementation the agent produced.&lt;/p&gt;

&lt;p&gt;Write down the requested outcome, the important constraints, and the behavior that must remain unchanged. For the promotion example, the task might require a new promotion type while preserving existing promotion precedence, authorization, renewal rules, and rounding behavior.&lt;/p&gt;

&lt;p&gt;A useful intent statement answers four questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What user or system outcome should change?&lt;/li&gt;
&lt;li&gt;Which existing behavior must remain unchanged?&lt;/li&gt;
&lt;li&gt;Which interfaces, data rules, or security boundaries apply?&lt;/li&gt;
&lt;li&gt;Who owns decisions when the requirement is ambiguous?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This keeps a polished implementation from quietly redefining the task. It also gives reviewers a standard that does not depend on the agent's explanation of its own work.&lt;/p&gt;

&lt;p&gt;Keep it concise. The goal is not a second specification. It is to make the expected change and protected boundaries explicit enough to verify.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Inspect the diff and the path that produced it
&lt;/h2&gt;

&lt;p&gt;The final diff is necessary, but it is not the entire review surface.&lt;/p&gt;

&lt;p&gt;When available, inspect the agent's work record: the prompt, repository instructions, files read, commands run, tests selected, tool approvals, and assumptions. This record does not establish correctness. It shows the boundary of what the agent considered.&lt;/p&gt;

&lt;p&gt;For example, a correct change to the discount calculation may still deserve more review if the agent never inspected renewal code, invoice generation, or entitlement updates. Missing context is not proof of a defect. It is evidence about where uncertainty remains.&lt;/p&gt;

&lt;p&gt;Review the code for the familiar failure modes as well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect authorization or data access.&lt;/li&gt;
&lt;li&gt;Incomplete error handling.&lt;/li&gt;
&lt;li&gt;Unexpected schema or persistence changes.&lt;/li&gt;
&lt;li&gt;Changes that exceed the requested scope.&lt;/li&gt;
&lt;li&gt;Tests altered only to make a failure disappear.&lt;/li&gt;
&lt;li&gt;Assumptions that conflict with product rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The right question is not merely, "Does this code look reasonable?" Ask, "What did the agent know, what did it change, and what relevant context did it not examine?"&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Run reproducible checks, with people accountable for the result
&lt;/h2&gt;

&lt;p&gt;Run reproducible controls: builds, type checks, linters, policy and security checks, dependency checks, and relevant unit, component, integration, and end-to-end tests.&lt;/p&gt;

&lt;p&gt;Add focused tests for the acceptance criteria and important error paths. Then investigate every failure before changing the expected result.&lt;/p&gt;

&lt;p&gt;This distinction matters. A failing test can indicate an intended product change, a stale assertion, an environment problem, or a real regression. An agent can help investigate the cause, but it should not silently rewrite the test until the status turns green.&lt;/p&gt;

&lt;p&gt;Passing controls answer a bounded question: did the release candidate satisfy the checks that ran? They do not show whether every affected behavior had coverage.&lt;/p&gt;

&lt;p&gt;Record what ran, what was skipped, and why. "All tests passed" is weak evidence when nobody can say which tests were relevant or whether a required environment was unavailable.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Map the change to affected business flows
&lt;/h2&gt;

&lt;p&gt;Move from files and functions to product behavior.&lt;/p&gt;

&lt;p&gt;A shared service can participate in customer, financial, administrative, and reporting flows that are implemented elsewhere. The impact boundary is therefore rarely identical to the changed-file boundary.&lt;/p&gt;

&lt;p&gt;For the promotion change, an affected-flow map might include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a subscription with a promotion.&lt;/li&gt;
&lt;li&gt;Renewing an existing subscription.&lt;/li&gt;
&lt;li&gt;Combining account and campaign discounts.&lt;/li&gt;
&lt;li&gt;Calculating invoice totals and taxes.&lt;/li&gt;
&lt;li&gt;Applying entitlements after payment.&lt;/li&gt;
&lt;li&gt;Exporting promotion data for reporting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use architecture documentation, product owners, service relationships, and domain expertise to build this map. It is not an automatic dependency graph that proves impact. It tells the team which established outcomes deserve evidence.&lt;/p&gt;

&lt;p&gt;The map also exposes ownership gaps. If a change can affect billing but nobody reviewing the release owns billing behavior, the release process has found a coordination problem before customers do.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Compare candidate behavior with the production baseline
&lt;/h2&gt;

&lt;p&gt;Tests start from scenarios the team anticipated and encoded. A baseline comparison starts from established behavior and asks what changed.&lt;/p&gt;

&lt;p&gt;Compare controlled runs of relevant flows in the release candidate with a production baseline. The baseline can be captured production behavior or a controlled reference derived from it. Do not send state-changing test traffic to production. Classify differences instead of flattening them into one pass-or-fail result.&lt;/p&gt;

&lt;p&gt;Some differences are expected because the task intentionally changes behavior. Others reveal an unintended effect. The reviewer needs enough evidence to distinguish the two and identify who confirmed each expected change.&lt;/p&gt;

&lt;p&gt;This comparison is especially useful when the code change is local but the product effect is not. It can reveal that the new promotion works as requested while an existing renewal path now calculates a different total.&lt;/p&gt;

&lt;p&gt;Baseline comparison also has limits. Production behavior can contain existing defects. Test data may not represent every customer state. Environments may differ. Record those constraints instead of presenting the comparison as certainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the five signals separate
&lt;/h2&gt;

&lt;p&gt;Teams often collapse several checks into one reassuring status. That removes the information needed for a decision.&lt;/p&gt;

&lt;p&gt;A useful release record preserves each layer:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Evidence layer&lt;/th&gt;
&lt;th&gt;Question it answers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Intent&lt;/td&gt;
&lt;td&gt;What is supposed to change, and what must remain stable?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent work record&lt;/td&gt;
&lt;td&gt;What did the agent inspect, assume, execute, and modify?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reproducible controls&lt;/td&gt;
&lt;td&gt;Which known rules and scenarios passed or failed?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Affected flows&lt;/td&gt;
&lt;td&gt;Which existing product outcomes could depend on the change?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behavioral comparison&lt;/td&gt;
&lt;td&gt;What differs between the candidate and the current baseline?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No layer substitutes for another. A complete agent work record does not replace tests. A green suite does not replace impact analysis. A baseline difference does not explain whether the change was intended.&lt;/p&gt;

&lt;h2&gt;
  
  
  The final decision remains human and accountable
&lt;/h2&gt;

&lt;p&gt;Bring the evidence together before approving the release:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the implementation satisfy the stated intent?&lt;/li&gt;
&lt;li&gt;Are there unresolved review findings or assumptions?&lt;/li&gt;
&lt;li&gt;Which checks ran, failed, passed, or were skipped?&lt;/li&gt;
&lt;li&gt;Which business flows may be affected?&lt;/li&gt;
&lt;li&gt;Which behaviors differ from the baseline?&lt;/li&gt;
&lt;li&gt;Which differences are expected, and who confirmed them?&lt;/li&gt;
&lt;li&gt;Which gaps remain unverified?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An agent can collect evidence, summarize findings, and investigate a failure. It should not turn incomplete context into automatic approval.&lt;/p&gt;

&lt;p&gt;The engineering, QA, product, or release owner decides what ships. That owner should be visible in the release record, along with the evidence and remaining uncertainty behind the decision.&lt;/p&gt;

&lt;p&gt;The goal is not to distrust generated code by default. It is to verify change at the level where the risk exists. A coding agent changes files. A release changes a product.&lt;/p&gt;

&lt;p&gt;Originally published on Early: &lt;a href="https://www.startearly.ai/post/reduce-regression-risk-with-ai-test-code-generation/" rel="noopener noreferrer"&gt;5 Ways to Check Agent-Generated Code for Regressions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>codequality</category>
    </item>
    <item>
      <title>AI Code Review Is Not Regression Review</title>
      <dc:creator>Sharon Y. Barr</dc:creator>
      <pubDate>Sun, 23 Aug 2026 13:00:53 +0000</pubDate>
      <link>https://dev.to/sharonyb/ai-code-review-is-not-regression-review-1ahg</link>
      <guid>https://dev.to/sharonyb/ai-code-review-is-not-regression-review-1ahg</guid>
      <description>&lt;p&gt;In &lt;a href="https://dev.to/sharonyb/vibe-coding-grew-up-are-we-ready-to-ship-what-agents-build-1kf8"&gt;Part 1&lt;/a&gt;, I argued that an agent completing its task does not make the resulting change ready to ship. The practical next question is how to review that release candidate before production.&lt;/p&gt;

&lt;p&gt;Teams often treat the answer as a single review step, but code review and regression review protect against different failures. Code review asks whether the proposed change is correct. Regression review asks whether the working system remains correct after that change.&lt;/p&gt;

&lt;p&gt;The two reviews can inspect some of the same evidence, but they begin from different reference points. That distinction matters because a correct change can still produce a broken release.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Review Starts With the Change
&lt;/h2&gt;

&lt;p&gt;A code reviewer begins with the implementation.&lt;/p&gt;

&lt;p&gt;Did the code satisfy the requirement? Is the logic correct? Does the change follow the architecture and security constraints? Did it introduce a defect, an unnecessary dependency, or an unsafe pattern?&lt;/p&gt;

&lt;p&gt;An AI code reviewer can inspect the diff, nearby code, tests, repository instructions, and related symbols. A human reviewer can add product knowledge, architectural judgment, and experience that may not exist in the repository.&lt;/p&gt;

&lt;p&gt;The better the available context, the broader and more useful that review can become. A strong reviewer may even identify a dependency outside the changed files.&lt;/p&gt;

&lt;p&gt;But the review still starts with the change. Its natural question is whether the proposed implementation is correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regression Review Starts With the Working System
&lt;/h2&gt;

&lt;p&gt;Regression review begins from a different reference point: the production baseline.&lt;/p&gt;

&lt;p&gt;What behavior already works? Which user journeys, components, integrations, data transitions, and permission rules could this release candidate affect? What evidence shows that those behaviors remain intact?&lt;/p&gt;

&lt;p&gt;This changes the unit of analysis. The diff remains important, but it is no longer the boundary.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa9mva6h9q5v8165jx01r.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa9mva6h9q5v8165jx01r.png" alt="Execution guardrails limit what an agent may do, while release guardrails evaluate evidence, regression risk, and accountable approval." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Execution controls bound the work. Release controls evaluate whether the resulting change should ship.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The distinction matters because a technically correct change can produce a bad release. The failure may sit in a component that did not change, a repository the reviewer did not open, or a business flow that no test represented.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Correct Backend Change, One Broken Journey
&lt;/h2&gt;

&lt;p&gt;Imagine asking a coding agent to add a 72-hour expiration rule to account invitations.&lt;/p&gt;

&lt;p&gt;The agent updates the backend model and endpoint. It validates expired tokens, returns a defined response, adds targeted tests, and passes the repository checks. The implementation matches the assigned requirement.&lt;/p&gt;

&lt;p&gt;The invitation journey, however, extends beyond that backend endpoint. An existing frontend accepts the invitation. Membership state becomes active. An audit event is written. A notification job retries failures.&lt;/p&gt;

&lt;p&gt;The frontend was created before the expiration rule. It may send a token shape that the new validation rejects. The backend code can be correct while the complete invitation journey is now broken.&lt;/p&gt;

&lt;p&gt;A sufficiently broad code review might discover that relationship. Regression review makes the relationship the starting point rather than a lucky extension of the diff review.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw76ggqmccrmu7yqxs260.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw76ggqmccrmu7yqxs260.png" alt="A regression finding traces a broken web flow to an upstream backend change in another repository." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The changed code and the broken behavior can live in different components.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That is the practical difference. Code review evaluates the implementation against its requirement and technical context. Regression review evaluates the release candidate against the behavior the system must preserve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passing Checks Cannot Describe Missing Context
&lt;/h2&gt;

&lt;p&gt;Tests matter. Static analysis matters. Security scans and code review matter. Each can provide strong evidence about a release candidate.&lt;/p&gt;

&lt;p&gt;None of them automatically expands beyond the behavior and context it represents.&lt;/p&gt;

&lt;p&gt;A green test result says that encoded behavior passed for a particular revision in a particular environment. It does not say that every dependent business flow was encoded. A clean code review says the reviewer found no blocking issue in the context available. It does not say the reviewer had every operational dependency or historical behavior.&lt;/p&gt;

&lt;p&gt;The problem is not that the evidence is weak. The problem is turning a bounded result into a broader claim than it supports.&lt;/p&gt;

&lt;p&gt;A release owner needs to know what ran, what passed, what did not run, and which affected behaviors remain uncertain. Revision-bound evidence prevents another common mistake: approving a release with results produced from a different commit, configuration, or environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five Guardrails Connect the Task to the Release
&lt;/h2&gt;

&lt;p&gt;Once code review and regression review are separated, a practical control stack becomes clearer.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Change contract.&lt;/strong&gt; Write down the desired outcome, allowed scope, stable behavior, expected failure handling, and required evidence before consequential work begins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access limits.&lt;/strong&gt; Bound which files, commands, tools, networks, credentials, and environments the agent may reach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI code review.&lt;/strong&gt; When a code-aware reviewer is available, evaluate the implementation against the requirement and relevant repository context. Tie findings to the exact revision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regression review.&lt;/strong&gt; Evaluate affected business flows and cross-component relationships against the production baseline. Make missing evidence visible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner approval.&lt;/strong&gt; Keep the release decision with a named person who understands the remaining uncertainty and owns the rollback plan.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These controls are connected, but they do different jobs.&lt;/p&gt;

&lt;p&gt;The first two shape and bound the work. Code review evaluates what changed. Regression review evaluates what the release could disturb. Owner approval turns the evidence and remaining uncertainty into an accountable decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regression Review Can Be Expressed in Business Terms
&lt;/h2&gt;

&lt;p&gt;Developers using Codex, Claude Code, Cursor, or GitHub Copilot can inspect generated code directly or ask another qualified reviewer to do it.&lt;/p&gt;

&lt;p&gt;Not every release owner can review source code. Managed app builders may expose or synchronize the source while serving users who do not have the technical ability to evaluate it.&lt;/p&gt;

&lt;p&gt;Regression review remains useful because its questions can be expressed in business terms.&lt;/p&gt;

&lt;p&gt;Which signup journey could stop working? Which role could gain or lose access? Which payment, notification, or data transition might change? Which integration depends on the previous response?&lt;/p&gt;

&lt;p&gt;The person approving a release should be able to understand those consequences even when that person delegates the implementation review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four Questions Before Production
&lt;/h2&gt;

&lt;p&gt;Before an AI-generated change reaches production, the release owner should be able to answer four questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Which exact release candidate was evaluated?&lt;/li&gt;
&lt;li&gt;Which business flows and component relationships could be affected?&lt;/li&gt;
&lt;li&gt;What evidence exists, and what remains unknown?&lt;/li&gt;
&lt;li&gt;Who accepts the remaining uncertainty and owns the rollback?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An agent can operate inside strict permissions and still produce a release candidate with consequences beyond its assigned task. Execution controls determine what the agent may do. Code review evaluates what it changed. Regression review evaluates what the release could disturb across the wider system.&lt;/p&gt;

&lt;p&gt;Code review asks whether the change is correct.&lt;/p&gt;

&lt;p&gt;Regression review asks whether the system remains correct after the change.&lt;/p&gt;

&lt;p&gt;Production needs both.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is adapted from &lt;a href="https://www.startearly.ai/post/vibe-coding-prompt-to-production---part-2/" rel="noopener noreferrer"&gt;Vibe Coding Guardrails for Production Teams in 2026&lt;/a&gt; on the Early blog, which includes the complete five-layer framework and source list.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>codereview</category>
      <category>testing</category>
    </item>
    <item>
      <title>Vibe Coding Grew Up. Are We Ready to Ship What Agents Build?</title>
      <dc:creator>Sharon Y. Barr</dc:creator>
      <pubDate>Wed, 12 Aug 2026 09:41:17 +0000</pubDate>
      <link>https://dev.to/sharonyb/vibe-coding-grew-up-are-we-ready-to-ship-what-agents-build-1kf8</link>
      <guid>https://dev.to/sharonyb/vibe-coding-grew-up-are-we-ready-to-ship-what-agents-build-1kf8</guid>
      <description>&lt;p&gt;When the phrase "vibe coding" entered the software vocabulary in 2025, it described a surprisingly simple loop.&lt;/p&gt;

&lt;p&gt;Describe the outcome. Let a model produce the code. Try it. Keep prompting until the result feels right.&lt;/p&gt;

&lt;p&gt;The phrase was playful. The shift was not.&lt;/p&gt;

&lt;p&gt;One year later, the model is no longer waiting in a chat window for the next instruction. &lt;a href="https://www.anthropic.com/product/claude-code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; can navigate a repository, edit multiple files, run commands, test its work, and commit a change. The &lt;a href="https://openai.com/index/introducing-the-codex-app/" rel="noopener noreferrer"&gt;Codex app&lt;/a&gt; can take on long-running tasks, work in parallel, and hand a developer a diff to review.&lt;/p&gt;

&lt;p&gt;The prompt now starts an execution loop.&lt;/p&gt;

&lt;p&gt;That is a much bigger capability than prompt-driven code generation. It also exposes a harder question: what has to be true before anyone should trust the resulting change in production?&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Modes That Look Similar but Are Not
&lt;/h2&gt;

&lt;p&gt;The term vibe coding has become broad enough to hide three different ways of working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt-driven generation&lt;/strong&gt; starts with a request and iterative feedback. The system produces code or a small application. Success often means the demonstrated flow works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agentic coding&lt;/strong&gt; adds a repository, tools, and a longer task horizon. The system can plan, edit, run commands, test, inspect failures, and continue working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production engineering&lt;/strong&gt; adds the controls and evidence needed for a team to own the release. It begins before the prompt and continues after the agent says the task is complete.&lt;/p&gt;

&lt;p&gt;These modes can use the same model. What changes is the operating contract around it.&lt;/p&gt;

&lt;p&gt;Vibe coding is an interaction style. Agentic coding is a system capability. Production engineering is an organizational responsibility.&lt;/p&gt;

&lt;p&gt;Treating them as synonyms makes a successful agent run look like a release decision. It is not one.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixjq197wfwy3q0tya0rb.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixjq197wfwy3q0tya0rb.png" alt="Vibe coding, agentic coding, and production engineering assign context, execution, and approval differently" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tool Changed Category
&lt;/h2&gt;

&lt;p&gt;The first generation of AI coding tools helped developers type. The current generation acts.&lt;/p&gt;

&lt;p&gt;An agent can install a dependency, change an interface, update its callers, run the suite, inspect a failure, and try again. It can make a sequence of technical decisions and observe the consequences.&lt;/p&gt;

&lt;p&gt;That execution loop is why the old distinction between AI-generated code and human-written code is becoming less useful. A single change may contain model output, human edits, generated tests, copied patterns, and a second agent's review.&lt;/p&gt;

&lt;p&gt;The practical unit is not authorship. It is the change the team is considering releasing.&lt;/p&gt;

&lt;p&gt;This matters because a change can be technically coherent and still be wrong for the product around it. The repository gives an agent a great deal of implementation context. It does not automatically contain every customer expectation, operational dependency, security boundary, or undocumented behavior that must remain stable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottleneck Moved
&lt;/h2&gt;

&lt;p&gt;When implementation gets cheaper, more ideas become changes.&lt;/p&gt;

&lt;p&gt;That is a real productivity gain. Every additional change still needs intent, context, review, security, validation, and ownership. Generating five plausible implementations does not create five times the capacity to understand their consequences.&lt;/p&gt;

&lt;p&gt;In a June 2026 &lt;a href="https://about.gitlab.com/press/releases/2026-06-23-gitlab-research-reveals-organizations-are-generating-ai-code-faster-than-they-can-control-it/" rel="noopener noreferrer"&gt;survey commissioned by GitLab and conducted by The Harris Poll&lt;/a&gt;, 85% of 1,528 developers and technology buyers agreed that AI had shifted the bottleneck from writing code to reviewing and validating it.&lt;/p&gt;

&lt;p&gt;A survey records perception rather than delivery telemetry, so it is not proof of a universal effect. It does show that teams adopting these tools feel pressure moving into verification and governance.&lt;/p&gt;

&lt;p&gt;The scarce resource is no longer only the ability to produce a candidate change. It is the ability to state what should happen, provide the context the agent cannot infer, and decide which evidence is strong enough to ship.&lt;/p&gt;

&lt;h2&gt;
  
  
  Working Is a Narrow Claim
&lt;/h2&gt;

&lt;p&gt;A working result is valuable. It may mean the application loaded, the requested flow worked once, or the tests selected by the agent passed.&lt;/p&gt;

&lt;p&gt;Production asks wider questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the implementation match the real product intent?&lt;/li&gt;
&lt;li&gt;Does it follow architectural and security constraints that were absent from the prompt?&lt;/li&gt;
&lt;li&gt;Does it integrate with private systems correctly?&lt;/li&gt;
&lt;li&gt;What established behavior outside the changed files could be affected?&lt;/li&gt;
&lt;li&gt;What was not tested or inspected?&lt;/li&gt;
&lt;li&gt;Who owns the remaining uncertainty?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude Code and Codex reduce the effort required to implement and investigate. They do not collapse these questions into a green test run.&lt;/p&gt;

&lt;p&gt;In 2025, the production gap looked like a limitation of generation quality. In 2026, capable agents show that the deeper gap is the delivery system around generation.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Successful Task Can Still Produce a Bad Release
&lt;/h2&gt;

&lt;p&gt;Consider an illustrative case.&lt;/p&gt;

&lt;p&gt;A team asks an agent to replace authentication middleware in one service. The agent updates the interface, migrates the known callers, adds tests, and passes the repository checks. Against the assigned task, the result looks complete.&lt;/p&gt;

&lt;p&gt;After release, an internal administration flow fails because it depends on an undocumented error response from the old middleware. The broken behavior sits outside the files and checks the agent used.&lt;/p&gt;

&lt;p&gt;The agent completed the assigned task. The delivery system failed to describe the full behavior that had to remain stable.&lt;/p&gt;

&lt;p&gt;This is the production boundary. Agent execution is judged against the task. A release must be judged against the product behavior and operational dependencies the change could affect.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fszw6uonh4rm48evtct13.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fszw6uonh4rm48evtct13.png" alt="A completed agent task still needs verification across product behavior, downstream dependencies, and operational impact" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Expertise Became More Valuable
&lt;/h2&gt;

&lt;p&gt;The more capable the agent becomes, the more valuable clear judgment becomes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/research/claude-code-expertise" rel="noopener noreferrer"&gt;Anthropic's research on agentic coding&lt;/a&gt; found a recurring division of labor: people made most planning decisions about what to do, while Claude made more execution decisions about how to do it. Domain expertise helped people give better direction and recover when the agent misunderstood the task.&lt;/p&gt;

&lt;p&gt;The agent can remove a great deal of implementation friction. That increases the leverage of the person who understands the problem, the system, and the consequences.&lt;/p&gt;

&lt;p&gt;The valuable developer is not merely the fastest typist. It is the person who can turn an ambiguous request into a precise task, recognize when a plausible implementation violates an important constraint, and ask for evidence that tests the real risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five Responsibilities That Become More Important
&lt;/h2&gt;

&lt;p&gt;Engineering leaders should stop treating agent supervision as only an upgraded code-review problem. It is a release-accountability problem.&lt;/p&gt;

&lt;p&gt;Five responsibilities become more important as agents become more capable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Specify intent.&lt;/strong&gt; Define the behavior, boundaries, and acceptance criteria before implementation begins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curate context.&lt;/strong&gt; Maintain repository instructions, architectural decisions, product constraints, and operating knowledge the agent needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bound execution.&lt;/strong&gt; Decide which files, tools, networks, credentials, and environments the agent may access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demand evidence.&lt;/strong&gt; Require the relevant builds, tests, reviews, and inspections, including a clear record of what did not run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Own the outcome.&lt;/strong&gt; Keep the release decision with an accountable person who understands the remaining uncertainty.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is not a retreat from automation. It is how automation becomes usable for consequential work.&lt;/p&gt;

&lt;p&gt;Agent adoption should not be measured only by completed tasks or accepted code. The stronger measure is whether faster execution is matched by clearer intent, independent evidence, and explicit ownership.&lt;/p&gt;

&lt;p&gt;Vibe coding grew up because the tools grew up.&lt;/p&gt;

&lt;p&gt;Production got harder for the same reason.&lt;/p&gt;

&lt;p&gt;The prompt can start the implementation. It cannot own what ships.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is adapted from &lt;a href="https://www.startearly.ai/post/vibe-coding-prompt-to-production---part-1" rel="noopener noreferrer"&gt;Vibe Coding Grew Up. Production Got Harder.&lt;/a&gt; on the Early blog, which includes the full source list and Part 2 of the series.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
