<?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: Antonio</title>
    <description>The latest articles on DEV Community by Antonio (@swina).</description>
    <link>https://dev.to/swina</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%2F204349%2F906e2652-3ea1-44b2-87fa-4b4f8aedd7c3.jpeg</url>
      <title>DEV Community: Antonio</title>
      <link>https://dev.to/swina</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/swina"/>
    <language>en</language>
    <item>
      <title>Plans before code: keeping an AI inside the architecture</title>
      <dc:creator>Antonio</dc:creator>
      <pubDate>Tue, 27 Oct 2026 10:22:30 +0000</pubDate>
      <link>https://dev.to/swina/plans-before-code-keeping-an-ai-inside-the-architecture-45mm</link>
      <guid>https://dev.to/swina/plans-before-code-keeping-an-ai-inside-the-architecture-45mm</guid>
      <description>&lt;p&gt;An AI assistant does not remember yesterday. It is fast, it is willing, and it will cross an architectural line if that is the shortest way to make a test pass. In &lt;a href="https://whoobe.dev" rel="noopener noreferrer"&gt;Whoobe&lt;/a&gt; we handle this with written plans: short documents that fix the decisions, the limits and the way to know a piece of work is done, before any code is written. The plans are in the open repository under &lt;a href="https://github.com/swina/whoobe_project/tree/master/docs/plans" rel="noopener noreferrer"&gt;&lt;code&gt;docs/plans&lt;/code&gt;&lt;/a&gt;, 72 files as of 17 October 2026. This post uses one of them to show what they do, and what they do not.&lt;/p&gt;

&lt;h2&gt;
  
  
  One case: a flow that started itself
&lt;/h2&gt;

&lt;p&gt;On 16 October we tried an automation on a real engine. A flow received the event &lt;code&gt;object.updated&lt;/code&gt;, changed a field of the same record through its own API client, and that change was an event too. With the protection switched off it ran three times and stopped, only because the second value was the same as the third and the third write changed nothing. With a value that changes each time (a timestamp, an id from an external service) it would never have stopped, and Whoobe had no limit of its own.&lt;/p&gt;

&lt;p&gt;The fix was not obvious, so the first thing written was the plan: &lt;a href="https://github.com/swina/whoobe_project/blob/master/docs/plans/automations/object-events-loop-guard.md" rel="noopener noreferrer"&gt;object-events-loop-guard.md&lt;/a&gt;. It did four things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It described what happened,&lt;/strong&gt; with the timeline of the three events, before proposing anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It split the answer in three layers,&lt;/strong&gt; each useful alone: a circuit breaker that needs nothing from the flow, an explicit "end of flow" mark on a write, and a correlation id that needs the flow's help.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It listed the decisions to make&lt;/strong&gt; and left them open for the owner: the numbers of the breaker, whether a person's edit should count, whether a stopped delivery is ever retried.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It set the steps,&lt;/strong&gt; each one a commit, with the tests before the code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Six minutes after the first version of the plan the owner's choices were in it: the mark is a plain header, &lt;code&gt;X-Whoobe-Flow: stop&lt;/code&gt;, the same for every engine; and the breaker counts only API clients and the system, never people, so that two people (or a person and a flow) editing together are never stopped. Twenty-six minutes after the first commit of the plan, the commit with the code was in. It is 22 files and about 460 added lines: the breaker, the new delivery status &lt;code&gt;stopped&lt;/code&gt;, the header, the badge on a subscription, the log filter, the documentation and the tests. The branch was merged later that morning.&lt;/p&gt;

&lt;p&gt;The plan also recorded what was &lt;strong&gt;not&lt;/strong&gt; built. Layer C stayed out. A per-client "exempt" switch was dropped, because a burst on one record by one client is suspicious in itself and imports are already silent. The status line at the top of the plan says so.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a plan does for an AI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It is the memory.&lt;/strong&gt; The assistant starts each session without the last one. The plan is the part of the last session that survives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It moves the argument before the code.&lt;/strong&gt; Changing a sentence costs nothing; changing a choice after the code and the tests costs a day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It sets the limits.&lt;/strong&gt; "No automation engine of our own", "credentials stay on the server" and "one workspace per organisation" are written as decisions, with their cost. A limit that is written down can be checked; one that lives in someone's head is crossed by the shortest path.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It lets a person review the intent&lt;/strong&gt; instead of every line. You read the plan, then check that the code respects it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What we put in a plan
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;What happened or what is needed, in facts.&lt;/li&gt;
&lt;li&gt;A proposal with its alternatives, and what each costs.&lt;/li&gt;
&lt;li&gt;The decisions still open, and who takes them. When one is decided it is struck through and the choice is written beside it.&lt;/li&gt;
&lt;li&gt;The steps, each one a commit, with the tests first.&lt;/li&gt;
&lt;li&gt;What is &lt;strong&gt;not&lt;/strong&gt; in the plan.&lt;/li&gt;
&lt;li&gt;A status line at the top, updated when the work is done, with what was left out.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where plans fail
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;They go stale.&lt;/strong&gt; A decision page last updated on 13 October says that Whoobe emitting a webhook for a record change is "not built yet". It has been built since, and the page still says otherwise. An assistant that reads that page will trust it. A plan that is no longer true is worse than none, so each one needs a date, a status, or a note that it is superseded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They can say too much.&lt;/strong&gt; A plan that lists functions and lines gets followed to the letter even when the real code has moved. Choices, reasons, costs and a way to tell it is finished last longer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They verify nothing.&lt;/strong&gt; A plan states an intention. Only a test shows that the limit holds: the route-drift test and the two-stack isolation tests guard the boundary, not the document.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They cannot cover what nobody foresaw.&lt;/strong&gt; Two of the worst findings of the project (function permissions never enforced, a push key served by a public route) were in areas where no plan had anticipated the problem. They were found by reading the documentation. See &lt;a href="https://dev.to/blog/article/building-whoobe-with-ai-what-we-measured"&gt;what we measured&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What we do not claim
&lt;/h2&gt;

&lt;p&gt;This is one project and one architect. Plans cost time, and for a small change the overhead is not worth it: a typo does not need a plan. We have no comparison of the same work done without plans, so we cannot say how much they save. What we can say is that the loop above went from a puzzling test to a bounded, tested, documented behaviour in a morning, and that every choice in it can be read afterwards, by anyone, in the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to try it
&lt;/h2&gt;

&lt;p&gt;Start with one decision, not a template: write what you decide, why, what it costs and when you would revisit it. Add the test that would fail if the decision were broken. Date it. Then give it to the assistant before the next task.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>documentation</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>AI and The Myth of the Death of QA</title>
      <dc:creator>Antonio</dc:creator>
      <pubDate>Tue, 27 Oct 2026 10:16:57 +0000</pubDate>
      <link>https://dev.to/swina/ai-and-the-myth-of-the-death-of-qa-2amd</link>
      <guid>https://dev.to/swina/ai-and-the-myth-of-the-death-of-qa-2amd</guid>
      <description>&lt;h2&gt;
  
  
  Why AI Makes Quality Assurance More Critical Than Ever
&lt;/h2&gt;

&lt;p&gt;In the wake of the generative AI boom, a dangerous narrative has taken hold of the software engineering industry: &lt;em&gt;“Artificial Intelligence will code, test, and deploy everything—Quality Assurance (QA) is dead.”&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;To anyone who has spent decades enforcing rigorous quality frameworks, this statement sounds like pure madness. And it is. &lt;/p&gt;

&lt;p&gt;This misconception stems from a fundamental misunderstanding: confusing &lt;strong&gt;software testing&lt;/strong&gt; (the mechanical execution of test cases) with &lt;strong&gt;Quality Assurance&lt;/strong&gt; (the systematic governance of processes, standards, and risk mitigation). As AI accelerates code production to warp speed, QA is not disappearing. It is becoming the ultimate bulwark against systemic, automated chaos.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Illusion of Automated Perfection
&lt;/h2&gt;

&lt;p&gt;Tools like GitHub Copilot, Cursor, and advanced LLMs have undoubtedly transformed coding. They generate boilerplate, suggest functions, and speed up initial development. However, these tools are built on probabilistic models—they predict the most likely next character, not the most logical or secure solution. &lt;/p&gt;

&lt;p&gt;Without a rigorous QA framework, treating AI as an autonomous developer leads to three major vulnerabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Entropy at Scale:&lt;/strong&gt; AI allows teams to generate massive volumes of code in seconds. Without process control, companies will soon find themselves drowning in technical debt, maintaining software ecosystems whose compliance, architecture, and long-term stability are entirely unverified.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The Circular Logic Fallacy:&lt;/strong&gt; You cannot have a probabilistic model validate its own output. Entrusting AI to perform final quality audits on AI-generated code violates a foundational engineering principle: deterministic verification requires an independent, human-centric oversight mechanism.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The AI Agent Nightmare:&lt;/strong&gt; Recent industry incidents have shown that when AI agents are given execution autonomy without human-in-the-loop validation, they can misinterpret errors and take catastrophic actions—such as accidentally wiping production databases or introducing silent, hallucinated security vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  From Military Rigor to Modern Software
&lt;/h2&gt;

&lt;p&gt;In high-stakes industries—such as aerospace, defense, and multinational mission-critical programs—quality is never an afterthought. Frameworks like &lt;strong&gt;NATO’s AQAP (Allied Quality Assurance Publications)&lt;/strong&gt; and &lt;strong&gt;ISO-9000&lt;/strong&gt; were established because, in those worlds, a software failure doesn't just mean a crashed app; it means lost lives, compromised security, and systemic collapse.&lt;/p&gt;

&lt;p&gt;Today, software runs our hospitals, manages our financial networks, pilots our vehicles, and controls our power grids. The IT industry can no longer afford to treat software development with a "move fast and break things" amateurism. &lt;/p&gt;

&lt;p&gt;Just as robotic automation in industrial factories required &lt;em&gt;more&lt;/em&gt; stringent quality control and auditing—not less—the automation of code generation demands an unprecedented escalation of QA discipline.&lt;/p&gt;

&lt;p&gt;Traditional Development: [Human Writes Code] ──&amp;gt; [Human/Automated Testing] ──&amp;gt; [Controlled Deployment]&lt;br&gt;
AI-Driven Development: [AI Generates Bulk] ──&amp;gt; ⚠️ [CRITICAL QA GOVERNANCE NEEDED] ──&amp;gt; [Safe Deployment]&lt;/p&gt;




&lt;h2&gt;
  
  
  The Evolution of the QA Role
&lt;/h2&gt;

&lt;p&gt;The role of the QA professional is not dying; it is returning to its architectural and noble roots. The QA expert of the AI era is transitioning from a manual checklist executor to a &lt;strong&gt;Systems Quality Auditor&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;Traditional Testing&lt;/th&gt;
&lt;th&gt;The New AI QA Governance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Writing manual UI test cases&lt;/td&gt;
&lt;td&gt;Designing the rules of engagement between human devs and AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Finding bugs after compilation&lt;/td&gt;
&lt;td&gt;Auditing data compliance and structural risk management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Checking syntax execution&lt;/td&gt;
&lt;td&gt;Ensuring adherence to international standards and regulations (e.g., EU AI Act)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The modern QA specialist must act as an investigator and a process architect. Their job is to look at AI-generated solutions with chronic skepticism, ensuring that the software strictly aligns with the company's broader operational and security blueprints.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion: Quality is a Process, Not a Tool
&lt;/h2&gt;

&lt;p&gt;Believing that AI eliminates the need for QA is the equivalent of believing that automatic spell-checkers eliminate the need for editors, journalists, and legal reviewers. &lt;/p&gt;

&lt;p&gt;The integration of AI in software development is inevitable, but its success relies entirely on the &lt;strong&gt;methodological maturity&lt;/strong&gt; of the organization. True IT leadership means recognizing that speed without governance is just a faster way to fail. To pilot the future of technology safely, we do not need fewer QA professionals—we need to empower them to bring the rigor of classic quality engineering into the age of artificial intelligence.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>qa</category>
      <category>vibecoding</category>
    </item>
  </channel>
</rss>
