<?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: qnbs</title>
    <description>The latest articles on DEV Community by qnbs (@qnbs).</description>
    <link>https://dev.to/qnbs</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%2F4141999%2Fe504de23-f790-452a-b4c0-6737de728058.png</url>
      <title>DEV Community: qnbs</title>
      <link>https://dev.to/qnbs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/qnbs"/>
    <language>en</language>
    <item>
      <title>Parallel Agents Need a Work Topology, Not Just More Copies</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 19:05:00 +0000</pubDate>
      <link>https://dev.to/qnbs/parallel-agents-need-a-work-topology-not-just-more-copies-27o6</link>
      <guid>https://dev.to/qnbs/parallel-agents-need-a-work-topology-not-just-more-copies-27o6</guid>
      <description>&lt;p&gt;Launching five agents on one large issue does not create five independent units of progress. If all five edit the same module, interpret the same vague requirement, and compete for one integration decision, the team may have created a queue of conflicting patches.&lt;/p&gt;

&lt;p&gt;Parallel work pays off when tasks can progress independently and their boundaries are clear. The hard part is often not running more agents. It is designing a work topology that limits shared state, names an owner for every interface, and budgets time for integration and review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Draw the dependency graph before assigning workers
&lt;/h2&gt;

&lt;p&gt;Break the goal into work units and mark which units depend on others. A useful split might be:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Work unit&lt;/th&gt;
&lt;th&gt;Depends on&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;th&gt;Can proceed in parallel?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Define the new request/response contract&lt;/td&gt;
&lt;td&gt;Product decision&lt;/td&gt;
&lt;td&gt;Reviewed interface note&lt;/td&gt;
&lt;td&gt;No, decide first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add a parser for the settled contract&lt;/td&gt;
&lt;td&gt;Contract note&lt;/td&gt;
&lt;td&gt;Parser and focused tests&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Update a separate client adapter&lt;/td&gt;
&lt;td&gt;Contract note&lt;/td&gt;
&lt;td&gt;Adapter and focused tests&lt;/td&gt;
&lt;td&gt;Yes, if its files are independent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add integration coverage&lt;/td&gt;
&lt;td&gt;Parser and adapter&lt;/td&gt;
&lt;td&gt;Integration tests&lt;/td&gt;
&lt;td&gt;After both outputs exist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Validate the combined behavior&lt;/td&gt;
&lt;td&gt;All changes&lt;/td&gt;
&lt;td&gt;One integrated result&lt;/td&gt;
&lt;td&gt;No, one owner should accept it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The table makes dependencies visible. Starting implementation before the interface is settled can produce parallel work that must all be redone when the decision changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parallelize independent slices, not copies of the same judgment
&lt;/h2&gt;

&lt;p&gt;Good candidates for parallel work usually have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;separate files or modules;&lt;/li&gt;
&lt;li&gt;explicit input and output contracts;&lt;/li&gt;
&lt;li&gt;limited shared mutable state;&lt;/li&gt;
&lt;li&gt;independent tests or fixtures;&lt;/li&gt;
&lt;li&gt;a clear handoff point.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Poor candidates include two agents editing the same state machine, multiple workers independently redefining a public API, or several reviewers given the same context and then treated as statistically independent votes. Different agent names do not guarantee different assumptions, tools, training data, or blind spots.&lt;/p&gt;

&lt;p&gt;For one current platform example, OpenAI’s Agents API announcement describes coordinating subagents and running programmatic tool calls in parallel. Those are execution capabilities, not evidence by themselves that a particular work decomposition reduces end-to-end effort.&lt;/p&gt;

&lt;p&gt;Parallel analysis can still be useful. Ask one worker to inspect migration risks and another to inspect test coverage, then have a responsible integrator compare their evidence. Do not count agreement as proof when both may have relied on the same mistaken premise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Name one owner for every shared surface
&lt;/h2&gt;

&lt;p&gt;Assign ownership at the level where conflicts actually occur:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one owner for the interface or schema;&lt;/li&gt;
&lt;li&gt;one owner for each shared file or module;&lt;/li&gt;
&lt;li&gt;one integrator for the combined branch;&lt;/li&gt;
&lt;li&gt;one person accountable for the final acceptance decision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Workers should return bounded changes with a short report: paths changed, tests run, results, assumptions, and unresolved questions. Avoid giving every worker authority to merge into the shared branch; that converts a coordination problem into a shared-state race.&lt;/p&gt;

&lt;p&gt;For code, isolated branches or worktrees can reduce accidental collisions. For research or review, separate notes with source links preserve the reasoning each worker used. The integration owner then compares outputs and resolves contradictions rather than concatenating them blindly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Include integration in the schedule
&lt;/h2&gt;

&lt;p&gt;Total completion time is shaped by the longest dependency path plus handoffs, conflict resolution, combined checks, and review. If the team counts only the time spent by workers, it leaves integration invisible.&lt;/p&gt;

&lt;p&gt;For example, three parallel changes may each finish quickly but share a generated file, rely on different versions of a contract, and fail together under the integration tests. The result is not three completed tasks; it is one unresolved integration episode.&lt;/p&gt;

&lt;p&gt;Reserve explicit time for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;collecting results and confirming each worker stayed within scope;&lt;/li&gt;
&lt;li&gt;comparing assumptions and resolving interface differences;&lt;/li&gt;
&lt;li&gt;applying the changes to one canonical branch or workspace;&lt;/li&gt;
&lt;li&gt;running checks against the combined state;&lt;/li&gt;
&lt;li&gt;reviewing seams between components and documenting what remains unknown.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The combined state needs fresh evidence. Separate green results from isolated branches do not prove that their combination works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the smallest useful team
&lt;/h2&gt;

&lt;p&gt;For a first pilot, choose an issue that has at least two genuinely independent slices. Give each slice a named output, separate workspace, and common integration criteria. Record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;time to first useful result;&lt;/li&gt;
&lt;li&gt;human coordination and review minutes;&lt;/li&gt;
&lt;li&gt;duplicate or conflicting work;&lt;/li&gt;
&lt;li&gt;interface changes after work began;&lt;/li&gt;
&lt;li&gt;integration failures and rework;&lt;/li&gt;
&lt;li&gt;combined acceptance result.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then compare with a similar task handled sequentially or with the team’s established workflow. Do not compare a highly decomposable task with a tightly coupled one and attribute the entire difference to agent count.&lt;/p&gt;

&lt;p&gt;Add another worker only when the work graph has another independent slice and the first group’s coordination cost is understood. More workers can increase capacity, but they can also increase the number of handoffs and the effort needed to establish one coherent result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate coordination from authority
&lt;/h2&gt;

&lt;p&gt;A coordinator can distribute work and collect evidence without receiving permission to merge, release, or decide product policy. Keep the coordinator’s authority no broader than its task requires. A human or deterministic gate should own the final acceptance boundary according to the risk of the change.&lt;/p&gt;

&lt;p&gt;This is an organizational design choice as much as a model choice. Clear work units, stable interfaces, isolated execution, and explicit accountability help whether the workers are AI agents, human developers, or a mix of both.&lt;/p&gt;

&lt;h2&gt;
  
  
  The topology review
&lt;/h2&gt;

&lt;p&gt;Before launching parallel work, answer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Which tasks are independent, and which are blocked on a decision?&lt;/li&gt;
&lt;li&gt;Which files, services, datasets, or environments are shared?&lt;/li&gt;
&lt;li&gt;Who owns each shared interface and the final integration?&lt;/li&gt;
&lt;li&gt;How will conflicting assumptions be detected?&lt;/li&gt;
&lt;li&gt;Which tests must run on the combined result?&lt;/li&gt;
&lt;li&gt;How will review and coordination effort be counted?&lt;/li&gt;
&lt;li&gt;What condition ends parallel execution and returns the task to one owner?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the answers are missing, adding agents is likely to make the uncertainty move faster. First make the work graph legible; then parallelize the slices that remain independent.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2509.06216" rel="noopener noreferrer"&gt;Hassan et al., “A Roadmap for Agentic Software Engineering”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openai.com/index/introducing-the-agents-api/" rel="noopener noreferrer"&gt;OpenAI, “Introducing the Agents API” (2026-09-10)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;METR, “We are Changing our Developer Productivity Experiment Design” (2026-02-24)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Source, license, and AI assistance
&lt;/h4&gt;

&lt;p&gt;This article develops the organizational-design and parallel-delegation questions in Part II of &lt;a href="https://archive.org/details/agentic_software_engineering_startrek-tng_essay_chatgpt" rel="noopener noreferrer"&gt;&lt;em&gt;From Vibe Coding to Agentic Software Engineering&lt;/em&gt;&lt;/a&gt;. The source record credits ChatGPT as preparer and identifies CC BY-NC-SA 4.0. This version is substantially reorganized and expanded with a work-topology model, integration practice, and updated references, and is shared under the same license: &lt;a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener noreferrer"&gt;CC BY-NC-SA 4.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; The article text was generated primarily by AI. A human publisher supplied the topic, source material, and editorial direction, and remains responsible for checking claims and examples before publication.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>Measuring Agentic Engineering: Count Review, Rework, and Value</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 18:45:00 +0000</pubDate>
      <link>https://dev.to/qnbs/measuring-agentic-engineering-count-review-rework-and-value-31n</link>
      <guid>https://dev.to/qnbs/measuring-agentic-engineering-count-review-rework-and-value-31n</guid>
      <description>&lt;p&gt;“The agent finished in five minutes” is a timing observation, not a productivity result. Someone may have spent an hour shaping the request, reviewing a large patch, repairing a regression, or waiting while doing other work. Conversely, a task that took the same time may now be reliable enough to attempt when it was previously uneconomic.&lt;/p&gt;

&lt;p&gt;Measuring agentic engineering well means measuring more than output volume or elapsed time. The useful question is whether a workflow produces more acceptable engineering value for the total human and system effort, without silently lowering quality or shifting cost to another stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do not compress unlike outcomes into one score
&lt;/h2&gt;

&lt;p&gt;Use a small dashboard rather than one magic multiplier:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;What to capture&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Outcome&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Accepted tasks or capabilities, with a fixed definition of acceptance&lt;/td&gt;
&lt;td&gt;More code or more closed tickets can still mean less useful work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Elapsed time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Start-to-accepted wall-clock time&lt;/td&gt;
&lt;td&gt;Shows user-visible lead time, but can hide parallel waiting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Human attention&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Active minutes for task framing, supervision, review, and recovery&lt;/td&gt;
&lt;td&gt;Agent runtime is not the same as human effort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rework&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Returned patches, retries that changed nothing, reopened tasks, and reversions&lt;/td&gt;
&lt;td&gt;A fast first pass may create a slower overall path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The same tests, defect checks, maintainability review, and security requirements&lt;/td&gt;
&lt;td&gt;A speed result that relaxes the quality bar is not comparable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;System cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Model/tool usage or infrastructure cost when available&lt;/td&gt;
&lt;td&gt;Helps explain whether the workflow’s benefit is economical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;New work enabled&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Previously deferred tasks that were completed, tracked separately&lt;/td&gt;
&lt;td&gt;Captures expanded capability without pretending there was an identical baseline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These measures answer different questions. Do not add minutes, dollars, defect counts, and newly enabled work into a single total unless a defensible value model exists and stakeholders agree with its assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Count the human work around the agent
&lt;/h2&gt;

&lt;p&gt;Record at least four kinds of time:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Framing:&lt;/strong&gt; understanding the task, defining scope, preparing context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supervision:&lt;/strong&gt; answering questions, correcting direction, and resolving blocked states.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review:&lt;/strong&gt; examining the patch, evidence, and remaining risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recovery:&lt;/strong&gt; rework, repair, rollback, or incident response attributable to the attempt.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Also record agent runtime and idle waiting, but keep them separate. If a developer launches two independent agents and works on another task while they run, adding both agent runtimes to wall-clock time would overstate elapsed time. Counting only the five-minute wait would understate the person’s total effort if they also spent twenty minutes reviewing both results.&lt;/p&gt;

&lt;p&gt;Agree on the accounting rule before gathering data. A useful policy might be: wall-clock time is measured from task start to accepted completion; active human minutes are the sum of time spent on this task even if it occurred in short intervals; agent runtime is recorded separately; overlapping agent runtime is never added to human time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compare like with like
&lt;/h2&gt;

&lt;p&gt;AI-assisted and non-AI tasks should be comparable in scope, task class, repository familiarity, and acceptance bar. If people select only easy tasks for the agent and keep difficult work for themselves, the observed times do not estimate a general effect. If the workflow changes halfway through the measurement window, the before-and-after comparison also includes that change.&lt;/p&gt;

&lt;p&gt;A practical internal pilot can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose a recurring task family, such as test updates or small dependency migrations.&lt;/li&gt;
&lt;li&gt;Record difficulty, repository familiarity, and expected risk before work starts.&lt;/li&gt;
&lt;li&gt;Use matched tasks or a randomized assignment where practical and acceptable.&lt;/li&gt;
&lt;li&gt;Freeze the same definition of “accepted” for both paths.&lt;/li&gt;
&lt;li&gt;Record every eligible task, including abandoned, blocked, or manually completed ones.&lt;/li&gt;
&lt;li&gt;Review the results by task class and experience level before calculating an overall figure.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A small pilot can identify workflow problems. It usually cannot establish a universal productivity effect. Report the number and kind of tasks, the spread of results, changes in the workflow, and what was excluded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design for the measurement problems already visible
&lt;/h2&gt;

&lt;p&gt;METR’s randomized 2025 study of experienced open-source developers and familiar repositories reported a slowdown for the early-2025 tools it tested. Its 2026 update said the follow-on measurements were difficult to interpret: some developers avoided tasks assigned to the no-AI condition, and some found it hard to report time when several agents ran concurrently and they worked on unrelated tasks while waiting.&lt;/p&gt;

&lt;p&gt;The lesson is methodological, not a forecast that agents slow developers down. The same workflow can change who accepts a task, which tasks are attempted, and how time is spent. A credible measurement plan should record those shifts instead of treating the task list and clock as neutral.&lt;/p&gt;

&lt;p&gt;For example, report task substitution separately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Existing-task effect:&lt;/strong&gt; did the workflow change effort or quality on work the team already did?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New-task effect:&lt;/strong&gt; did it make a new kind of work feasible?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Value effect:&lt;/strong&gt; was the new work worth doing to the people who use it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An agent can increase capability without shortening every task. It can also shorten a task while increasing review burden or defect risk. Keep these outcomes visible instead of forcing them into a single percentage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use a quality gate, not a speed target
&lt;/h2&gt;

&lt;p&gt;Set the acceptance bar before the experiment. Specify what tests, review conditions, security controls, and operational evidence each task class requires. Decide how failed checks, reopened changes, or escapes affect the outcome.&lt;/p&gt;

&lt;p&gt;For a pilot, ask a reviewer to classify defects without being told whether AI was used where feasible. Blinding may be impractical, but a consistent rubric still helps. Include time for review in the measurement; otherwise the team may appear faster simply because the review has not happened yet.&lt;/p&gt;

&lt;p&gt;Do not reward an agent for closing more tasks if it broadens scope, weakens tests, or leaves work for someone else. A useful headline can be as simple as: “Across this task family, median accepted completion time changed by X; review effort changed by Y; defect/rework observations were Z; the sample is small and the task distribution changed in these ways.” Only calculate X, Y, or Z from actual observations.&lt;/p&gt;

&lt;h2&gt;
  
  
  A one-page measurement card
&lt;/h2&gt;

&lt;p&gt;Before a pilot, agree on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Question:&lt;/strong&gt; What change are we trying to estimate?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task set:&lt;/strong&gt; Which tasks count, and how will their difficulty be recorded?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparison:&lt;/strong&gt; How are assisted and comparison tasks selected?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceptance:&lt;/strong&gt; Which checks and review conditions must both paths pass?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time rule:&lt;/strong&gt; How are framing, supervision, review, waiting, and overlap counted?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality signals:&lt;/strong&gt; Which defects, reopens, or reversions will be tracked?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analysis:&lt;/strong&gt; Which groups or task types will be reported separately?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop rule:&lt;/strong&gt; What quality, safety, or cost result would pause the pilot?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The stop rule matters. Averages should not hide a workflow that is faster on routine changes but unsafe on migration or security work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optimize for useful capability per unit of attention
&lt;/h2&gt;

&lt;p&gt;The most valuable result may be fewer repetitive steps, faster feedback, less context switching, or the ability to attempt a previously deferred improvement. Those benefits matter, but they should be described accurately: a measured time reduction, a measured quality change, or a new capability observed in a specific workflow.&lt;/p&gt;

&lt;p&gt;Agentic engineering is not measured well by how many tokens it generates, how many tools it calls, or how confidently it reports success. Measure outcomes people accept, all the effort required to reach them, and the quality of the resulting system. Then preserve uncertainty in the report.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2507.09089" rel="noopener noreferrer"&gt;Becker et al., “Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;METR, “We are Changing our Developer Productivity Experiment Design” (2026-02-24)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Source, license, and AI assistance
&lt;/h4&gt;

&lt;p&gt;This article develops the conditional-productivity and measurement questions in Part II of &lt;a href="https://archive.org/details/agentic_software_engineering_startrek-tng_essay_chatgpt" rel="noopener noreferrer"&gt;&lt;em&gt;From Vibe Coding to Agentic Software Engineering&lt;/em&gt;&lt;/a&gt;. The source record credits ChatGPT as preparer and identifies CC BY-NC-SA 4.0. This version is substantially rewritten and expanded with a measurement dashboard, pilot design, and updated research references, and is shared under the same license: &lt;a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener noreferrer"&gt;CC BY-NC-SA 4.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; The article text was generated primarily by AI. A human publisher supplied the topic, source material, and editorial direction, and remains responsible for checking claims and examples before publication.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>Least Authority for Coding Agents: Permissions by Task, Not by Role</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 18:25:00 +0000</pubDate>
      <link>https://dev.to/qnbs/least-authority-for-coding-agents-permissions-by-task-not-by-role-42b6</link>
      <guid>https://dev.to/qnbs/least-authority-for-coding-agents-permissions-by-task-not-by-role-42b6</guid>
      <description>&lt;p&gt;An agent may be capable of editing a release workflow, deleting an environment, or publishing a package. That capability does not answer whether the current task needs any of those powers.&lt;/p&gt;

&lt;p&gt;The safer design question is smaller: for this episode, which exact reads and writes are necessary, against which resources, and with what limits? This applies the familiar principle of least privilege to agent workflows. The access belongs to the task and its risk, not to a broad identity called “the coding agent.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Start from actions, not trust labels
&lt;/h2&gt;

&lt;p&gt;“Trusted agent” is too coarse to be an access policy. A single workflow may read a repository, edit a branch, run a shell command, create a pull request, merge it, and deploy. Those actions have different consequences and should not inherit one permission setting merely because one agent can perform them all.&lt;/p&gt;

&lt;p&gt;Write an action inventory before enabling tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;Minimum access for a draft task&lt;/th&gt;
&lt;th&gt;Higher-risk boundary&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Read source and tests&lt;/td&gt;
&lt;td&gt;One repository&lt;/td&gt;
&lt;td&gt;Read-only repository access&lt;/td&gt;
&lt;td&gt;Secrets and private data excluded unless essential&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edit implementation&lt;/td&gt;
&lt;td&gt;Isolated branch or worktree&lt;/td&gt;
&lt;td&gt;Write to the task branch&lt;/td&gt;
&lt;td&gt;Protected branch remains unavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run checks&lt;/td&gt;
&lt;td&gt;Local or disposable environment&lt;/td&gt;
&lt;td&gt;Execute within resource and network limits&lt;/td&gt;
&lt;td&gt;No production credentials or unbounded host access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create a review request&lt;/td&gt;
&lt;td&gt;Named repository&lt;/td&gt;
&lt;td&gt;Create a pull request&lt;/td&gt;
&lt;td&gt;No merge permission&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change shared configuration&lt;/td&gt;
&lt;td&gt;Specific setting or workflow&lt;/td&gt;
&lt;td&gt;Prepare a proposed diff&lt;/td&gt;
&lt;td&gt;Human review and approval before applying&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release or deploy&lt;/td&gt;
&lt;td&gt;Release system&lt;/td&gt;
&lt;td&gt;None for ordinary implementation tasks&lt;/td&gt;
&lt;td&gt;Separate, explicit authorization and identity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The last column is not a universal tiering standard. It is a prompt for a team to match the boundary to its own system and consequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Divide access into useful slices
&lt;/h2&gt;

&lt;p&gt;A practical starting model has four slices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Observe:&lt;/strong&gt; read only the task context and resources needed to understand it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prepare:&lt;/strong&gt; edit an isolated branch or workspace and run bounded local checks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Propose:&lt;/strong&gt; submit a reviewable change or draft request without applying it to a protected target.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commit a consequential transition:&lt;/strong&gt; merge, publish, deploy, delete shared data, rotate credentials, or change access policy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Many low-risk episodes can safely stop after the second or third slice. The fourth is a separate decision. Keeping it separate lets the agent perform useful engineering work without turning access to a tool into authority to use every function that tool exposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the boundary real in the toolchain
&lt;/h2&gt;

&lt;p&gt;Instructions such as “do not deploy” help, but a token that can deploy still makes deployment possible if the agent misunderstands the request or an input steers it toward the wrong action. Prefer controls that make out-of-scope actions unavailable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use read-only credentials for investigation;&lt;/li&gt;
&lt;li&gt;scope write tokens to the smallest repository or resource set;&lt;/li&gt;
&lt;li&gt;grant access only for the time needed;&lt;/li&gt;
&lt;li&gt;use disposable environments for commands that may have side effects;&lt;/li&gt;
&lt;li&gt;keep production secrets out of the agent’s environment;&lt;/li&gt;
&lt;li&gt;separate pull-request creation from merge and deployment permissions;&lt;/li&gt;
&lt;li&gt;set explicit token permissions rather than inheriting broad defaults.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub’s Actions security documentation, for example, recommends read-only defaults for the workflow token and increasing permissions only where a job needs them. Its workflow syntax also lets maintainers state per-permission read, write, or none. That is an implementation example of reducing ambient authority; it does not prove that a workflow is safe by itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat incoming repository content as data
&lt;/h2&gt;

&lt;p&gt;An agent may read issue text, source comments, test fixtures, generated files, or web pages. Some of that text may contain instructions. Reading it does not make it a legitimate source of authority to widen permissions, reveal secrets, or change the assigned goal.&lt;/p&gt;

&lt;p&gt;Keep the trusted task contract separate from material being inspected. Tool wrappers should validate the target and operation against the current task’s grant. A repository file can explain how the project works; it cannot authorize a deployment merely by saying “deploy now.”&lt;/p&gt;

&lt;p&gt;This separation is especially important when the same agent can both interpret arbitrary text and invoke tools. A narrow tool that accepts a structured operation against an approved resource is easier to bound than an unrestricted shell with ambient credentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bind approval to the action
&lt;/h2&gt;

&lt;p&gt;“You have my approval” is not a useful system boundary if it does not specify what action was reviewed. For an operation that requires human authorization, show the person:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the exact target and intended change;&lt;/li&gt;
&lt;li&gt;the reason the operation is needed;&lt;/li&gt;
&lt;li&gt;the relevant diff or payload;&lt;/li&gt;
&lt;li&gt;the expected effect and rollback path;&lt;/li&gt;
&lt;li&gt;the identity that will execute it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then require an affirmative approval for that action. If the target or payload changes materially, the old approval should not silently carry over. For high-impact transitions, use a separate approval and execution identity where the organization’s controls support it.&lt;/p&gt;

&lt;p&gt;An approval should also have a clear expiration. A person who approved a patch yesterday did not necessarily approve a new patch today or a release of an artifact built from different source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make reversibility part of access design
&lt;/h2&gt;

&lt;p&gt;Reversible operations are easier to delegate than irreversible ones, but “reversible” must be checked rather than assumed. A branch edit can usually be discarded. A migration that deletes old records may not be. A draft post can be withdrawn; a public post can be copied, indexed, or quoted after deletion.&lt;/p&gt;

&lt;p&gt;Before granting write access, ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Can the change be previewed before it takes effect?&lt;/li&gt;
&lt;li&gt;Can the agent operate on a disposable copy?&lt;/li&gt;
&lt;li&gt;Is the result idempotent if a tool call is repeated?&lt;/li&gt;
&lt;li&gt;Is there a reliable rollback or compensating action?&lt;/li&gt;
&lt;li&gt;Who owns recovery if an operation partially succeeds?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The more difficult recovery would be, the more tightly the action should be scoped and the more clearly a human must approve the final transition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Revisit permissions when the task changes
&lt;/h2&gt;

&lt;p&gt;Least authority is not a one-time role assignment. A task can change while being investigated. If a documentation issue turns out to need a schema migration, the original grant does not automatically expand. The agent should state the new action it needs, why it is needed, and what permission boundary it would cross.&lt;/p&gt;

&lt;p&gt;For repeat work, encode the minimum grant in the workflow and review it as the tools or task change. Remove permissions that are no longer needed. A broad permission is not justified by the fact that it made one difficult episode convenient.&lt;/p&gt;

&lt;h2&gt;
  
  
  The permission review
&lt;/h2&gt;

&lt;p&gt;Before a coding agent starts, check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What can it read that is not needed for this task?&lt;/li&gt;
&lt;li&gt;What can it write, and where?&lt;/li&gt;
&lt;li&gt;Which commands can reach the network or modify shared state?&lt;/li&gt;
&lt;li&gt;Could a tool call cross a protected boundary without a person?&lt;/li&gt;
&lt;li&gt;What happens if input text tries to redirect the agent?&lt;/li&gt;
&lt;li&gt;Can each higher-risk action be presented and approved separately?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The useful default is simple: give an agent the smallest operational space in which it can produce and verify the requested change. Let it prepare work; keep consequential authority at the boundary where the consequences become real.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final" rel="noopener noreferrer"&gt;NIST SP 800-53 Rev. 5, AC-6: Least Privilege&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions/reference/security/secure-use" rel="noopener noreferrer"&gt;GitHub Actions: Secure use reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax" rel="noopener noreferrer"&gt;GitHub Actions workflow syntax: token permissions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Source, license, and AI assistance
&lt;/h4&gt;

&lt;p&gt;This article adapts the least-authority, separation-of-duties, and escalation principles in Part II of &lt;a href="https://archive.org/details/agentic_software_engineering_startrek-tng_essay_chatgpt" rel="noopener noreferrer"&gt;&lt;em&gt;From Vibe Coding to Agentic Software Engineering&lt;/em&gt;&lt;/a&gt;, whose source record credits ChatGPT as preparer and identifies CC BY-NC-SA 4.0. This version is substantially reorganized and expanded with an action matrix, examples, and primary security references, and is shared under the same license: &lt;a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener noreferrer"&gt;CC BY-NC-SA 4.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; The article text was generated primarily by AI. A human publisher supplied the topic, source material, and editorial direction, and remains responsible for checking claims and examples before publication.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Observe, Model, Act, Verify: A Control Loop for Coding Agents</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 18:05:00 +0000</pubDate>
      <link>https://dev.to/qnbs/observe-model-act-verify-a-control-loop-for-coding-agents-56m6</link>
      <guid>https://dev.to/qnbs/observe-model-act-verify-a-control-loop-for-coding-agents-56m6</guid>
      <description>&lt;p&gt;A coding agent can run tests, read the failure, edit code, and run the tests again. That sounds like a simple loop. Without a control structure, though, the same loop can become a string of untracked edits, repeated commands, and increasingly confident summaries.&lt;/p&gt;

&lt;p&gt;A dependable workflow treats every action as a hypothesis about the system and every result as evidence that may change the next step. It also names the points where an agent must stop. The goal is not to keep the loop running until it says “done”; the goal is to produce a useful state transition with evidence a reviewer can inspect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Model the work as states
&lt;/h2&gt;

&lt;p&gt;An engineering episode can be represented as a small state machine:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Question to answer&lt;/th&gt;
&lt;th&gt;Exit condition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Intake&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What outcome, scope, and constraints were requested?&lt;/td&gt;
&lt;td&gt;The task contract is understood; material ambiguity is recorded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Observe&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What do the repository, tests, logs, and docs actually show?&lt;/td&gt;
&lt;td&gt;Relevant facts and unknowns are separated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What failure or change mechanism best explains the evidence?&lt;/td&gt;
&lt;td&gt;There is a testable working hypothesis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Plan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What bounded actions can test that hypothesis?&lt;/td&gt;
&lt;td&gt;Actions fit the authority and scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Act&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What changed, and what commands or tools ran?&lt;/td&gt;
&lt;td&gt;The planned action produced a result or a stop condition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Evaluate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Does the result support the acceptance conditions?&lt;/td&gt;
&lt;td&gt;Evidence is accepted, contradicted, stale, or insufficient&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Is the episode complete, blocked, or ready for human judgment?&lt;/td&gt;
&lt;td&gt;A truthful status and evidence report are returned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The names are not sacred. A team can combine or rename states. What matters is that observation is not confused with inference, an attempted action is not confused with success, and a model’s summary is not substituted for a tool result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep facts, hypotheses, and decisions apart
&lt;/h2&gt;

&lt;p&gt;Suppose a test fails after a dependency update. A disciplined trace might say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Observed:&lt;/strong&gt; the token-refresh test fails with an unexpected 401.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hypothesis:&lt;/strong&gt; the new client no longer retries after refreshing credentials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next action:&lt;/strong&gt; inspect the new retry behavior and add a focused regression test.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision boundary:&lt;/strong&gt; if preserving behavior requires changing the public authentication contract, stop for a human decision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The separation is useful because a plausible explanation can be wrong. If the agent records its hypothesis as though the logs established it, later actions inherit a false premise.&lt;/p&gt;

&lt;p&gt;When multiple explanations remain possible, design the smallest useful experiment. Read the relevant library documentation, isolate the test, compare the old and new behavior, or inspect a sanitized trace. Avoid changing several unrelated variables at once; otherwise the outcome may not tell you which change mattered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make evidence expire when its subject changes
&lt;/h2&gt;

&lt;p&gt;Verification is tied to the thing that was checked. If the code changes after a test run, that test result no longer describes the current code. If a test command is rerun with a different configuration, the old and new results are not interchangeable. If an agent changes the acceptance test itself, a green result needs a separate review of that change.&lt;/p&gt;

&lt;p&gt;Treat an evidence item as a record with at least:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Evidence field&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Subject&lt;/td&gt;
&lt;td&gt;Working-tree revision or built artifact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Check&lt;/td&gt;
&lt;td&gt;Exact command, test suite, or policy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;Runtime, fixture, configuration, and relevant dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Result&lt;/td&gt;
&lt;td&gt;Exit status plus failures, skips, or unknowns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time/order&lt;/td&gt;
&lt;td&gt;Whether it ran before or after the last relevant change&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;An important rule follows: after a material edit, rerun the checks that the edit could invalidate. A test from before the patch can explain the starting condition; it cannot qualify the final patch.&lt;/p&gt;

&lt;p&gt;This does not require rerunning every expensive job after every keystroke. Match the check to the risk and the changed surface. A documentation-only change might need a link check and rendered preview. A serialization change may need compatibility fixtures and migration tests. The completion report should say what was not rerun and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use retries to learn something
&lt;/h2&gt;

&lt;p&gt;Retries are useful when the next attempt differs in a way that could address the observed failure. Repeating an identical command against an unchanged state usually gives the same evidence and consumes attention.&lt;/p&gt;

&lt;p&gt;Before a retry, ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What did the previous attempt establish?&lt;/li&gt;
&lt;li&gt;What will be different in this attempt?&lt;/li&gt;
&lt;li&gt;What result would change the working hypothesis?&lt;/li&gt;
&lt;li&gt;How many attempts or how much runtime did the contract allow?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a command fails because the local service is not running, starting that service is a meaningful next step. If it fails with the same assertion after two unmodified runs, another identical run is not a plan. If a tool call may have partially changed an external system, first determine whether repeating it is safe; a non-idempotent action can create duplicate tickets, releases, or payments.&lt;/p&gt;

&lt;p&gt;Bound retries by both count and consequence. For example: retry a deterministic local check once after a relevant fix; stop after a repeated infrastructure failure; require a person before repeating any external action whose first outcome is unknown.&lt;/p&gt;

&lt;h2&gt;
  
  
  Put the stop decision in the workflow
&lt;/h2&gt;

&lt;p&gt;Stop and escalate when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the task requires a product or policy choice the contract did not delegate;&lt;/li&gt;
&lt;li&gt;the available evidence conflicts or cannot identify the tested state;&lt;/li&gt;
&lt;li&gt;a required credential or production data would be needed;&lt;/li&gt;
&lt;li&gt;the same failure persists without a new diagnostic signal;&lt;/li&gt;
&lt;li&gt;a proposed fix expands the scope or weakens an invariant;&lt;/li&gt;
&lt;li&gt;an external side effect may have happened but cannot be confirmed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are workflow outcomes, not model moods. “I am confident” should not override a failed check or missing permission. Likewise, low confidence alone need not block a reversible, low-risk investigation if the agent can gather better evidence within its scope.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capture enough of the trajectory to review
&lt;/h2&gt;

&lt;p&gt;A useful trace records the task identifier, relevant inputs, tool calls, changed paths, check results, handoffs, and final status. Keep secrets and unnecessary personal data out of that record. The purpose is not to preserve every token; it is to let someone answer what the agent saw, what it did, what it learned, and why it stopped.&lt;/p&gt;

&lt;p&gt;For teams using an agent platform, inspect what its trace actually captures. OpenAI’s current evaluation guide describes traces as end-to-end records of model calls, tool calls, guardrails, and handoffs. That is a useful example of a trace surface, but no vendor trace by itself proves that the application’s acceptance criteria were valid or that a consequential action was authorized.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical completion report
&lt;/h2&gt;

&lt;p&gt;At the end of the episode, return a short, structured report:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Status:&lt;/strong&gt; complete, incomplete, blocked, or escalated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change:&lt;/strong&gt; what files or external records changed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence:&lt;/strong&gt; exact checks and results, including failures and skips.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assumptions:&lt;/strong&gt; choices made because the task left a gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remaining risk:&lt;/strong&gt; behavior not exercised or not covered by the evidence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next decision:&lt;/strong&gt; the specific question a person needs to answer, if any.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This format makes a failed episode useful too. “Blocked because the provider’s migration guide leaves token refresh behavior unspecified” is actionable. “Couldn’t finish” is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The control-loop test
&lt;/h2&gt;

&lt;p&gt;Before adopting a workflow, walk through one ordinary task and one deliberately awkward case. Ask whether it can distinguish a fact from a hypothesis, invalidate old evidence, limit repeated actions, and reach a truthful stop state. If its only terminal condition is a success message, the loop is incomplete.&lt;/p&gt;

&lt;p&gt;An agentic engineering loop is effective when feedback changes what happens next and authority constrains what may happen at all. That is how repeated tool use becomes a controlled engineering process instead of a long conversation with a terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2509.06216" rel="noopener noreferrer"&gt;Hassan et al., “A Roadmap for Agentic Software Engineering”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/api/docs/guides/agent-evals" rel="noopener noreferrer"&gt;OpenAI API documentation, “Evaluate agent workflows”&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Source, license, and AI assistance
&lt;/h4&gt;

&lt;p&gt;This article is based on the agentic engineering loop and evidence concepts in Part II of &lt;a href="https://archive.org/details/agentic_software_engineering_startrek-tng_essay_chatgpt" rel="noopener noreferrer"&gt;&lt;em&gt;From Vibe Coding to Agentic Software Engineering&lt;/em&gt;&lt;/a&gt;, whose source record credits ChatGPT as preparer and identifies CC BY-NC-SA 4.0. This version is substantially reorganized and expanded with original examples and a practical workflow, and is shared under the same license: &lt;a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener noreferrer"&gt;CC BY-NC-SA 4.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; The article text was generated primarily by AI. A human publisher supplied the topic, source material, and editorial direction, and remains responsible for checking claims and examples before publication.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>devops</category>
    </item>
    <item>
      <title>The Engineering Episode: A Work Contract for Coding Agents</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 17:45:00 +0000</pubDate>
      <link>https://dev.to/qnbs/the-engineering-episode-a-work-contract-for-coding-agents-577c</link>
      <guid>https://dev.to/qnbs/the-engineering-episode-a-work-contract-for-coding-agents-577c</guid>
      <description>&lt;p&gt;“Upgrade the authentication library safely” sounds like a task. For an agent, it is a bundle of decisions: which package, what counts as safe, which files may change, whether a lockfile update is allowed, what tests matter, and who may approve a release.&lt;/p&gt;

&lt;p&gt;If those decisions stay implicit, the agent has to guess. A better unit of delegation is a bounded engineering episode: a task described by the result it should produce, the boundaries it must preserve, the evidence it must return, and the point where it must stop.&lt;/p&gt;

&lt;p&gt;That small change in framing makes a request easier to delegate, review, and repeat. It also keeps the agent’s freedom over implementation separate from the human’s authority over outcomes and risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  A task is more than an instruction
&lt;/h2&gt;

&lt;p&gt;An instruction describes an action: “change this function,” “update the dependency,” or “make the build pass.” A work contract describes a desired state and the conditions under which that state is acceptable.&lt;/p&gt;

&lt;p&gt;For an engineering episode, write down six things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Outcome:&lt;/strong&gt; the externally meaningful state you want.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope:&lt;/strong&gt; the parts of the system the agent may inspect or change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invariants:&lt;/strong&gt; what must remain true, even if the implementation changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authority:&lt;/strong&gt; which tools and consequential actions are allowed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence:&lt;/strong&gt; what observations would support the completion claim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exit:&lt;/strong&gt; when to stop, report a limitation, or ask a person to decide.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is not ceremony for its own sake. It moves ambiguity to the beginning, when a person can resolve it, instead of letting it surface after a broad patch has already been produced.&lt;/p&gt;

&lt;p&gt;OpenAI’s practical agent-building guide also recommends beginning with a specific workflow and planning for human intervention when retries are exhausted or an action is high-risk. The episode card below is an editorial synthesis, not a vendor-prescribed schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the result, then bound the path
&lt;/h2&gt;

&lt;p&gt;Consider a hypothetical task: update a client library to a supported version while preserving the current API behavior.&lt;/p&gt;

&lt;p&gt;“Upgrade the library and fix anything that breaks” leaves a large decision space. Does “anything” include unrelated tests? Is a major-version migration acceptable? Can configuration or credentials change? May the agent update the lockfile? Is a successful local build enough to call the work done?&lt;/p&gt;

&lt;p&gt;A tighter contract might read:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; Move the application from client-library version 4.x to the approved 5.x release while preserving the documented login and token-refresh behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope:&lt;/strong&gt; Inspect the dependency manifest, lockfile, client adapter, and related tests. Change those files and add or update focused tests. Do not reformat unrelated code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Invariants:&lt;/strong&gt; No credential values in source control. No change to public method names or token storage. No network call to a production identity provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authority:&lt;/strong&gt; Read the repository and documentation; edit the current working branch; run local tests. Do not merge, publish a package, modify secrets, or deploy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence:&lt;/strong&gt; Report the dependency diff, focused test results, full relevant test command and exit status, and any behavior that could not be exercised locally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop:&lt;/strong&gt; Stop before changing public behavior, encountering an undocumented migration choice, needing a secret, or repeating the same failing check without new information.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The example is hypothetical, but the structure is reusable. Notice that it grants freedom over how to adapt the client while reserving high-impact decisions for a person.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make constraints observable
&lt;/h2&gt;

&lt;p&gt;“Keep it secure,” “don’t break anything,” and “use best practices” express intent but do not tell an evaluator what to inspect. Where possible, translate them into observable conditions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vague instruction&lt;/th&gt;
&lt;th&gt;More reviewable condition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Keep the API compatible&lt;/td&gt;
&lt;td&gt;Existing public method names and documented request/response shapes remain unchanged&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Do not weaken authentication&lt;/td&gt;
&lt;td&gt;Existing authorization tests still pass; no credential is added to tracked files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keep the change small&lt;/td&gt;
&lt;td&gt;Only named dependency, adapter, and test paths change unless a new path is explained first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Verify the update&lt;/td&gt;
&lt;td&gt;List the exact commands run, their exit codes, and checks skipped&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Not every value can be reduced to a test. The point is to separate what can be checked mechanically from what needs human judgment. An agent should not quietly convert an unmeasured preference into a claim that it has been satisfied.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scope is an access boundary
&lt;/h2&gt;

&lt;p&gt;The scope line should match the actual environment, not merely appear in the prompt. “Do not deploy” is weak if the agent still holds deployment credentials and an unrestricted release tool. A contract becomes credible when the available permissions enforce its boundaries.&lt;/p&gt;

&lt;p&gt;For a low-risk documentation edit, read access plus a branch-local write may be enough. For a production change, the agent may prepare a patch and evidence while a separate release process retains deployment authority. The work contract should name which boundary is enforced by tooling and which is only an instruction.&lt;/p&gt;

&lt;p&gt;Write exclusions as carefully as inclusions. “Update the adapter and tests” does not imply permission to rotate credentials, change account policy, or publish the package. If an adjacent issue appears, the agent can report it as a follow-up rather than expanding the task on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Define done and define not-done
&lt;/h2&gt;

&lt;p&gt;A useful completion statement is falsifiable. “The task is complete” is not evidence. “The adapter and focused tests changed; command X exited zero on revision Y; integration behavior against the live provider was not tested” gives a reviewer something concrete to assess.&lt;/p&gt;

&lt;p&gt;The contract should also make room for honest partial completion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complete:&lt;/strong&gt; the requested state was reached and the named evidence exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked:&lt;/strong&gt; a required decision, permission, dependency, or external state is missing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incomplete:&lt;/strong&gt; the agent made progress but one or more acceptance conditions remain unmet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalated:&lt;/strong&gt; the work exposed a risk or choice outside the delegated authority.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These states prevent the pressure to produce a polished “done” message from turning an unknown into a pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  A compact episode card
&lt;/h2&gt;

&lt;p&gt;For routine work, the contract can fit in a short issue comment or task form:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Prompt&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Outcome&lt;/td&gt;
&lt;td&gt;What observable state should exist at the end?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope&lt;/td&gt;
&lt;td&gt;Which repositories, files, environments, or records are in bounds?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Invariants&lt;/td&gt;
&lt;td&gt;What must not change?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Allowed actions&lt;/td&gt;
&lt;td&gt;What may the agent read, write, run, or submit?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence&lt;/td&gt;
&lt;td&gt;What should the completion report include?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stop and escalate&lt;/td&gt;
&lt;td&gt;What ambiguity, risk, or repeated failure ends the episode?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner&lt;/td&gt;
&lt;td&gt;Which human owns decisions and accepts the result?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If the task cannot be described this way without major uncertainty, that is useful information: it may need discovery or a human design decision before implementation begins.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical test
&lt;/h2&gt;

&lt;p&gt;Before handing work to an agent, ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Could two reasonable people interpret the requested outcome differently?&lt;/li&gt;
&lt;li&gt;Can the agent affect anything outside the named scope?&lt;/li&gt;
&lt;li&gt;What result would prove progress, and what result would only look reassuring?&lt;/li&gt;
&lt;li&gt;Which decisions are reversible, and which need a person first?&lt;/li&gt;
&lt;li&gt;What should happen when the available evidence is incomplete?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The strongest work contract is not the longest prompt. It is the shortest description that makes the desired result, permitted actions, evidence, and exit conditions clear enough to review.&lt;/p&gt;

&lt;p&gt;An agent can improvise the route. The contract defines the destination, the guardrails, and the point where a human must take the wheel.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2509.06216" rel="noopener noreferrer"&gt;Hassan et al., “A Roadmap for Agentic Software Engineering”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openai.com/business/guides-and-resources/a-practical-guide-to-building-ai-agents/" rel="noopener noreferrer"&gt;OpenAI, “A Practical Guide to Building Agents”&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Source, license, and AI assistance
&lt;/h4&gt;

&lt;p&gt;This article is based on the engineering-episode concept in Part II of &lt;a href="https://archive.org/details/agentic_software_engineering_startrek-tng_essay_chatgpt" rel="noopener noreferrer"&gt;&lt;em&gt;From Vibe Coding to Agentic Software Engineering&lt;/em&gt;&lt;/a&gt;, whose source record credits ChatGPT as preparer and identifies CC BY-NC-SA 4.0. This version is substantially reorganized and expanded with original templates and examples, and is shared under the same license: &lt;a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener noreferrer"&gt;CC BY-NC-SA 4.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; The article text was generated primarily by AI. A human publisher supplied the topic, source material, and editorial direction, and remains responsible for checking claims and examples before publication.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>Pin the Evaluator, Not Just the Dependency</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 17:25:00 +0000</pubDate>
      <link>https://dev.to/qnbs/pin-the-evaluator-not-just-the-dependency-3523</link>
      <guid>https://dev.to/qnbs/pin-the-evaluator-not-just-the-dependency-3523</guid>
      <description>&lt;p&gt;“The tests passed on commit abc123” sounds precise. It may still leave the most important question unanswered: which tests, run by which evaluator, against which artifact?&lt;/p&gt;

&lt;p&gt;A source revision is one part of an evidence chain. If the qualification job rebuilds the application, tests a different binary, or silently changes its fixture, a passing result may not describe the thing that is about to ship.&lt;/p&gt;

&lt;h2&gt;
  
  
  Identify both the subject and the measurement
&lt;/h2&gt;

&lt;p&gt;For artifact qualification, a useful chain names each link:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;source revision → build workflow run → artifact identity and hash → fixture identity and hash → qualification result&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That answers the subject question: what exact bytes were examined?&lt;/p&gt;

&lt;p&gt;The evaluator also has an identity. Record the test suite or policy version, runner image, relevant toolchain, workflow revision, configuration, and the action or dependency versions that could affect the result. For AI-assisted evaluation, record the model/provider snapshot when available, prompt or rubric version, tool permissions, and whether the result is advisory or a required control.&lt;/p&gt;

&lt;p&gt;Not every project needs a giant manifest for every local test. The detail should match the consequence. A release artifact, security decision, or externally relied-on certification warrants stronger provenance than a quick developer experiment.&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%2Fhzl22uml96f2mhl5gbr9.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%2Fhzl22uml96f2mhl5gbr9.png" alt="A trustworthy qualification links an exact source revision to the build run, artifact hash, fixture hash, evaluator and environment, and recorded result." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a moving evaluator changes the meaning of green
&lt;/h2&gt;

&lt;p&gt;Suppose a pipeline publishes build A, then runs the same source through a second job that creates build B and tests B. If the results differ, the published artifact has not been qualified. Matching source commit is useful, but it does not prove identical output.&lt;/p&gt;

&lt;p&gt;Likewise, a test suite can drift. A fixture may be edited to match the implementation. A policy prompt can become weaker. A workflow can start with broader token permissions. A package can update underneath a floating version reference.&lt;/p&gt;

&lt;p&gt;If the evaluator changes, the result can change even when the code does not. That does not mean the evaluator should never improve. It means an evaluation should say which evaluator produced it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Provenance is a chain, not a badge
&lt;/h2&gt;

&lt;p&gt;SLSA's provenance model gives teams a vocabulary for describing where an artifact came from and how it was built. GitHub Actions guidance recommends pinning third-party actions to full commit SHAs when immutable references are required, and minimizing token permissions. Those are useful integrity measures, but they are not a complete trust argument.&lt;/p&gt;

&lt;p&gt;An immutable action can still contain a bug. A signed attestation can faithfully describe an unsafe build. A pinned model snapshot can be biased or inadequate. A fixed test suite can miss a whole class of failure.&lt;/p&gt;

&lt;p&gt;Pinning answers “which one?” It does not automatically answer “is this trustworthy?” A robust chain also asks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;who controlled the workflow and its inputs;&lt;/li&gt;
&lt;li&gt;whether the workflow ran against the intended revision;&lt;/li&gt;
&lt;li&gt;whether untrusted pull-request code had access to secrets or write tokens;&lt;/li&gt;
&lt;li&gt;whether the artifact hash matches the one users will receive;&lt;/li&gt;
&lt;li&gt;whether the test and fixture are independent enough to detect the defect;&lt;/li&gt;
&lt;li&gt;what a missing, stale, or inconclusive result means.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Freeze for comparison, update under governance
&lt;/h2&gt;

&lt;p&gt;“Pin everything forever” would trade one failure mode for another. Old evaluators become stale. Vulnerable dependencies need upgrades. Models and threat assumptions change.&lt;/p&gt;

&lt;p&gt;A better rule is: freeze identity for a specific qualification, and govern changes to the evaluator as their own reviewed changes.&lt;/p&gt;

&lt;p&gt;When a test harness or policy changes, compare versions, document why it changed, rerun relevant cases, and record whether old results need to be recomputed. If the candidate artifact changes, qualify the new artifact. Do not carry evidence from one identity over to another because the names look similar.&lt;/p&gt;

&lt;p&gt;For AI reviewers, version the contract around the model as well as the model where possible: input scope, instructions, tool access, review rubric, expected output, and the authority assigned to the result. If the provider does not expose a stable model snapshot, record that limitation instead of claiming full reproducibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the evidence readable to a reviewer
&lt;/h2&gt;

&lt;p&gt;A useful qualification record lets another person answer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What exact artifact was tested?&lt;/li&gt;
&lt;li&gt;Which workflow and evaluator produced the result?&lt;/li&gt;
&lt;li&gt;What fixtures or inputs were used?&lt;/li&gt;
&lt;li&gt;Which checks passed, failed, were skipped, or were unknown?&lt;/li&gt;
&lt;li&gt;Did the exact published artifact receive the evidence?&lt;/li&gt;
&lt;li&gt;What changed after the evaluator was frozen?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the answer to one of those questions is unknown, name the gap. The right state is not a green badge with a footnote hidden in another job.&lt;/p&gt;

&lt;h2&gt;
  
  
  The evaluator is part of the system
&lt;/h2&gt;

&lt;p&gt;Tests and review tools are software too. They have dependencies, permissions, failure modes, owners, and release cycles. Treating them as invisible infrastructure makes it easy to trust results whose identity has drifted.&lt;/p&gt;

&lt;p&gt;The engineering goal is not to create an impossible guarantee. It is to make each claim traceable: this is the artifact; this is the evaluator; this is what it checked; this is the evidence; and this is what remains outside the result.&lt;/p&gt;

&lt;p&gt;That completes this Series C path from authority to evidence: the reviewer can help find a risk, a correction cycle can converge on a change, an accepted lesson can become a guard, and the guard itself can be identified and maintained.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slsa.dev/spec/v1.2/" rel="noopener noreferrer"&gt;SLSA v1.2 specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions/reference/security/secure-use" rel="noopener noreferrer"&gt;GitHub Actions security reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/pull-requests/reference/status-checks" rel="noopener noreferrer"&gt;GitHub: About status checks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI assistance was used to prepare this draft. The human editor is responsible for validating source freshness, exact platform guidance, and the final publication decision.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>devops</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>From AI Finding to Deterministic Guard</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 17:05:00 +0000</pubDate>
      <link>https://dev.to/qnbs/from-ai-finding-to-deterministic-guard-3a2h</link>
      <guid>https://dev.to/qnbs/from-ai-finding-to-deterministic-guard-3a2h</guid>
      <description>&lt;p&gt;An AI reviewer says a parser accepts a malformed document. The comment is plausible. It is not yet a regression test, and it is not yet a policy.&lt;/p&gt;

&lt;p&gt;Between a model finding and a reliable guard sits a small but essential engineering process: validate the behavior, identify an owner, reproduce the failure, encode the invariant, and prove the new check catches the case without breaking the supported ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat the model output as a lead
&lt;/h2&gt;

&lt;p&gt;A useful finding should describe more than a suspicious line. It should offer a concrete path from input to consequence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which input or state triggers the behavior?&lt;/li&gt;
&lt;li&gt;What does the system do?&lt;/li&gt;
&lt;li&gt;What invariant is violated?&lt;/li&gt;
&lt;li&gt;What would a correct result look like?&lt;/li&gt;
&lt;li&gt;Which evidence supports the claim?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If those questions have no answer, ask for clarification or reproduce the behavior before editing code. A model can be right about the shape of a risk while wrong about reachability, ownership, or intended behavior.&lt;/p&gt;

&lt;p&gt;Do not let the model write a test that merely enshrines its own interpretation. A test is executable policy: a maintainer must agree that the assertion is the rule the product should keep.&lt;/p&gt;

&lt;h2&gt;
  
  
  The finding-to-guard path
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Assign a human owner
&lt;/h3&gt;

&lt;p&gt;Choose someone who understands the affected boundary or can route it to the right owner. The model may help locate code; it does not take accountability for deciding priority or semantics.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Reproduce or reject
&lt;/h3&gt;

&lt;p&gt;Build the smallest reliable example. It might be a failing unit test, an integration fixture, a browser path, or a packaged-runtime reproduction. Record the environment and version. If the reproduction fails, preserve that result and explain why the original hypothesis was rejected.&lt;/p&gt;

&lt;p&gt;“Could not reproduce” is not the same as “impossible.” It may mean the environment or evidence was incomplete. Keep uncertainty visible.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. State the invariant
&lt;/h3&gt;

&lt;p&gt;Write the expected rule in language a reviewer can assess. For example: “An import that fails validation must not replace the currently selected project.” That is more useful than “handle the error safely.”&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Add the smallest durable check
&lt;/h3&gt;

&lt;p&gt;Encode the invariant at the lowest test layer that can reliably detect the behavior. A unit test may be enough for a pure parser rule. A persistence boundary may need an integration test. A first-launch claim may require a packaged application. A test at one evidence plane does not prove another.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Prove the guard has signal
&lt;/h3&gt;

&lt;p&gt;Run it on the known failing case and on representative supported cases. Where appropriate, temporarily remove or invert the behavior to show the test fails for the defect it is meant to catch. Avoid asserting that a test is strong simply because it passed once.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Connect the check to the policy
&lt;/h3&gt;

&lt;p&gt;If this behavior must block a merge, bind the result to an owned workflow and the exact revision through repository rules. A local green run and a required merge check are different facts.&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%2Fqpkykoglsv4idykafy34.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%2Fqpkykoglsv4idykafy34.png" alt="A candidate finding moves through ownership, reproduction, invariant definition, regression fixture, and a deterministic check; rejected or unknown findings remain explicitly unresolved." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A finding is not automatically a rule
&lt;/h2&gt;

&lt;p&gt;Some model findings are contextual, subjective, or too noisy to encode. A one-off design trade-off may need a decision record, not a static analyzer. A threat hypothesis may need a security review. A code-style suggestion may belong in a formatter—or may not deserve a comment at all.&lt;/p&gt;

&lt;p&gt;The right outcome can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;accept and add a regression guard;&lt;/li&gt;
&lt;li&gt;accept the design change but use a different test;&lt;/li&gt;
&lt;li&gt;reject the finding with a short reason;&lt;/li&gt;
&lt;li&gt;defer it to a named issue because required evidence is unavailable;&lt;/li&gt;
&lt;li&gt;escalate if the potential consequence needs specialist review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Forcing every observation into a CI rule creates a brittle test suite. Ignoring every observation because the model is imperfect throws away useful attention. Human triage is the conversion boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preserve evidence provenance
&lt;/h2&gt;

&lt;p&gt;For a durable guard, record what it tested and what it cannot show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fixture identity and expected behavior;&lt;/li&gt;
&lt;li&gt;test command and relevant environment;&lt;/li&gt;
&lt;li&gt;source revision;&lt;/li&gt;
&lt;li&gt;whether the check ran locally, in CI, in a browser, or on a packaged artifact;&lt;/li&gt;
&lt;li&gt;known blind spots and any deferred platform path.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This prevents later readers from turning “the test passed” into a stronger claim than the test supports.&lt;/p&gt;

&lt;h2&gt;
  
  
  From correction to institutional memory
&lt;/h2&gt;

&lt;p&gt;A review comment disappears into a pull-request timeline. A regression test can keep the lesson available to the next contributor. A static policy can make a repeated architectural boundary explicit. A runbook can teach a human how to investigate a failure that cannot yet be automated.&lt;/p&gt;

&lt;p&gt;The goal is not to automate every judgment. It is to avoid paying again for a failure mode that can be stated precisely and checked cheaply.&lt;/p&gt;

&lt;p&gt;In the next post, we will look at a harder version of the same problem: how to know that the evaluator itself—the tests, tools, and evidence pipeline—has not drifted away from the claim it is supposed to support.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2310.06770" rel="noopener noreferrer"&gt;SWE-bench (2023)&lt;/a&gt; — a benchmark for issue-resolution agents, not a production assurance claim.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2609.21190v2" rel="noopener noreferrer"&gt;SWE-Proof (2026 preprint)&lt;/a&gt; — formal checking of test-passing patches in a purpose-built corpus; results are corpus- and specification-dependent.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets" rel="noopener noreferrer"&gt;GitHub ruleset rules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slsa.dev/spec/v1.2/" rel="noopener noreferrer"&gt;SLSA v1.2 provenance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI assistance was used to prepare this draft. The human editor is responsible for choosing the invariant, validating the example, and reviewing the publication claims.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>softwareengineering</category>
      <category>security</category>
    </item>
    <item>
      <title>One Correction Wave: A Stop Rule for AI-Assisted Review</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 16:45:00 +0000</pubDate>
      <link>https://dev.to/qnbs/one-correction-wave-a-stop-rule-for-ai-assisted-review-56lf</link>
      <guid>https://dev.to/qnbs/one-correction-wave-a-stop-rule-for-ai-assisted-review-56lf</guid>
      <description>&lt;p&gt;A reviewer finds a bug. A coding agent fixes it. The fix triggers another review. The reviewer finds a style issue. The agent changes it. A new run notices a nearby concern. Soon the pull request has ten commits, three of them correcting earlier corrections, and nobody is sure which result is the one to review.&lt;/p&gt;

&lt;p&gt;That loop is not proof that AI review is useless. It is a sign that the team has not defined a stopping rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review should converge on a decision
&lt;/h2&gt;

&lt;p&gt;Automated review can produce many observations, but a pull request still needs a finite decision: accept the change, request a bounded correction, or stop because evidence is missing.&lt;/p&gt;

&lt;p&gt;A practical pattern is one correction wave:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Collect.&lt;/strong&gt; Let the intended reviewers and required checks finish for the current revision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Normalize.&lt;/strong&gt; Group duplicate comments and distinguish actionable defects from questions, style preferences, and speculation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triage.&lt;/strong&gt; Assign an owner and consequence level. Validate the failure path before changing code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Correct coherently.&lt;/strong&gt; Make a related set of accepted fixes together instead of committing each bot suggestion separately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-run evidence.&lt;/strong&gt; Run required deterministic checks on the new head and inspect the resulting diff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decide.&lt;/strong&gt; Merge, request a specifically scoped next wave, or stop with the remaining unknowns named.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a process pattern, not an experimentally proven optimum. The useful property is that it makes the loop observable and gives it a natural point to end.&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%2Fl45yiao6f5ch96h901my.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%2Fl45yiao6f5ch96h901my.png" alt="Gather findings for one revision, deduplicate and validate, make a coherent correction, re-run checks on the new revision, then decide or open another wave only when new evidence warrants it." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why serial micro-fixes create noise
&lt;/h2&gt;

&lt;p&gt;Every new commit changes the object under review. A reviewer may now be commenting on a revision that no longer exists. A small patch can change the meaning of a previous test. A bot may rerun because the head SHA changed and repeat a finding that was already dismissed.&lt;/p&gt;

&lt;p&gt;Serial fixes also fragment intent. A single change to validation, error handling, and a regression test may be easier to evaluate as one cohesive unit than as a chain of tiny commits whose dependency is implicit.&lt;/p&gt;

&lt;p&gt;The opposite extreme is not better. A large “fix everything” commit can hide unrelated edits. Coherence means the corrections share one accepted invariant or failure path, not that every review comment is bundled indiscriminately.&lt;/p&gt;

&lt;h2&gt;
  
  
  A triage card for each finding
&lt;/h2&gt;

&lt;p&gt;For every material finding, capture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claim:&lt;/strong&gt; what can go wrong?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path:&lt;/strong&gt; how does the code reach the failure?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence:&lt;/strong&gt; what test, reproduction, or source confirms it?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner:&lt;/strong&gt; who decides whether it is in scope?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disposition:&lt;/strong&gt; accept, reject with reason, or defer with an owner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Durable lesson:&lt;/strong&gt; should the fix become a regression test or policy check?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This card can be brief. Its purpose is to stop a confident comment from turning directly into a code mutation.&lt;/p&gt;

&lt;h2&gt;
  
  
  When a second wave is justified
&lt;/h2&gt;

&lt;p&gt;A new correction cycle makes sense when it starts with new evidence: a required test fails on the corrected revision, a reviewer identifies a distinct material defect, or a reproduction changes the risk assessment.&lt;/p&gt;

&lt;p&gt;It does not make sense merely because a bot can be triggered again. Re-run a check when the input changed or when the check did not cover the intended revision. Do not ask the same nondeterministic reviewer to rediscover a finding until it returns a satisfying answer.&lt;/p&gt;

&lt;p&gt;Define the next wave’s scope before opening it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what new evidence triggered it;&lt;/li&gt;
&lt;li&gt;which findings are in scope;&lt;/li&gt;
&lt;li&gt;what artifact or revision is under review;&lt;/li&gt;
&lt;li&gt;which checks must pass;&lt;/li&gt;
&lt;li&gt;what condition ends the loop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a review provider is flaky or unavailable, represent that state honestly. “No comment” may mean no issue was found, or it may mean the review never completed. The status should distinguish those cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep liveness in the design
&lt;/h2&gt;

&lt;p&gt;Safety asks whether a bad change can get through. Liveness asks whether a good change can get stuck forever.&lt;/p&gt;

&lt;p&gt;An AI system that can keep creating commits, re-triggering itself, or reopening dismissed findings can threaten both. Limit automatic retries. Keep comments tied to a precise revision. Avoid granting the reviewer credentials that let it silently approve its own fixes. Preserve a human-visible way to terminate the cycle.&lt;/p&gt;

&lt;p&gt;None of these controls guarantee a fast review. They make it possible to see why the review is waiting and who can move it forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure the loop without gaming it
&lt;/h2&gt;

&lt;p&gt;Count more than comments or generated commits. A team might track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;time from first review to a merge decision;&lt;/li&gt;
&lt;li&gt;distinct material findings validated;&lt;/li&gt;
&lt;li&gt;accepted findings that led to a regression guard;&lt;/li&gt;
&lt;li&gt;repeated findings on unchanged behavior;&lt;/li&gt;
&lt;li&gt;corrections that had to be reverted;&lt;/li&gt;
&lt;li&gt;checks skipped, stale, or inconclusive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These measurements need context. A lower comment count is not automatically better; a shorter review can mean a missed defect. Use a portfolio view and pair speed with quality and rework.&lt;/p&gt;

&lt;h2&gt;
  
  
  A review protocol should terminate
&lt;/h2&gt;

&lt;p&gt;Good review is not maximum review. It is enough review to support a decision, with unresolved risks made visible.&lt;/p&gt;

&lt;p&gt;Batching accepted findings into one coherent correction wave helps keep the diff legible and the state machine finite. Re-run deterministic evidence against the corrected revision. If meaningful new evidence appears, open another bounded wave. If the evidence has not changed, stop repeating the same prompt.&lt;/p&gt;

&lt;p&gt;The next post follows one accepted finding beyond the pull request: how it becomes a durable deterministic guard, instead of a note everyone forgets after merge.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/pull-requests/reference/status-checks" rel="noopener noreferrer"&gt;GitHub: About status checks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions/reference/security/secure-use" rel="noopener noreferrer"&gt;GitHub Actions security reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DORA, &lt;a href="https://dora.dev/insights/balancing-ai-tensions/" rel="noopener noreferrer"&gt;Balancing AI tensions (2026)&lt;/a&gt; — qualitative analysis of engineer responses, not a controlled experiment establishing this exact workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI assistance was used to prepare this draft. The human editor is responsible for validating the workflow advice against the intended repository and reviewing the final text.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codereview</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Reviewer Is Not the Gate</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 16:25:00 +0000</pubDate>
      <link>https://dev.to/qnbs/the-reviewer-is-not-the-gate-2na6</link>
      <guid>https://dev.to/qnbs/the-reviewer-is-not-the-gate-2na6</guid>
      <description>&lt;p&gt;An AI reviewer leaves a comment: “This change can lose data when two saves race.”&lt;/p&gt;

&lt;p&gt;That might be the most valuable sentence written about the pull request. It might also be a false positive, a misunderstanding of the storage model, or a warning about a path this patch never reaches.&lt;/p&gt;

&lt;p&gt;The comment deserves investigation. It should not, by itself, decide whether the change may merge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reviews and gates answer different questions
&lt;/h2&gt;

&lt;p&gt;A review system helps people notice things. A merge gate enforces a rule.&lt;/p&gt;

&lt;p&gt;An AI reviewer is useful as an advisory signal: it can scan a diff, compare patterns across files, ask whether an invariant was preserved, or suggest a missing test. Its output is probabilistic and context-dependent. A human still needs to judge whether a finding applies.&lt;/p&gt;

&lt;p&gt;A deterministic check asks a narrower question against a defined input: did the test command succeed on this revision? Does the static rule find a forbidden import? Is the generated artifact attached to the expected source? A branch rule can then require selected checks before merge.&lt;/p&gt;

&lt;p&gt;Neither category is perfect. Tests can omit the bug. Static rules can encode the wrong policy. Reviewers can miss a defect. The important distinction is authority: a generated comment is not automatically a trusted merge condition simply because it appears in a review UI.&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%2F6eicgd6h7vd130ixuoj8.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%2F6eicgd6h7vd130ixuoj8.png" alt="AI review enters as an advisory finding. A maintainer validates it; trusted deterministic checks report against the correct revision; repository policy and named human authority determine the merge decision." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A check name is not its identity
&lt;/h2&gt;

&lt;p&gt;GitHub branch protection and repository rulesets can require status checks. GitHub’s documentation also cautions that users with write permission can set commit statuses. A rule that accepts any result named “Security Review” may therefore be weaker than it looks if the expected source or app is not bound.&lt;/p&gt;

&lt;p&gt;For a required check to mean something, the policy needs to specify at least:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which trusted application or workflow is allowed to report it;&lt;/li&gt;
&lt;li&gt;which commit or revision was checked;&lt;/li&gt;
&lt;li&gt;whether the check ran for the correct event and permissions;&lt;/li&gt;
&lt;li&gt;what happens when it is missing, skipped, stale, or inconclusive;&lt;/li&gt;
&lt;li&gt;who may bypass the rule and how that exception is recorded.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is an identity and authority problem as much as a test problem. “Green” is a value. The repository also needs to know who produced it, for what subject, under which policy.&lt;/p&gt;

&lt;p&gt;GitHub’s rules can be configured in different ways, and bypass privileges depend on the repository’s policy. Do not infer that a repository is protected merely because a check exists or a green badge appears. Inspect the effective rules and the trusted source of each required result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let AI review widen attention, not quietly become policy
&lt;/h2&gt;

&lt;p&gt;There are good reasons to run model-assisted review. It can offer another pass over a large change, explain unfamiliar code, or highlight a boundary a human missed. It can also repeat itself, misread generated files, or recommend a fix that breaks a different invariant.&lt;/p&gt;

&lt;p&gt;A useful setup keeps the AI result visible and contestable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The reviewer reports a finding with the affected lines and a concrete failure path.&lt;/li&gt;
&lt;li&gt;A maintainer validates or rejects the finding.&lt;/li&gt;
&lt;li&gt;Accepted findings are handled through normal review and tests.&lt;/li&gt;
&lt;li&gt;Deterministic checks enforce rules that are stable enough to automate.&lt;/li&gt;
&lt;li&gt;Human-owned policy decides whether a remaining uncertainty is acceptable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a team wants a model’s output to block merges, that is a governance decision. It should be explicit, versioned, scoped, observable, and reversible. The model identity, configuration, failure behavior, and bypass path become part of the policy. Otherwise an advisory tool can become a required check by accident—through a vendor default, a renamed status, or a workflow that nobody intended as authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical authority table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mechanism&lt;/th&gt;
&lt;th&gt;Best at&lt;/th&gt;
&lt;th&gt;Authority it should have&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI review comment&lt;/td&gt;
&lt;td&gt;Suggesting risks and questions&lt;/td&gt;
&lt;td&gt;Advisory unless an explicit, tested policy says otherwise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unit / integration test&lt;/td&gt;
&lt;td&gt;Checking encoded behavior&lt;/td&gt;
&lt;td&gt;Required when relevant and trusted; limited to its covered behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static policy check&lt;/td&gt;
&lt;td&gt;Enforcing a crisp, repeatable rule&lt;/td&gt;
&lt;td&gt;Blocking only when rule ownership and false-positive path are defined&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Required status check&lt;/td&gt;
&lt;td&gt;Providing a merge condition&lt;/td&gt;
&lt;td&gt;Trusted only when bound to the expected source and revision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human review / approval&lt;/td&gt;
&lt;td&gt;Context, trade-offs, responsibility&lt;/td&gt;
&lt;td&gt;Required for decisions policy assigns to a person&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is not a ranking of intelligence. It is a map of who gets to make which decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  The operational test
&lt;/h2&gt;

&lt;p&gt;Before adding a review bot to required status checks, answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What exact property does this check enforce?&lt;/li&gt;
&lt;li&gt;Can the result be set by a user or app outside the intended workflow?&lt;/li&gt;
&lt;li&gt;Does the workflow test the exact pull-request revision?&lt;/li&gt;
&lt;li&gt;Can untrusted pull-request code reach a privileged token or secret?&lt;/li&gt;
&lt;li&gt;What does a timeout or provider outage mean: fail, wait, or route to a human?&lt;/li&gt;
&lt;li&gt;Who can bypass, and is the bypass visible?&lt;/li&gt;
&lt;li&gt;What evidence would show that the policy itself is working?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub’s Actions security guidance matters here: permissions should be minimized, references to third-party actions should be immutable where possible, and workflows that combine untrusted pull-request code with privileged contexts need careful separation.&lt;/p&gt;

&lt;p&gt;The goal is not to ban AI review. It is to prevent a useful reviewer from gaining authority through ambiguity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capability does not appoint an owner
&lt;/h2&gt;

&lt;p&gt;A model can identify a plausible bug. It cannot, by that fact alone, define the organization’s risk tolerance or accept responsibility for shipping.&lt;/p&gt;

&lt;p&gt;A good engineering system lets models help with attention while making the decision path inspectable: a trusted check reports evidence; repository policy decides which evidence is required; a named person owns exceptional judgment.&lt;/p&gt;

&lt;p&gt;That is the boundary Series C is about. In the next post, we will look at how to turn a pile of review comments into one focused correction cycle that can actually finish.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/pull-requests/reference/status-checks" rel="noopener noreferrer"&gt;GitHub: About status checks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets" rel="noopener noreferrer"&gt;GitHub: Available rules for rulesets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches" rel="noopener noreferrer"&gt;GitHub: About protected branches&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions/reference/security/secure-use" rel="noopener noreferrer"&gt;GitHub Actions security reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read the flagship
&lt;/h2&gt;

&lt;p&gt;For the broader argument behind this boundary, read &lt;a href="https://dev.to/qnbs/vibe-coding-was-the-prototype-agentic-engineering-is-the-next-step-3an6"&gt;Vibe Coding Was the Prototype. Agentic Engineering Is the Next Step.&lt;/a&gt;. This follow-up applies its evidence-and-authority model to AI-assisted code review and merge policy.&lt;/p&gt;

&lt;p&gt;AI assistance was used to prepare this draft. The human editor is responsible for checking current platform semantics, source freshness, and the final publication decision.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>github</category>
      <category>softwareengineering</category>
      <category>security</category>
    </item>
    <item>
      <title>Vibe Coding Was the Prototype. Agentic Engineering Is the Next Step.</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 16:05:00 +0000</pubDate>
      <link>https://dev.to/qnbs/vibe-coding-was-the-prototype-agentic-engineering-is-the-next-step-3an6</link>
      <guid>https://dev.to/qnbs/vibe-coding-was-the-prototype-agentic-engineering-is-the-next-step-3an6</guid>
      <description>&lt;p&gt;&lt;em&gt;Toward a Star Trek Future of Building Things&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How a slightly ridiculous way of making software may turn out to have been the awkward first chapter of a much larger transformation&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  At a glance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vibe coding made software generation conversational; it did not replace the work of defining, checking, releasing, and maintaining software.&lt;/li&gt;
&lt;li&gt;A useful engineering agent needs a bounded goal, explicit invariants and permissions, relevant checks, evidence, and a stop or escalation rule.&lt;/li&gt;
&lt;li&gt;Productivity findings depend on the people, task, tools, and measurement period. Benchmark scores describe their evaluators, not production autonomy.&lt;/li&gt;
&lt;li&gt;Cheaper implementation could make more small, tailored software worth exploring, while maintenance, reliability, security, and operating costs remain.&lt;/li&gt;
&lt;li&gt;The aim is to expand human agency. People still choose goals, set policy, authorize consequential actions, and remain accountable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The First Abstraction Shift
&lt;/h2&gt;

&lt;p&gt;There was a brief and beautiful period in the history of computing when the future arrived wearing sweatpants.&lt;/p&gt;

&lt;p&gt;The ritual went something like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build me an app.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A pause.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make it modern.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another pause.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No, &lt;em&gt;more&lt;/em&gt; modern.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A mysterious dependency appeared.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Add authentication.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fourteen files changed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fix the error.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Twenty-seven files changed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why did you rewrite the database layer?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The model apologized.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Undo that.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The model rewrote the database layer in a different way.&lt;/p&gt;

&lt;p&gt;And somewhere, quietly, a senior engineer felt a disturbance in the force.&lt;/p&gt;

&lt;p&gt;This was &lt;strong&gt;vibe coding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The phrase became culturally prominent in early 2025 as a description of programming by conversational intent; &lt;a href="https://x.com/karpathy/status/1886192184808149383" rel="noopener noreferrer"&gt;Andrej Karpathy February 2025 post&lt;/a&gt; is a useful primary timestamp, not a claim that the underlying practice began there: instead of manually attending to every implementation detail, the developer increasingly tells an AI what ought to exist and lets the machine fill in substantial procedural detail.&lt;/p&gt;

&lt;p&gt;For a while, the expression seemed to summarize everything simultaneously delightful and horrifying about generative AI.&lt;/p&gt;

&lt;p&gt;Software could appear astonishingly quickly.&lt;/p&gt;

&lt;p&gt;Some people who had never thought of themselves as programmers could create functioning applications.&lt;/p&gt;

&lt;p&gt;Experienced developers could prototype some ideas at striking speed.&lt;/p&gt;

&lt;p&gt;Interfaces materialized from descriptions.&lt;/p&gt;

&lt;p&gt;Boilerplate evaporated.&lt;/p&gt;

&lt;p&gt;Entire categories of annoying implementation work suddenly looked negotiable.&lt;/p&gt;

&lt;p&gt;And, naturally, people also discovered that an AI could generate 4,000 lines of code with approximately the same emotional attachment to those lines that a leaf blower has to autumn foliage.&lt;/p&gt;

&lt;p&gt;Vibe coding was liberating. Without review on consequential work, it could also be reckless.&lt;/p&gt;

&lt;p&gt;It was serious.&lt;/p&gt;

&lt;p&gt;It was also hilarious.&lt;/p&gt;

&lt;p&gt;Most importantly, it was transitional.&lt;/p&gt;

&lt;p&gt;Because the real historical significance of vibe coding was never that programmers had discovered a more relaxed way to type code.&lt;/p&gt;

&lt;p&gt;It was that &lt;strong&gt;human intention had acquired a new computational interface&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For most of computing history, the difficult part of software creation was translation.&lt;/p&gt;

&lt;p&gt;A person imagined a desired state.&lt;/p&gt;

&lt;p&gt;Then they translated that state into architecture.&lt;/p&gt;

&lt;p&gt;Then into algorithms.&lt;/p&gt;

&lt;p&gt;Then into APIs.&lt;/p&gt;

&lt;p&gt;Then into control flow.&lt;/p&gt;

&lt;p&gt;Then into syntax.&lt;/p&gt;

&lt;p&gt;Then into build systems.&lt;/p&gt;

&lt;p&gt;Then into deployment systems.&lt;/p&gt;

&lt;p&gt;Then, after several hours of discovering that YAML contains more ways to experience regret than previously thought possible, into production.&lt;/p&gt;

&lt;p&gt;Generative AI began compressing parts of that translation chain.&lt;/p&gt;

&lt;p&gt;A human could state the destination before understanding every road.&lt;/p&gt;

&lt;p&gt;That was the breakthrough.&lt;/p&gt;

&lt;p&gt;But it was not the destination.&lt;/p&gt;

&lt;p&gt;The next stage is emerging now.&lt;/p&gt;

&lt;p&gt;It is the transition from &lt;strong&gt;vibe coding&lt;/strong&gt; to &lt;strong&gt;agentic software engineering&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that transition may eventually matter much more than code generation itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Vibe Coding Was Not the Revolution. It Was the Demo
&lt;/h3&gt;

&lt;p&gt;One easy mistake when thinking about AI-assisted programming is to focus too much on code.&lt;/p&gt;

&lt;p&gt;Code is important, obviously.&lt;/p&gt;

&lt;p&gt;But code is only one intermediate representation in a much larger engineering process.&lt;/p&gt;

&lt;p&gt;Software engineering begins before code exists.&lt;/p&gt;

&lt;p&gt;Someone identifies a need.&lt;/p&gt;

&lt;p&gt;Someone decides what behavior is desirable.&lt;/p&gt;

&lt;p&gt;Someone models the system.&lt;/p&gt;

&lt;p&gt;Someone determines what must never happen.&lt;/p&gt;

&lt;p&gt;Someone considers failure.&lt;/p&gt;

&lt;p&gt;Someone weighs compatibility.&lt;/p&gt;

&lt;p&gt;Someone chooses which compromises are reversible.&lt;/p&gt;

&lt;p&gt;Someone defines what evidence would count as success.&lt;/p&gt;

&lt;p&gt;And software engineering continues after code has been written.&lt;/p&gt;

&lt;p&gt;The system must build.&lt;/p&gt;

&lt;p&gt;It must pass tests.&lt;/p&gt;

&lt;p&gt;It must survive strange inputs.&lt;/p&gt;

&lt;p&gt;It must handle data safely.&lt;/p&gt;

&lt;p&gt;It must deploy.&lt;/p&gt;

&lt;p&gt;It must recover.&lt;/p&gt;

&lt;p&gt;It must remain observable.&lt;/p&gt;

&lt;p&gt;Its documentation must tell the truth.&lt;/p&gt;

&lt;p&gt;Its dependencies must remain supportable.&lt;/p&gt;

&lt;p&gt;Its permissions must remain bounded.&lt;/p&gt;

&lt;p&gt;Its future maintainers must be able to discover why the strange-looking thing in line 847 exists instead of "cleaning it up" and resurrecting a bug from 2024.&lt;/p&gt;

&lt;p&gt;The act of producing source code is therefore only a slice of engineering.&lt;/p&gt;

&lt;p&gt;Vibe coding automated that slice first because language models are extraordinarily well suited to turning descriptions into plausible text.&lt;/p&gt;

&lt;p&gt;That was enough to make the experience feel magical.&lt;/p&gt;

&lt;p&gt;But magic is what technologies look like immediately before we standardize their interfaces.&lt;/p&gt;

&lt;p&gt;A more mature version of AI engineering will not be limited to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Write some code that seems right.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It will increasingly be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Achieve this bounded engineering objective, preserve these invariants, use these authorized tools, gather this evidence, and stop if the evidence does not justify proceeding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a radically different proposition.&lt;/p&gt;

&lt;p&gt;The first is generation.&lt;/p&gt;

&lt;p&gt;The second is delegated engineering.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Every Great Computing Revolution Is an Abstraction Revolution
&lt;/h3&gt;

&lt;p&gt;The history of computing is, among other things, the history of humans repeatedly becoming unwilling to think about yesterday's details.&lt;/p&gt;

&lt;p&gt;Early programmers interacted with machinery near the physical level.&lt;/p&gt;

&lt;p&gt;Then came symbolic assembly.&lt;/p&gt;

&lt;p&gt;Then higher-level languages.&lt;/p&gt;

&lt;p&gt;Then structured programming.&lt;/p&gt;

&lt;p&gt;Then libraries.&lt;/p&gt;

&lt;p&gt;Then operating systems.&lt;/p&gt;

&lt;p&gt;Then databases.&lt;/p&gt;

&lt;p&gt;Then object systems.&lt;/p&gt;

&lt;p&gt;Then frameworks.&lt;/p&gt;

&lt;p&gt;Then virtual machines.&lt;/p&gt;

&lt;p&gt;Then package managers.&lt;/p&gt;

&lt;p&gt;Then cloud platforms.&lt;/p&gt;

&lt;p&gt;Then declarative infrastructure.&lt;/p&gt;

&lt;p&gt;Then managed services.&lt;/p&gt;

&lt;p&gt;Then serverless systems.&lt;/p&gt;

&lt;p&gt;Then application platforms.&lt;/p&gt;

&lt;p&gt;At each layer, critics could correctly point out that the lower layer had not disappeared.&lt;/p&gt;

&lt;p&gt;Somewhere there is still machine code.&lt;/p&gt;

&lt;p&gt;Somewhere there are still memory pages.&lt;/p&gt;

&lt;p&gt;Somewhere electrons remain stubbornly involved.&lt;/p&gt;

&lt;p&gt;But civilization advances by allowing most people to stop thinking about the lower layer most of the time.&lt;/p&gt;

&lt;p&gt;Abstraction does not eliminate reality.&lt;/p&gt;

&lt;p&gt;It reorganizes responsibility for reality.&lt;/p&gt;

&lt;p&gt;The database engineer does not expect an application developer to position the disk head.&lt;/p&gt;

&lt;p&gt;The web developer does not manually implement TCP congestion control.&lt;/p&gt;

&lt;p&gt;The mobile developer does not manufacture the accelerometer.&lt;/p&gt;

&lt;p&gt;The user who asks a spreadsheet to calculate a sum does not expect to become briefly responsible for floating-point hardware.&lt;/p&gt;

&lt;p&gt;Generative AI represents another abstraction layer.&lt;/p&gt;

&lt;p&gt;But it is subtler than "English replaces Python."&lt;/p&gt;

&lt;p&gt;That slogan is catchy and mostly wrong.&lt;/p&gt;

&lt;p&gt;The important abstraction is not natural language over programming language.&lt;/p&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;desired state over explicit procedure&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Traditional programming asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What exact operations should the machine execute?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Declarative programming asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What state should exist?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agentic engineering extends that pattern:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What outcome should exist, under which constraints, and what evidence is required before we accept that it exists?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much more powerful interface.&lt;/p&gt;

&lt;p&gt;It changes not merely how code is written, but where engineering effort accumulates.&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%2Fqn68gm4c83x4bcbmgz6k.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%2Fqn68gm4c83x4bcbmgz6k.png" alt="Computing abstractions move from machine-level switching toward outcome-level delegation. Each step hides some mechanics while moving complexity into design, constraints, and verification." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Dream Is Older Than Generative AI
&lt;/h3&gt;

&lt;p&gt;There is a temptation to treat modern AI-assisted computing as though history began when a chat box appeared.&lt;/p&gt;

&lt;p&gt;It did not.&lt;/p&gt;

&lt;p&gt;The intellectual ancestry is much richer.&lt;/p&gt;

&lt;p&gt;In 1945, Vannevar Bush imagined machinery that could extend human access to knowledge through associative structures rather than merely reproducing traditional filing systems. His famous &lt;em&gt;As We May Think&lt;/em&gt; envisioned something closer to an intellectual prosthesis than a conventional calculating machine.&lt;/p&gt;

&lt;p&gt;Norbert Wiener's cybernetics, first published in 1948, made feedback and control central conceptual tools for understanding both machines and organisms. The critical insight for our purposes is that competent behavior need not consist of executing a perfect predetermined plan; it may instead involve observing consequences and correcting action through feedback.&lt;/p&gt;

&lt;p&gt;J. C. R. Licklider went further in 1960. In &lt;em&gt;Man-Computer Symbiosis&lt;/em&gt;, he imagined close cooperation in which humans would establish goals, hypotheses, criteria, and evaluations while machines handled routinizable work supporting those decisions.&lt;/p&gt;

&lt;p&gt;Read today, that division of labor feels almost suspiciously current.&lt;/p&gt;

&lt;p&gt;Humans define the objective.&lt;/p&gt;

&lt;p&gt;Machines perform substantial cognitive operations.&lt;/p&gt;

&lt;p&gt;Humans evaluate.&lt;/p&gt;

&lt;p&gt;The partnership exceeds either participant alone.&lt;/p&gt;

&lt;p&gt;Two years later, Douglas Engelbart described "augmenting human intellect" as increasing humanity's capacity to comprehend complex situations and solve problems that had previously exceeded practical reach.&lt;/p&gt;

&lt;p&gt;Then Herbert Simon framed design as the science of artificial systems: not merely studying what &lt;em&gt;is&lt;/em&gt;, but systematically reasoning about artifacts constructed in pursuit of purposes.&lt;/p&gt;

&lt;p&gt;These ideas form a lineage:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;memory augmentation -&amp;gt; feedback -&amp;gt; symbiosis -&amp;gt; intellectual augmentation -&amp;gt; design science&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agentic engineering is not an alien break from that tradition.&lt;/p&gt;

&lt;p&gt;It is one of its most literal realizations.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. From Autocomplete to Agency
&lt;/h3&gt;

&lt;p&gt;Consider the progression.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage one: completion
&lt;/h4&gt;

&lt;p&gt;The machine predicts the next token.&lt;/p&gt;

&lt;p&gt;Useful, but fundamentally local.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage two: generation
&lt;/h4&gt;

&lt;p&gt;The machine produces a function, a component, a test, perhaps a file.&lt;/p&gt;

&lt;p&gt;Now intent can produce larger artifacts.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage three: conversational editing
&lt;/h4&gt;

&lt;p&gt;The machine modifies existing code according to instructions.&lt;/p&gt;

&lt;p&gt;The human can steer iteratively.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage four: repository awareness
&lt;/h4&gt;

&lt;p&gt;The machine searches files, understands relationships, inspects configuration, traces definitions, and reasons across multiple modules.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage five: tool use
&lt;/h4&gt;

&lt;p&gt;The machine can run tests, issue commands, inspect logs, query services, read documentation, and observe execution results.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage six: goal-directed iteration
&lt;/h4&gt;

&lt;p&gt;The machine receives an objective, forms a plan, modifies the environment, observes consequences, updates its approach, and repeats.&lt;/p&gt;

&lt;p&gt;At this point we have crossed an important line.&lt;/p&gt;

&lt;p&gt;The machine is no longer simply producing text.&lt;/p&gt;

&lt;p&gt;It is interacting with an environment to pursue a state transition.&lt;/p&gt;

&lt;p&gt;That is agency in the engineering sense.&lt;/p&gt;

&lt;p&gt;Not philosophical personhood.&lt;/p&gt;

&lt;p&gt;Not consciousness.&lt;/p&gt;

&lt;p&gt;Not a synthetic employee demanding coffee privileges.&lt;/p&gt;

&lt;p&gt;Operational agency.&lt;/p&gt;

&lt;p&gt;The ability to take sequential actions toward a goal under changing information.&lt;/p&gt;

&lt;p&gt;Modern research benchmarks have increasingly moved in exactly this direction. SWE-bench was designed around real GitHub issues requiring repository-level changes rather than isolated function completion. Its original dataset contained 2,294 problems from 12 Python repositories and explicitly emphasized the need to coordinate changes across files and interact with execution environments.&lt;/p&gt;

&lt;p&gt;By October 2026, “SWE-bench” no longer names one undifferentiated score: its official leaderboard separates Full, Verified, Lite, Multilingual, and Multimodal tracks. Two September preprints make the limits of benchmark scores especially visible. SWE-Bench Pro Verified reports reward-hacking/leakage and task-quality problems in the earlier Pro evaluation, and finds that some systems perform substantially worse after those problems are addressed. SWE-Proof adds a formal-verification oracle to 500 SWE-bench-derived issues; in its reported experiments, formal checks find counterexamples in between a quarter and a half of test-passing patches, while faithful specification synthesis remains difficult. These are early results tied to particular datasets, models, and harnesses, not a universal ranking or a measure of production autonomy. They support a narrower point: a benchmark result describes what that evaluator measured, and trustworthy evaluation must itself be engineered. &lt;a href="https://www.swebench.com/" rel="noopener noreferrer"&gt;SWE-bench tracks&lt;/a&gt; · &lt;a href="https://arxiv.org/abs/2609.08149" rel="noopener noreferrer"&gt;SWE-Bench Pro Verified&lt;/a&gt; · &lt;a href="https://arxiv.org/abs/2609.21190v2" rel="noopener noreferrer"&gt;SWE-Proof, v2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SWE-agent subsequently demonstrated how much the surrounding interface matters: agents perform differently depending on how effectively they can inspect repositories, edit files, execute tools, and receive feedback.&lt;/p&gt;

&lt;p&gt;That is a profound clue.&lt;/p&gt;

&lt;p&gt;The future of AI software engineering depends not only on better models, but also on better tools, interfaces, and governance around them.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The Prompt Is Becoming a Protocol
&lt;/h3&gt;

&lt;p&gt;Early AI development culture fetishized prompts.&lt;/p&gt;

&lt;p&gt;There were secret prompt recipes.&lt;/p&gt;

&lt;p&gt;Prompt frameworks.&lt;/p&gt;

&lt;p&gt;Prompt gurus.&lt;/p&gt;

&lt;p&gt;Prompt incantations.&lt;/p&gt;

&lt;p&gt;A strangely large quantity of human ingenuity was devoted to asking a machine to "think step by step" in increasingly decorative ways.&lt;/p&gt;

&lt;p&gt;Prompts remain useful.&lt;/p&gt;

&lt;p&gt;But mature engineering does not rest on incantation.&lt;/p&gt;

&lt;p&gt;It rests on protocol.&lt;/p&gt;

&lt;p&gt;Compare:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fix the persistence bug.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Reproduce the reported persistence failure. Identify the violated invariant. Determine which storage authority owns the durable state. Preserve exact user data. Do not weaken existing validation. Add a regression test covering the failure condition. Run the required browser and desktop verification paths. If any required evidence is unavailable, report UNKNOWN rather than PASS. Present the resulting diff and evidence before requesting merge authorization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The second instruction is not "better prompting" in the superficial sense.&lt;/p&gt;

&lt;p&gt;It encodes a miniature operating system for responsibility.&lt;/p&gt;

&lt;p&gt;It defines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;objective,&lt;/li&gt;
&lt;li&gt;constraints,&lt;/li&gt;
&lt;li&gt;authority,&lt;/li&gt;
&lt;li&gt;failure semantics,&lt;/li&gt;
&lt;li&gt;evidence requirements,&lt;/li&gt;
&lt;li&gt;prohibited shortcuts,&lt;/li&gt;
&lt;li&gt;and escalation conditions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is where agentic engineering becomes serious.&lt;/p&gt;

&lt;p&gt;We move from telling intelligent systems &lt;strong&gt;what to say&lt;/strong&gt; toward defining &lt;strong&gt;how intelligent work may proceed&lt;/strong&gt;.&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%2F16454hwvsugh2u58h8t0.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%2F16454hwvsugh2u58h8t0.png" alt="A request becomes reviewable work when it names the goal, invariants, allowed tools, evidence, stop condition, and human authorization; missing required evidence routes to unknown, not pass." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Governing the Repository and Its Agents
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6. The Repository Becomes a Tiny Civilization
&lt;/h3&gt;

&lt;p&gt;A modern repository is often described as a collection of source files.&lt;/p&gt;

&lt;p&gt;This is like describing a city as a collection of bricks.&lt;/p&gt;

&lt;p&gt;Technically defensible.&lt;/p&gt;

&lt;p&gt;Conceptually inadequate.&lt;/p&gt;

&lt;p&gt;A serious repository contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;source code,&lt;/li&gt;
&lt;li&gt;dependency contracts,&lt;/li&gt;
&lt;li&gt;schemas,&lt;/li&gt;
&lt;li&gt;architectural rules,&lt;/li&gt;
&lt;li&gt;tests,&lt;/li&gt;
&lt;li&gt;build systems,&lt;/li&gt;
&lt;li&gt;deployment systems,&lt;/li&gt;
&lt;li&gt;security policies,&lt;/li&gt;
&lt;li&gt;release procedures,&lt;/li&gt;
&lt;li&gt;ownership declarations,&lt;/li&gt;
&lt;li&gt;review conventions,&lt;/li&gt;
&lt;li&gt;changelog rules,&lt;/li&gt;
&lt;li&gt;migration history,&lt;/li&gt;
&lt;li&gt;issue history,&lt;/li&gt;
&lt;li&gt;incident knowledge,&lt;/li&gt;
&lt;li&gt;observability contracts,&lt;/li&gt;
&lt;li&gt;and enough shell scripts to recreate a small Bronze Age religion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not merely technical artifacts.&lt;/p&gt;

&lt;p&gt;They are institutional artifacts.&lt;/p&gt;

&lt;p&gt;A test is a law expressed as executable evidence.&lt;/p&gt;

&lt;p&gt;A type system is a boundary on representable states.&lt;/p&gt;

&lt;p&gt;A CI workflow is a procedure for deciding which transitions are admissible.&lt;/p&gt;

&lt;p&gt;A required check is a veto point.&lt;/p&gt;

&lt;p&gt;A code owner is a jurisdiction.&lt;/p&gt;

&lt;p&gt;A release process is a constitutional transfer of authority from candidate state to public state.&lt;/p&gt;

&lt;p&gt;An audit log is institutional memory.&lt;/p&gt;

&lt;p&gt;Once autonomous agents participate in development, this institutional interpretation becomes much more important.&lt;/p&gt;

&lt;p&gt;Because now the repository has inhabitants.&lt;/p&gt;

&lt;p&gt;The question becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Under what constitution should machine actors operate?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is why the best agentic engineering systems will not be the ones that trust AI the most.&lt;/p&gt;

&lt;p&gt;They will be the ones that need to trust it the least.&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%2Fh723l53uka8ck5uzxijd.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%2Fh723l53uka8ck5uzxijd.png" alt="Ownership, policy, tests, workflow identity, and artifact provenance contribute different evidence to a merge or release decision; none alone represents the entire organization." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Trust the System, Not the Mood of the Model
&lt;/h3&gt;

&lt;p&gt;A bridge is not safe because its engineer seemed intelligent.&lt;/p&gt;

&lt;p&gt;An airplane is not airworthy because the maintenance technician was confident.&lt;/p&gt;

&lt;p&gt;A cryptographic protocol is not secure because somebody wrote "looks good" in a pull request.&lt;/p&gt;

&lt;p&gt;Engineering civilization rests on a basic insight:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;capable humans can still be wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Therefore trustworthy systems constrain capable humans.&lt;/p&gt;

&lt;p&gt;We use checklists.&lt;/p&gt;

&lt;p&gt;Independent review.&lt;/p&gt;

&lt;p&gt;Static analysis.&lt;/p&gt;

&lt;p&gt;Redundancy.&lt;/p&gt;

&lt;p&gt;Simulation.&lt;/p&gt;

&lt;p&gt;Testing.&lt;/p&gt;

&lt;p&gt;Certification.&lt;/p&gt;

&lt;p&gt;Separation of duties.&lt;/p&gt;

&lt;p&gt;Version control.&lt;/p&gt;

&lt;p&gt;Rollback.&lt;/p&gt;

&lt;p&gt;Monitoring.&lt;/p&gt;

&lt;p&gt;Incident investigation.&lt;/p&gt;

&lt;p&gt;AI deserves the same courtesy.&lt;/p&gt;

&lt;p&gt;The wrong question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the model be trusted?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What architecture remains safe when the model is intermittently wrong?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a far more optimistic question than it appears.&lt;/p&gt;

&lt;p&gt;Because if we solve it, progress no longer requires perfect artificial intelligence.&lt;/p&gt;

&lt;p&gt;We can obtain tremendous value from imperfect intelligence embedded inside strong institutions.&lt;/p&gt;

&lt;p&gt;That is much more achievable.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Generation Gets Cheap; Verification Gets Precious
&lt;/h3&gt;

&lt;p&gt;Suppose an agent can generate a plausible implementation in thirty seconds.&lt;/p&gt;

&lt;p&gt;Wonderful.&lt;/p&gt;

&lt;p&gt;Suppose it can generate ten implementations in five minutes.&lt;/p&gt;

&lt;p&gt;Even better.&lt;/p&gt;

&lt;p&gt;Now what?&lt;/p&gt;

&lt;p&gt;In workflows where candidate generation gets cheap, one bottleneck starts to move.&lt;/p&gt;

&lt;p&gt;Candidate generation may no longer be the scarce resource.&lt;/p&gt;

&lt;p&gt;Selection becomes more valuable.&lt;/p&gt;

&lt;p&gt;Which implementation is correct?&lt;/p&gt;

&lt;p&gt;Which is maintainable?&lt;/p&gt;

&lt;p&gt;Which violates a hidden invariant?&lt;/p&gt;

&lt;p&gt;Which quietly leaks memory?&lt;/p&gt;

&lt;p&gt;Which mishandles Unicode?&lt;/p&gt;

&lt;p&gt;Which passes visible tests while breaking behavior nobody remembered to test?&lt;/p&gt;

&lt;p&gt;Which adds a dependency with unacceptable licensing?&lt;/p&gt;

&lt;p&gt;Which behaves differently under concurrency?&lt;/p&gt;

&lt;p&gt;Which solves today's bug by creating next month's incident?&lt;/p&gt;

&lt;p&gt;This is the &lt;strong&gt;verification inversion&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As generation becomes cheaper, verification can become relatively more valuable.&lt;/p&gt;

&lt;p&gt;That points toward a shift in software engineering investment.&lt;/p&gt;

&lt;p&gt;Teams may get more value from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;property-based testing,&lt;/li&gt;
&lt;li&gt;mutation testing,&lt;/li&gt;
&lt;li&gt;fuzzing,&lt;/li&gt;
&lt;li&gt;formal specification,&lt;/li&gt;
&lt;li&gt;symbolic analysis,&lt;/li&gt;
&lt;li&gt;architecture tests,&lt;/li&gt;
&lt;li&gt;reproducible builds,&lt;/li&gt;
&lt;li&gt;provenance tracking,&lt;/li&gt;
&lt;li&gt;dependency verification,&lt;/li&gt;
&lt;li&gt;security policy engines,&lt;/li&gt;
&lt;li&gt;differential testing,&lt;/li&gt;
&lt;li&gt;runtime canaries,&lt;/li&gt;
&lt;li&gt;synthetic users,&lt;/li&gt;
&lt;li&gt;automatic rollback,&lt;/li&gt;
&lt;li&gt;and adversarial agent review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The great AI engineering platform of the future may not be distinguished primarily by how much code it can produce.&lt;/p&gt;

&lt;p&gt;It may be distinguished by how much &lt;strong&gt;bad code it can confidently reject&lt;/strong&gt;.&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%2Fq3gr7yoyhlqxoyw5uxr6.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%2Fq3gr7yoyhlqxoyw5uxr6.png" alt="Lower-cost generation can create more plausible candidates, shifting attention toward selection and verification; the arrows describe an argument, not measured quantities." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. What Do We Actually Know About AI Productivity?
&lt;/h3&gt;

&lt;p&gt;Technological enthusiasm becomes more credible when it survives contact with inconvenient evidence.&lt;/p&gt;

&lt;p&gt;So here is some inconvenient evidence.&lt;/p&gt;

&lt;p&gt;A controlled 2023 experiment involving GitHub Copilot found that participants asked to build an HTTP server completed the task 55.8% faster with the AI assistant than the control group.&lt;/p&gt;

&lt;p&gt;That sounds spectacular.&lt;/p&gt;

&lt;p&gt;Then a 2025 randomized study by METR examined 16 experienced open-source developers completing 246 tasks in mature repositories they already knew well. In that setting, early-2025 AI tools increased completion time by about 19%, even though participants believed the tools were helping them go faster.&lt;/p&gt;

&lt;p&gt;Also spectacular.&lt;/p&gt;

&lt;p&gt;In the opposite direction.&lt;/p&gt;

&lt;p&gt;Then things became more interesting.&lt;/p&gt;

&lt;p&gt;In its February 2026 update, METR said later measurements were a weak signal because participants and tasks were selected in ways that likely missed some of the most AI-optimistic cases, and concurrent agents made time accounting harder. The returning-participant estimate (n=10) was an 18% time reduction, with an interval from 38% faster to 9% slower; newly recruited developers (n=47) showed a 4% estimated reduction, with an interval from 15% faster to 9% slower. Both intervals include no speedup. METR explicitly called the estimate a poor proxy for the true effect. The original study remains evidence about its 2025 tools, people, and task setting; the follow-up does not establish a universal current productivity number. &lt;a href="https://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;METR update&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is exactly what we should expect during a rapidly changing technological transition.&lt;/p&gt;

&lt;p&gt;"Does AI make programmers faster?" is too crude a question.&lt;/p&gt;

&lt;p&gt;Better questions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which programmers?&lt;/li&gt;
&lt;li&gt;Doing what tasks?&lt;/li&gt;
&lt;li&gt;In familiar or unfamiliar repositories?&lt;/li&gt;
&lt;li&gt;With what quality bar?&lt;/li&gt;
&lt;li&gt;Using which models?&lt;/li&gt;
&lt;li&gt;With which agent interfaces?&lt;/li&gt;
&lt;li&gt;With how much parallelism?&lt;/li&gt;
&lt;li&gt;Under which review regime?&lt;/li&gt;
&lt;li&gt;Measuring typing time, elapsed time, cognitive load, cycle time, or throughput?&lt;/li&gt;
&lt;li&gt;Counting downstream defects?&lt;/li&gt;
&lt;li&gt;Counting work delegated asynchronously?&lt;/li&gt;
&lt;li&gt;Counting tasks that previously would never have been attempted?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Technology changes measurement before it changes consensus.&lt;/p&gt;

&lt;p&gt;The printing press was not valuable because scribes achieved superior handwriting throughput.&lt;/p&gt;

&lt;p&gt;The spreadsheet was not valuable because accountants typed numbers faster.&lt;/p&gt;

&lt;p&gt;The internet was not valuable because letters were written with fewer keystrokes.&lt;/p&gt;

&lt;p&gt;The largest effects come when workflows reorganize around new capabilities.&lt;/p&gt;

&lt;p&gt;Agentic engineering is likely to be the same.&lt;/p&gt;

&lt;h4&gt;
  
  
  What should a team measure?
&lt;/h4&gt;

&lt;p&gt;The productivity question is not a vote between two studies. It is a measurement problem with several outcomes that can move in different directions.&lt;/p&gt;

&lt;p&gt;Elapsed time is useful, but it is not the only cost. A person might spend less time typing and more time reviewing. A task might finish earlier while requiring a second engineer to repair a subtle regression. An agent may do useful work asynchronously while its operator handles another task, which makes wall-clock time difficult to assign to one person. A tool may make a previously unaffordable experiment possible; a study of only assigned tasks will not count work that nobody would otherwise have started.&lt;/p&gt;

&lt;p&gt;Quality also needs a defined test. “The patch passed the tests” means that the chosen tests passed. It does not automatically measure maintainability, user comprehension, security, support burden, or whether the right problem was solved. Nor does the presence of a longer test suite imply better quality if the tests simply encode the implementation’s assumptions.&lt;/p&gt;

&lt;p&gt;A team evaluating a new workflow can start with a small, representative set of tasks and decide in advance what it will measure: completion time, acceptance rate, rework, escaped defects, review effort, or a combination. Preserve task and tool context. Record which model and agent configuration were used, which checks ran, and whether the person could work on other tasks while waiting. Compare like with like where possible, and be explicit when the comparison is not randomized.&lt;/p&gt;

&lt;p&gt;The result should be a profile, not one magic percentage. Perhaps routine migrations become quicker while unfamiliar architectural work takes longer to review. Perhaps a junior engineer gets more prototypes but needs stronger supervision. Perhaps the tool is a clear win for documentation and a poor fit for changes to an unfamiliar persistence boundary. These are useful findings even when they do not collapse into a single headline.&lt;/p&gt;

&lt;p&gt;This is a proposed measurement discipline, not a claim that one study design solves every confound. Its purpose is simpler: keep the question attached to the work people actually do, and keep quality and downstream cost in the same frame as speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. The Unit of Automation Is Expanding
&lt;/h3&gt;

&lt;p&gt;At first we automated characters.&lt;/p&gt;

&lt;p&gt;Then expressions.&lt;/p&gt;

&lt;p&gt;Then functions.&lt;/p&gt;

&lt;p&gt;Then files.&lt;/p&gt;

&lt;p&gt;Now we are beginning to automate &lt;strong&gt;engineering episodes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An engineering episode might be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Upgrade the database driver safely.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That includes far more than editing a version number.&lt;/p&gt;

&lt;p&gt;A serious agent may need to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;identify all affected packages;&lt;/li&gt;
&lt;li&gt;inspect release notes;&lt;/li&gt;
&lt;li&gt;evaluate breaking changes;&lt;/li&gt;
&lt;li&gt;update dependency constraints;&lt;/li&gt;
&lt;li&gt;regenerate the lockfile;&lt;/li&gt;
&lt;li&gt;repair compilation errors;&lt;/li&gt;
&lt;li&gt;migrate affected APIs;&lt;/li&gt;
&lt;li&gt;run tests;&lt;/li&gt;
&lt;li&gt;inspect failures;&lt;/li&gt;
&lt;li&gt;modify tests where behavior intentionally changed;&lt;/li&gt;
&lt;li&gt;check security advisories;&lt;/li&gt;
&lt;li&gt;benchmark critical paths;&lt;/li&gt;
&lt;li&gt;update documentation;&lt;/li&gt;
&lt;li&gt;inspect generated artifacts;&lt;/li&gt;
&lt;li&gt;prepare a review summary;&lt;/li&gt;
&lt;li&gt;stop before merge if authorization is required.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That collection of work used to be distributed across dozens of manual interactions.&lt;/p&gt;

&lt;p&gt;The future agent does not merely write code.&lt;/p&gt;

&lt;p&gt;It performs bounded operational labor.&lt;/p&gt;

&lt;p&gt;The unit of automation rises from syntax to workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. The Engineer Moves Up the Stack
&lt;/h3&gt;

&lt;p&gt;When people ask whether programmers will disappear, they often imagine a fixed quantity of software work.&lt;/p&gt;

&lt;p&gt;There is some pile of tasks.&lt;/p&gt;

&lt;p&gt;Humans currently perform it.&lt;/p&gt;

&lt;p&gt;Machines begin performing it.&lt;/p&gt;

&lt;p&gt;Therefore fewer humans are required.&lt;/p&gt;

&lt;p&gt;Sometimes that will happen.&lt;/p&gt;

&lt;p&gt;But general-purpose technologies rarely operate on a fixed pile of demand.&lt;/p&gt;

&lt;p&gt;When the cost of capability falls, people demand more capability.&lt;/p&gt;

&lt;p&gt;The more interesting question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What becomes valuable when implementation becomes abundant?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer is judgment.&lt;/p&gt;

&lt;p&gt;Architecture.&lt;/p&gt;

&lt;p&gt;Problem selection.&lt;/p&gt;

&lt;p&gt;Product understanding.&lt;/p&gt;

&lt;p&gt;Risk reasoning.&lt;/p&gt;

&lt;p&gt;Constraint design.&lt;/p&gt;

&lt;p&gt;Verification.&lt;/p&gt;

&lt;p&gt;Taste.&lt;/p&gt;

&lt;p&gt;Human context.&lt;/p&gt;

&lt;p&gt;The engineer increasingly becomes responsible for questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What outcome actually matters?&lt;/li&gt;
&lt;li&gt;Which state is authoritative?&lt;/li&gt;
&lt;li&gt;Which invariants are sacred?&lt;/li&gt;
&lt;li&gt;What evidence is sufficient?&lt;/li&gt;
&lt;li&gt;Which operation is reversible?&lt;/li&gt;
&lt;li&gt;Which data cannot be exposed?&lt;/li&gt;
&lt;li&gt;Which part should remain simple?&lt;/li&gt;
&lt;li&gt;Which automation should require approval?&lt;/li&gt;
&lt;li&gt;Which failure should degrade gracefully?&lt;/li&gt;
&lt;li&gt;Which trade-off will future maintainers regret?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are higher-order engineering questions.&lt;/p&gt;

&lt;p&gt;The model can participate in answering them.&lt;/p&gt;

&lt;p&gt;But responsibility for the system increasingly concentrates there.&lt;/p&gt;

&lt;p&gt;The future engineer is less a person who manually converts specifications into syntax and more a &lt;strong&gt;designer of socio-technical decision systems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is a promotion, not a demotion.&lt;/p&gt;

&lt;h3&gt;
  
  
  12. Congratulations, You Are Now Managing a Tiny Engineering Organization
&lt;/h3&gt;

&lt;p&gt;The next major interface for programming may look less like an editor and more like an operations center.&lt;/p&gt;

&lt;p&gt;Imagine opening a development environment and seeing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Implement resumable encrypted uploads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Constraints&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no plaintext persistence,&lt;/li&gt;
&lt;li&gt;mobile-safe memory usage,&lt;/li&gt;
&lt;li&gt;backwards-compatible API,&lt;/li&gt;
&lt;li&gt;existing public URLs must remain stable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Agents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;architecture investigator,&lt;/li&gt;
&lt;li&gt;implementation agent,&lt;/li&gt;
&lt;li&gt;test agent,&lt;/li&gt;
&lt;li&gt;security critic,&lt;/li&gt;
&lt;li&gt;documentation agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Evidence&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unit tests: PASS&lt;/li&gt;
&lt;li&gt;fuzz suite: PASS&lt;/li&gt;
&lt;li&gt;browser E2E: PASS&lt;/li&gt;
&lt;li&gt;mobile memory budget: FAIL&lt;/li&gt;
&lt;li&gt;security review: PENDING&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Decision&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Merge authorization unavailable because memory budget failed.&lt;/p&gt;

&lt;p&gt;This is much more interesting than watching a model type quickly.&lt;/p&gt;

&lt;p&gt;The human supervises a system of specialized cognitive workers.&lt;/p&gt;

&lt;p&gt;One proposes.&lt;/p&gt;

&lt;p&gt;One critiques.&lt;/p&gt;

&lt;p&gt;One tests.&lt;/p&gt;

&lt;p&gt;One examines dependencies.&lt;/p&gt;

&lt;p&gt;One checks policy.&lt;/p&gt;

&lt;p&gt;One watches production.&lt;/p&gt;

&lt;p&gt;The human allocates attention where uncertainty is highest.&lt;/p&gt;

&lt;p&gt;Software development begins to borrow concepts from organizational theory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;delegation,&lt;/li&gt;
&lt;li&gt;authority,&lt;/li&gt;
&lt;li&gt;escalation,&lt;/li&gt;
&lt;li&gt;specialization,&lt;/li&gt;
&lt;li&gt;separation of duties,&lt;/li&gt;
&lt;li&gt;audit,&lt;/li&gt;
&lt;li&gt;consensus,&lt;/li&gt;
&lt;li&gt;veto,&lt;/li&gt;
&lt;li&gt;budget,&lt;/li&gt;
&lt;li&gt;priority,&lt;/li&gt;
&lt;li&gt;institutional memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will discover that building great agent systems is partly the art of designing very strange companies whose employees are software processes.&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%2Fvrc22u93loxi0ho4h1xn.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%2Fvrc22u93loxi0ho4h1xn.png" alt="Agents may investigate, draft, test, and report within granted permissions. People retain goal selection, policy, consequential authorization, and accountability; an explicit gate separates capability from authority." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  13. Policy Becomes a Programming Language
&lt;/h3&gt;

&lt;p&gt;The more capable agents become, the more important it becomes to encode what they must not do.&lt;/p&gt;

&lt;p&gt;Consider rules such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;production secrets must never enter model context;&lt;/li&gt;
&lt;li&gt;database migrations require review;&lt;/li&gt;
&lt;li&gt;release tags must be signed;&lt;/li&gt;
&lt;li&gt;failing tests may not be deleted to achieve green CI;&lt;/li&gt;
&lt;li&gt;security checks may not be bypassed;&lt;/li&gt;
&lt;li&gt;user data may not leave approved regions;&lt;/li&gt;
&lt;li&gt;destructive infrastructure changes require explicit authorization;&lt;/li&gt;
&lt;li&gt;a release may only originate from a revision whose required evidence passed;&lt;/li&gt;
&lt;li&gt;an agent may propose a policy change but may not authorize that same change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These rules are simultaneously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;organizational,&lt;/li&gt;
&lt;li&gt;technical,&lt;/li&gt;
&lt;li&gt;legal,&lt;/li&gt;
&lt;li&gt;operational,&lt;/li&gt;
&lt;li&gt;and architectural.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the agentic era, they become executable.&lt;/p&gt;

&lt;p&gt;This is a major evolution.&lt;/p&gt;

&lt;p&gt;Organizations currently store enormous quantities of critical knowledge inside human habit.&lt;/p&gt;

&lt;p&gt;"Ask Sarah before touching that."&lt;/p&gt;

&lt;p&gt;"Never run this script against prod."&lt;/p&gt;

&lt;p&gt;"That migration must happen after the cache flush."&lt;/p&gt;

&lt;p&gt;"The deployment is green, but only if the artifact hashes match."&lt;/p&gt;

&lt;p&gt;One day an organization discovers that Sarah is on vacation and nobody remembers why the migration rule exists.&lt;/p&gt;

&lt;p&gt;Agentic engineering creates strong incentives to turn tacit wisdom into machine-readable policy.&lt;/p&gt;

&lt;p&gt;That is good for AI.&lt;/p&gt;

&lt;p&gt;It is also good for humans.&lt;/p&gt;

&lt;h3&gt;
  
  
  14. The Strange Return of Formalism
&lt;/h3&gt;

&lt;p&gt;Natural-language programming sounds informal.&lt;/p&gt;

&lt;p&gt;The mature system may become more formal than traditional development.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because natural language is wonderfully ambiguous.&lt;/p&gt;

&lt;p&gt;"Delete obsolete deployments."&lt;/p&gt;

&lt;p&gt;Which ones are obsolete?&lt;/p&gt;

&lt;p&gt;Anything older than thirty days?&lt;/p&gt;

&lt;p&gt;Anything whose branch merged?&lt;/p&gt;

&lt;p&gt;What about rollback deployments?&lt;/p&gt;

&lt;p&gt;What about legal retention?&lt;/p&gt;

&lt;p&gt;What about active canaries?&lt;/p&gt;

&lt;p&gt;What if a customer is still using a direct deployment URL?&lt;/p&gt;

&lt;p&gt;The phrase sounds simple because a human quietly supplies context.&lt;/p&gt;

&lt;p&gt;Agents force us to discover how much context existed only in someone's head.&lt;/p&gt;

&lt;p&gt;So precision returns.&lt;/p&gt;

&lt;p&gt;But it returns in new places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;invariants,&lt;/li&gt;
&lt;li&gt;schemas,&lt;/li&gt;
&lt;li&gt;acceptance criteria,&lt;/li&gt;
&lt;li&gt;typed tool interfaces,&lt;/li&gt;
&lt;li&gt;permissions,&lt;/li&gt;
&lt;li&gt;policies,&lt;/li&gt;
&lt;li&gt;state machines,&lt;/li&gt;
&lt;li&gt;contracts,&lt;/li&gt;
&lt;li&gt;tests,&lt;/li&gt;
&lt;li&gt;proofs,&lt;/li&gt;
&lt;li&gt;capability declarations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The paradoxical future is both more conversational &lt;strong&gt;and&lt;/strong&gt; more formal.&lt;/p&gt;

&lt;p&gt;Humans express intention naturally.&lt;/p&gt;

&lt;p&gt;Machines compile that intention into structured plans and constrained operations.&lt;/p&gt;

&lt;p&gt;Where ambiguity is harmless, systems proceed.&lt;/p&gt;

&lt;p&gt;Where consequences are reversible, systems experiment.&lt;/p&gt;

&lt;p&gt;Where actions are dangerous, systems ask for stronger authority.&lt;/p&gt;

&lt;p&gt;That is a far superior interface to either "write every instruction manually" or "trust the robot and hope."&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure the System, Not the Demo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  15. Software Development Starts Looking More Like Experimental Science
&lt;/h3&gt;

&lt;p&gt;A mature engineering agent should not report:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fixed it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is not an engineering statement.&lt;/p&gt;

&lt;p&gt;That is a mood.&lt;/p&gt;

&lt;p&gt;A useful report looks more like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The failure occurred when an asynchronous writer committed after the active project identity changed. I reproduced the condition, introduced an identity-bound epoch, rejected stale commits, added regression tests for in-flight authority changes, and verified both persistence backends.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now we have claims.&lt;/p&gt;

&lt;p&gt;Claims can be challenged.&lt;/p&gt;

&lt;p&gt;Experiments can be repeated.&lt;/p&gt;

&lt;p&gt;Evidence can be inspected.&lt;/p&gt;

&lt;p&gt;The shift toward agentic engineering may therefore increase pressure for software development to become more epistemically disciplined.&lt;/p&gt;

&lt;p&gt;An engineering change should increasingly carry:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the hypothesized failure mechanism,&lt;/li&gt;
&lt;li&gt;the relevant invariant,&lt;/li&gt;
&lt;li&gt;the change made,&lt;/li&gt;
&lt;li&gt;the tests performed,&lt;/li&gt;
&lt;li&gt;the artifact identity,&lt;/li&gt;
&lt;li&gt;the observed result,&lt;/li&gt;
&lt;li&gt;known residual uncertainty.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is science-like behavior.&lt;/p&gt;

&lt;p&gt;Not because software engineering becomes pure science.&lt;/p&gt;

&lt;p&gt;But because delegated intelligence requires explicit justification.&lt;/p&gt;

&lt;p&gt;The machine cannot rely on the office folklore that "everyone knows this is how we do it."&lt;/p&gt;

&lt;p&gt;That folklore must become inspectable.&lt;/p&gt;

&lt;h3&gt;
  
  
  16. Documentation Stops Being Decoration
&lt;/h3&gt;

&lt;p&gt;There is an amusing possibility here.&lt;/p&gt;

&lt;p&gt;AI may finally force developers to write documentation.&lt;/p&gt;

&lt;p&gt;Not because management sends another reminder.&lt;/p&gt;

&lt;p&gt;Because agents work better in environments where architectural truth is explicit.&lt;/p&gt;

&lt;p&gt;A codebase with clear boundaries, current documentation, reliable tests, explicit state ownership, and machine-readable conventions provides much better terrain for autonomous systems.&lt;/p&gt;

&lt;p&gt;A chaotic repository full of stale comments, hidden assumptions, magical environment variables, and four competing definitions of "project state" is difficult for agents for exactly the same reason it is difficult for humans.&lt;/p&gt;

&lt;p&gt;AI therefore increases the economic return on engineering hygiene.&lt;/p&gt;

&lt;p&gt;Architecture documents stop being ceremonial artifacts.&lt;/p&gt;

&lt;p&gt;They become context infrastructure.&lt;/p&gt;

&lt;p&gt;Policies stop being PDFs nobody reads.&lt;/p&gt;

&lt;p&gt;They become executable constraints.&lt;/p&gt;

&lt;p&gt;Decision records stop being historical curiosities.&lt;/p&gt;

&lt;p&gt;They become training data for future engineering episodes.&lt;/p&gt;

&lt;p&gt;The better the organization explains itself to machines, the better it often explains itself to people.&lt;/p&gt;

&lt;h3&gt;
  
  
  17. Software Abundance Changes the Economics of Ideas
&lt;/h3&gt;

&lt;p&gt;Now we arrive at the genuinely transformative possibility.&lt;/p&gt;

&lt;p&gt;Software can be expensive.&lt;/p&gt;

&lt;p&gt;Not merely in money.&lt;/p&gt;

&lt;p&gt;In activation energy.&lt;/p&gt;

&lt;p&gt;Suppose a biology researcher has an idea for a specialized visualization.&lt;/p&gt;

&lt;p&gt;Today, the researcher may need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a developer,&lt;/li&gt;
&lt;li&gt;funding,&lt;/li&gt;
&lt;li&gt;requirements meetings,&lt;/li&gt;
&lt;li&gt;infrastructure,&lt;/li&gt;
&lt;li&gt;authentication,&lt;/li&gt;
&lt;li&gt;deployment,&lt;/li&gt;
&lt;li&gt;maintenance,&lt;/li&gt;
&lt;li&gt;perhaps procurement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea may die before anyone creates a repository.&lt;/p&gt;

&lt;p&gt;Suppose a teacher wants a tiny application tailored to one curriculum.&lt;/p&gt;

&lt;p&gt;Too niche.&lt;/p&gt;

&lt;p&gt;Suppose a disabled user needs an interface modified in a highly specific way.&lt;/p&gt;

&lt;p&gt;Too small a market.&lt;/p&gt;

&lt;p&gt;Suppose seventeen marine biologists need a collaborative tool for tracking a peculiar species of mollusk.&lt;/p&gt;

&lt;p&gt;Someone will suggest Excel.&lt;/p&gt;

&lt;p&gt;It is always Excel.&lt;/p&gt;

&lt;p&gt;Excel has seen things.&lt;/p&gt;

&lt;p&gt;The economics of software often favor repeated needs shared by many people.&lt;/p&gt;

&lt;p&gt;Agentic engineering could make much smaller markets viable.&lt;/p&gt;

&lt;p&gt;If the cost of implementation, testing, deployment, and maintenance falls enough, &lt;strong&gt;more long-tail software could become economically reachable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That means more software for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rare diseases,&lt;/li&gt;
&lt;li&gt;minority languages,&lt;/li&gt;
&lt;li&gt;specialized research,&lt;/li&gt;
&lt;li&gt;local government,&lt;/li&gt;
&lt;li&gt;unusual accessibility requirements,&lt;/li&gt;
&lt;li&gt;niche industrial workflows,&lt;/li&gt;
&lt;li&gt;small communities,&lt;/li&gt;
&lt;li&gt;temporary humanitarian operations,&lt;/li&gt;
&lt;li&gt;classrooms,&lt;/li&gt;
&lt;li&gt;laboratories,&lt;/li&gt;
&lt;li&gt;families,&lt;/li&gt;
&lt;li&gt;and individuals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mass production historically made standardized goods cheap.&lt;/p&gt;

&lt;p&gt;Intelligent automation may make customization cheap.&lt;/p&gt;

&lt;p&gt;That is a different kind of abundance.&lt;/p&gt;

&lt;h3&gt;
  
  
  18. The End of the Blank Project
&lt;/h3&gt;

&lt;p&gt;Generative AI has already reduced one psychological barrier: the terror of starting.&lt;/p&gt;

&lt;p&gt;The empty editor is unforgiving.&lt;/p&gt;

&lt;p&gt;It asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So, genius, what is the architecture?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A conversational agent says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tell me what you are trying to do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That difference matters.&lt;/p&gt;

&lt;p&gt;Creative production is often constrained less by imagination than by activation energy.&lt;/p&gt;

&lt;p&gt;People possess ideas they never attempt because the first thousand steps are too expensive.&lt;/p&gt;

&lt;p&gt;AI can reduce the cost of the first attempt.&lt;/p&gt;

&lt;p&gt;And failed attempts matter too.&lt;/p&gt;

&lt;p&gt;If experimentation becomes cheap, people can explore more possibilities.&lt;/p&gt;

&lt;p&gt;The result is not merely more finished software.&lt;/p&gt;

&lt;p&gt;It is a larger &lt;strong&gt;search space of human creativity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Most experiments will be unimportant.&lt;/p&gt;

&lt;p&gt;That is fine.&lt;/p&gt;

&lt;p&gt;Most scientific hypotheses are not revolutions.&lt;/p&gt;

&lt;p&gt;Most books are not &lt;em&gt;War and Peace&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Most startups do not become global institutions.&lt;/p&gt;

&lt;p&gt;Abundance works through distributions.&lt;/p&gt;

&lt;p&gt;Lower experimentation costs could make valuable outliers easier to discover.&lt;/p&gt;

&lt;h3&gt;
  
  
  19. Small Teams Become Weirdly Powerful
&lt;/h3&gt;

&lt;p&gt;Imagine a five-person organization with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one product expert,&lt;/li&gt;
&lt;li&gt;one senior engineer,&lt;/li&gt;
&lt;li&gt;one designer,&lt;/li&gt;
&lt;li&gt;one domain specialist,&lt;/li&gt;
&lt;li&gt;one operations lead,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;plus persistent access to specialized engineering agents.&lt;/p&gt;

&lt;p&gt;The effective organization might take on work once spread across a larger team.&lt;/p&gt;

&lt;p&gt;Not because each agent perfectly replaces a job title.&lt;/p&gt;

&lt;p&gt;Because the fixed overhead of specialized work may shrink.&lt;/p&gt;

&lt;p&gt;The group can temporarily instantiate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a security reviewer,&lt;/li&gt;
&lt;li&gt;a test engineer,&lt;/li&gt;
&lt;li&gt;a migration specialist,&lt;/li&gt;
&lt;li&gt;a data analyst,&lt;/li&gt;
&lt;li&gt;a documentation writer,&lt;/li&gt;
&lt;li&gt;an infrastructure investigator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This changes entrepreneurship.&lt;/p&gt;

&lt;p&gt;It changes nonprofits.&lt;/p&gt;

&lt;p&gt;It changes research labs.&lt;/p&gt;

&lt;p&gt;It changes civic technology.&lt;/p&gt;

&lt;p&gt;It changes independent creators.&lt;/p&gt;

&lt;p&gt;The minimum organizational mass required to attempt ambitious work could decline.&lt;/p&gt;

&lt;p&gt;That is socially significant.&lt;/p&gt;

&lt;p&gt;Great ideas are not evenly distributed among people with access to large engineering budgets.&lt;/p&gt;

&lt;p&gt;Anything that reduces the correlation between "ability to build" and "institutional wealth" increases the number of possible innovators.&lt;/p&gt;

&lt;h3&gt;
  
  
  20. Expertise Becomes More Scalable, Not Less Valuable
&lt;/h3&gt;

&lt;p&gt;A common fear says AI makes expertise worthless.&lt;/p&gt;

&lt;p&gt;A better model says AI makes &lt;strong&gt;encoded expertise more scalable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Consider a brilliant security engineer.&lt;/p&gt;

&lt;p&gt;Today that engineer can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;review some pull requests,&lt;/li&gt;
&lt;li&gt;design some systems,&lt;/li&gt;
&lt;li&gt;mentor some colleagues,&lt;/li&gt;
&lt;li&gt;write some documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Their influence is limited by attention.&lt;/p&gt;

&lt;p&gt;Now imagine their expertise partly captured in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;policy rules,&lt;/li&gt;
&lt;li&gt;threat-model templates,&lt;/li&gt;
&lt;li&gt;adversarial test suites,&lt;/li&gt;
&lt;li&gt;security-review agents,&lt;/li&gt;
&lt;li&gt;dependency constraints,&lt;/li&gt;
&lt;li&gt;secure-by-default scaffolds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The expert's judgment becomes infrastructure.&lt;/p&gt;

&lt;p&gt;One expert influences thousands of changes.&lt;/p&gt;

&lt;p&gt;The same is true for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;accessibility specialists,&lt;/li&gt;
&lt;li&gt;database engineers,&lt;/li&gt;
&lt;li&gt;performance experts,&lt;/li&gt;
&lt;li&gt;cryptographers,&lt;/li&gt;
&lt;li&gt;legal specialists,&lt;/li&gt;
&lt;li&gt;UX researchers,&lt;/li&gt;
&lt;li&gt;scientific methodologists.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI may therefore transform experts from repeated task performers into &lt;strong&gt;designers of scalable judgment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is a powerful form of leverage.&lt;/p&gt;

&lt;h3&gt;
  
  
  21. Education Must Stop Confusing Syntax With Understanding
&lt;/h3&gt;

&lt;p&gt;Programming education is about to face an uncomfortable question.&lt;/p&gt;

&lt;p&gt;If a machine can generate a binary tree implementation in three seconds, should students still learn binary trees?&lt;/p&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;But perhaps not for the old reason.&lt;/p&gt;

&lt;p&gt;The purpose of technical education cannot remain:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Memorize the implementation because one day someone may pay you to type it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The future purpose is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Understand the system deeply enough to evaluate, modify, constrain, and improve machine-generated implementations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That requires serious knowledge.&lt;/p&gt;

&lt;p&gt;Potentially more knowledge.&lt;/p&gt;

&lt;p&gt;A person supervising engineering agents must understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;algorithms,&lt;/li&gt;
&lt;li&gt;data structures,&lt;/li&gt;
&lt;li&gt;networking,&lt;/li&gt;
&lt;li&gt;concurrency,&lt;/li&gt;
&lt;li&gt;storage,&lt;/li&gt;
&lt;li&gt;distributed systems,&lt;/li&gt;
&lt;li&gt;security,&lt;/li&gt;
&lt;li&gt;testing,&lt;/li&gt;
&lt;li&gt;complexity,&lt;/li&gt;
&lt;li&gt;architecture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Otherwise they cannot distinguish a sophisticated solution from sophisticated nonsense.&lt;/p&gt;

&lt;p&gt;The future engineer must be able to recognize when the AI has beautifully solved the wrong problem.&lt;/p&gt;

&lt;p&gt;That is a very human skill.&lt;/p&gt;

&lt;h3&gt;
  
  
  22. The Future IDE Is an Epistemic Cockpit
&lt;/h3&gt;

&lt;p&gt;Traditional development tools are organized around artifacts.&lt;/p&gt;

&lt;p&gt;Files.&lt;/p&gt;

&lt;p&gt;Folders.&lt;/p&gt;

&lt;p&gt;Tabs.&lt;/p&gt;

&lt;p&gt;Branches.&lt;/p&gt;

&lt;p&gt;Terminals.&lt;/p&gt;

&lt;p&gt;Future engineering environments may instead be organized around &lt;strong&gt;claims and state transitions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You might see:&lt;/p&gt;

&lt;h4&gt;
  
  
  Objective
&lt;/h4&gt;

&lt;p&gt;Prevent stale writes after authority change.&lt;/p&gt;

&lt;h4&gt;
  
  
  Current hypothesis
&lt;/h4&gt;

&lt;p&gt;Writer lifetime outlives target identity.&lt;/p&gt;

&lt;h4&gt;
  
  
  Proposed invariant
&lt;/h4&gt;

&lt;p&gt;Commit only when writer epoch matches active authority epoch.&lt;/p&gt;

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

&lt;p&gt;Unit: green&lt;br&gt;&lt;br&gt;
Concurrency: green&lt;br&gt;&lt;br&gt;
Migration: green&lt;br&gt;&lt;br&gt;
Browser E2E: green&lt;br&gt;&lt;br&gt;
Desktop packaged artifact: pending&lt;/p&gt;

&lt;h4&gt;
  
  
  Residual risk
&lt;/h4&gt;

&lt;p&gt;Legacy import path not exercised.&lt;/p&gt;

&lt;h4&gt;
  
  
  Authorization
&lt;/h4&gt;

&lt;p&gt;Merge blocked pending packaged evidence.&lt;/p&gt;

&lt;p&gt;That interface does something profound.&lt;/p&gt;

&lt;p&gt;It centers the engineering question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What do we know?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;rather than:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which file is open?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Code remains available.&lt;/p&gt;

&lt;p&gt;But code becomes one piece of evidence in a larger epistemic model.&lt;/p&gt;

&lt;h3&gt;
  
  
  23. The Self-Improving Software Factory
&lt;/h3&gt;

&lt;p&gt;Agents can improve products.&lt;/p&gt;

&lt;p&gt;They can also improve the system that produces products.&lt;/p&gt;

&lt;p&gt;An agent can inspect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;flaky tests,&lt;/li&gt;
&lt;li&gt;repeated incidents,&lt;/li&gt;
&lt;li&gt;slow builds,&lt;/li&gt;
&lt;li&gt;recurring review findings,&lt;/li&gt;
&lt;li&gt;frequently broken APIs,&lt;/li&gt;
&lt;li&gt;duplicated configuration,&lt;/li&gt;
&lt;li&gt;stale documentation,&lt;/li&gt;
&lt;li&gt;dependency churn,&lt;/li&gt;
&lt;li&gt;security warnings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then it can ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why does this problem keep recurring?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A repeated human review comment can become a lint rule.&lt;/p&gt;

&lt;p&gt;A recurrent incident can become a regression test.&lt;/p&gt;

&lt;p&gt;A manual checklist can become an executable gate.&lt;/p&gt;

&lt;p&gt;An architectural convention can become a static constraint.&lt;/p&gt;

&lt;p&gt;The engineering organization gradually converts experience into machinery.&lt;/p&gt;

&lt;p&gt;This is the beginning of a self-improving software factory.&lt;/p&gt;

&lt;p&gt;Not self-improving in the science-fiction sense of an unconstrained intelligence rewriting itself overnight.&lt;/p&gt;

&lt;p&gt;Self-improving in the much more useful sense of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;the development process continuously learning which mistakes deserve permanent prevention.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is organizational learning with executable memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure, Costs, and Responsible Optimism
&lt;/h2&gt;

&lt;h3&gt;
  
  
  24. Failure Does Not Invalidate the Vision
&lt;/h3&gt;

&lt;p&gt;Agentic systems will fail.&lt;/p&gt;

&lt;p&gt;They will misunderstand requests.&lt;/p&gt;

&lt;p&gt;They will hallucinate APIs.&lt;/p&gt;

&lt;p&gt;They will introduce regressions.&lt;/p&gt;

&lt;p&gt;They will make architectural changes nobody requested.&lt;/p&gt;

&lt;p&gt;They will discover an old dependency and decide, with heroic confidence, that now is an excellent time to upgrade it.&lt;/p&gt;

&lt;p&gt;They will occasionally spend half an hour fixing a defect they created eleven minutes earlier.&lt;/p&gt;

&lt;p&gt;This is not evidence that agents cannot participate in engineering.&lt;/p&gt;

&lt;p&gt;It is evidence that they already understand the culture.&lt;/p&gt;

&lt;p&gt;Human engineering is full of errors.&lt;/p&gt;

&lt;p&gt;The safety of engineering disciplines comes from mechanisms for catching and containing them.&lt;/p&gt;

&lt;p&gt;Aviation does not assume perfect pilots.&lt;/p&gt;

&lt;p&gt;Medicine does not assume perfect memory.&lt;/p&gt;

&lt;p&gt;Nuclear operations do not assume perfect attention.&lt;/p&gt;

&lt;p&gt;Financial systems do not assume perfect arithmetic.&lt;/p&gt;

&lt;p&gt;Agentic engineering should similarly assume fallibility.&lt;/p&gt;

&lt;p&gt;The design objective is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;high capability, bounded consequence, strong evidence.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  25. Brooks Was Right—and AI Can Still Be Transformative
&lt;/h3&gt;

&lt;p&gt;Frederick Brooks famously argued in &lt;em&gt;No Silver Bullet&lt;/em&gt; that there was no single development likely to produce an order-of-magnitude improvement across software productivity, reliability, and simplicity, because much of software's difficulty arises from the essential complexity of conceptual structures rather than accidental implementation friction.&lt;/p&gt;

&lt;p&gt;That insight remains useful.&lt;/p&gt;

&lt;p&gt;AI does not make essential complexity disappear.&lt;/p&gt;

&lt;p&gt;Someone still has to decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what the system should do,&lt;/li&gt;
&lt;li&gt;which conflicting requirements matter,&lt;/li&gt;
&lt;li&gt;where authority belongs,&lt;/li&gt;
&lt;li&gt;how failure should behave,&lt;/li&gt;
&lt;li&gt;which trade-offs are acceptable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But AI may substantially reduce the accidental complexity surrounding those decisions.&lt;/p&gt;

&lt;p&gt;Boilerplate.&lt;/p&gt;

&lt;p&gt;API discovery.&lt;/p&gt;

&lt;p&gt;Mechanical migration.&lt;/p&gt;

&lt;p&gt;Configuration.&lt;/p&gt;

&lt;p&gt;Routine testing.&lt;/p&gt;

&lt;p&gt;Search.&lt;/p&gt;

&lt;p&gt;Cross-referencing.&lt;/p&gt;

&lt;p&gt;Documentation.&lt;/p&gt;

&lt;p&gt;Diagnosis.&lt;/p&gt;

&lt;p&gt;This is exactly why agentic engineering may be transformative without being a magical silver bullet.&lt;/p&gt;

&lt;p&gt;It does not abolish engineering.&lt;/p&gt;

&lt;p&gt;It concentrates engineering effort closer to the essential problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  26. The Utilitarian Case for Intelligent Automation
&lt;/h3&gt;

&lt;p&gt;Why should we want this future?&lt;/p&gt;

&lt;p&gt;Not because technology is aesthetically impressive.&lt;/p&gt;

&lt;p&gt;Not because intelligence benchmarks are fun.&lt;/p&gt;

&lt;p&gt;Not because more compute is automatically morally good.&lt;/p&gt;

&lt;p&gt;The strongest argument is consequential.&lt;/p&gt;

&lt;p&gt;A technology is valuable when it increases human welfare.&lt;/p&gt;

&lt;p&gt;Does it reduce suffering?&lt;/p&gt;

&lt;p&gt;Does it free time?&lt;/p&gt;

&lt;p&gt;Does it expand access?&lt;/p&gt;

&lt;p&gt;Does it enable creation?&lt;/p&gt;

&lt;p&gt;Does it improve safety?&lt;/p&gt;

&lt;p&gt;Does it accelerate discovery?&lt;/p&gt;

&lt;p&gt;Does it give more people meaningful agency?&lt;/p&gt;

&lt;p&gt;Agentic engineering has an unusually strong route to those outcomes because software is already a multiplier across nearly every modern domain.&lt;/p&gt;

&lt;p&gt;Cheaper software creation can mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better scientific tools,&lt;/li&gt;
&lt;li&gt;improved healthcare workflows,&lt;/li&gt;
&lt;li&gt;more accessible interfaces,&lt;/li&gt;
&lt;li&gt;better logistics,&lt;/li&gt;
&lt;li&gt;better educational systems,&lt;/li&gt;
&lt;li&gt;improved public administration,&lt;/li&gt;
&lt;li&gt;more effective climate modeling,&lt;/li&gt;
&lt;li&gt;more personalized assistive technology,&lt;/li&gt;
&lt;li&gt;better research infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The value compounds because software builds other capabilities.&lt;/p&gt;

&lt;p&gt;We are not merely automating programming.&lt;/p&gt;

&lt;p&gt;We are potentially reducing the cost of &lt;strong&gt;building tools that build futures&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  27. But Utilitarianism Requires Counting the Costs
&lt;/h3&gt;

&lt;p&gt;Optimism should not become arithmetic fraud.&lt;/p&gt;

&lt;p&gt;The benefits of agentic technology must be weighed against:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;energy consumption,&lt;/li&gt;
&lt;li&gt;security risk,&lt;/li&gt;
&lt;li&gt;labor displacement,&lt;/li&gt;
&lt;li&gt;market concentration,&lt;/li&gt;
&lt;li&gt;surveillance incentives,&lt;/li&gt;
&lt;li&gt;misinformation,&lt;/li&gt;
&lt;li&gt;brittle dependency on providers,&lt;/li&gt;
&lt;li&gt;unequal access,&lt;/li&gt;
&lt;li&gt;degraded accountability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A serious pro-technology position does not deny these.&lt;/p&gt;

&lt;p&gt;It asks how to design institutions that preserve upside while reducing harm.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;competitive ecosystems,&lt;/li&gt;
&lt;li&gt;interoperable systems,&lt;/li&gt;
&lt;li&gt;open standards,&lt;/li&gt;
&lt;li&gt;local capability where practical,&lt;/li&gt;
&lt;li&gt;privacy-preserving architectures,&lt;/li&gt;
&lt;li&gt;clear liability,&lt;/li&gt;
&lt;li&gt;meaningful human control,&lt;/li&gt;
&lt;li&gt;transparent provenance,&lt;/li&gt;
&lt;li&gt;strong security.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best techno-optimism is not faith.&lt;/p&gt;

&lt;p&gt;It is engineering applied to social consequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Star Trek Lens: Agency, Abundance, and Judgment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  28. Why Star Trek Is the Better Metaphor
&lt;/h3&gt;

&lt;p&gt;Science fiction offers many technological futures.&lt;/p&gt;

&lt;p&gt;Some are cautionary.&lt;/p&gt;

&lt;p&gt;Machines dominate.&lt;/p&gt;

&lt;p&gt;Corporations dominate.&lt;/p&gt;

&lt;p&gt;Surveillance dominates.&lt;/p&gt;

&lt;p&gt;Everyone owns seventeen holographic advertisements and appears strangely unhappy.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Star Trek: The Next Generation&lt;/em&gt; represents a different technological philosophy.&lt;/p&gt;

&lt;p&gt;Its most interesting feature is not warp drive.&lt;/p&gt;

&lt;p&gt;It is the &lt;strong&gt;normalization of capability&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Computation is abundant.&lt;/p&gt;

&lt;p&gt;Information is abundant.&lt;/p&gt;

&lt;p&gt;Communication is abundant.&lt;/p&gt;

&lt;p&gt;Fabrication is abundant.&lt;/p&gt;

&lt;p&gt;Routine operations are automated.&lt;/p&gt;

&lt;p&gt;The computer is everywhere but rarely the point.&lt;/p&gt;

&lt;p&gt;Technology recedes into infrastructure.&lt;/p&gt;

&lt;p&gt;This is the ideal form of mature technology.&lt;/p&gt;

&lt;p&gt;You do not spend your day admiring the plumbing.&lt;/p&gt;

&lt;p&gt;You turn on the tap.&lt;/p&gt;

&lt;p&gt;You do not marvel at TCP/IP every time you load a page.&lt;/p&gt;

&lt;p&gt;You expect the network.&lt;/p&gt;

&lt;p&gt;In the Trek vision, technology increasingly removes categories of scarcity and friction so that human attention can move elsewhere.&lt;/p&gt;

&lt;p&gt;Exploration.&lt;/p&gt;

&lt;p&gt;Science.&lt;/p&gt;

&lt;p&gt;Diplomacy.&lt;/p&gt;

&lt;p&gt;Art.&lt;/p&gt;

&lt;p&gt;Self-development.&lt;/p&gt;

&lt;p&gt;Occasionally preventing Q from destroying civilization for pedagogical reasons.&lt;/p&gt;

&lt;p&gt;That is the vision worth borrowing.&lt;/p&gt;

&lt;h3&gt;
  
  
  29. The Replicator Is a Philosophy
&lt;/h3&gt;

&lt;p&gt;The replicator is often treated as a fun gadget.&lt;/p&gt;

&lt;p&gt;But philosophically it represents something deeper.&lt;/p&gt;

&lt;p&gt;It converts intention into artifact at negligible marginal effort.&lt;/p&gt;

&lt;p&gt;"Tea. Earl Grey. Hot."&lt;/p&gt;

&lt;p&gt;The point is not tea.&lt;/p&gt;

&lt;p&gt;The point is that an enormous production chain disappears from the user's cognitive horizon.&lt;/p&gt;

&lt;p&gt;Agentic engineering is moving software in that direction.&lt;/p&gt;

&lt;p&gt;Not fully.&lt;/p&gt;

&lt;p&gt;Not magically.&lt;/p&gt;

&lt;p&gt;But conceptually.&lt;/p&gt;

&lt;p&gt;A person expresses an intention.&lt;/p&gt;

&lt;p&gt;The system performs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;decomposition,&lt;/li&gt;
&lt;li&gt;implementation,&lt;/li&gt;
&lt;li&gt;verification,&lt;/li&gt;
&lt;li&gt;packaging,&lt;/li&gt;
&lt;li&gt;deployment,&lt;/li&gt;
&lt;li&gt;maintenance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The marginal cost of creating some software artifacts falls.&lt;/p&gt;

&lt;p&gt;That is a kind of computational replication.&lt;/p&gt;

&lt;p&gt;And just as the replicator transforms the economics of physical goods in science fiction, cheap generation can transform the economics of digital capability.&lt;/p&gt;

&lt;h3&gt;
  
  
  30. The Computer on the Enterprise Is an Agent Platform
&lt;/h3&gt;

&lt;p&gt;Think about how characters interact with the Enterprise computer.&lt;/p&gt;

&lt;p&gt;They do not usually write scripts.&lt;/p&gt;

&lt;p&gt;They state goals.&lt;/p&gt;

&lt;p&gt;"Computer, analyze the readings."&lt;/p&gt;

&lt;p&gt;"Compare them with Federation records."&lt;/p&gt;

&lt;p&gt;"Simulate the effect."&lt;/p&gt;

&lt;p&gt;"Locate all ships matching these parameters."&lt;/p&gt;

&lt;p&gt;"Create a program."&lt;/p&gt;

&lt;p&gt;The computer resolves substantial procedural detail.&lt;/p&gt;

&lt;p&gt;Humans remain responsible for mission objectives.&lt;/p&gt;

&lt;p&gt;This is remarkably close to the interface we are constructing.&lt;/p&gt;

&lt;p&gt;The significant difference is that Star Trek assumes the infrastructure has become trustworthy enough to disappear.&lt;/p&gt;

&lt;p&gt;Our job is to build the missing trust layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  31. The Picard Test
&lt;/h3&gt;

&lt;p&gt;We need a criterion for whether this future is actually good.&lt;/p&gt;

&lt;p&gt;Call it &lt;strong&gt;the Picard Test&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A technology passes when it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;increases human capability;&lt;/li&gt;
&lt;li&gt;reduces unnecessary drudgery;&lt;/li&gt;
&lt;li&gt;expands access to knowledge and creation;&lt;/li&gt;
&lt;li&gt;preserves meaningful human agency;&lt;/li&gt;
&lt;li&gt;supports rather than erodes dignity;&lt;/li&gt;
&lt;li&gt;increases the space available for intrinsically valuable activity;&lt;/li&gt;
&lt;li&gt;distributes benefits broadly enough to improve collective welfare.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The question is not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is the AI impressive?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Are humans more capable because it exists?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the metric that matters.&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%2Fykbfd7471q0if1sl0us7.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%2Fykbfd7471q0if1sl0us7.png" alt="Evaluate an automation by whether it expands people's room to think, create, explore, care, and decide—or consumes that attention in supervision of a brittle system." width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  32. Humans Should Not Compete With Machines at Being Machines
&lt;/h3&gt;

&lt;p&gt;There is something deeply absurd about imagining the purpose of artificial intelligence as forcing humans to become more machine-like.&lt;/p&gt;

&lt;p&gt;Faster typing.&lt;/p&gt;

&lt;p&gt;Longer working hours.&lt;/p&gt;

&lt;p&gt;Higher ticket throughput.&lt;/p&gt;

&lt;p&gt;More constant availability.&lt;/p&gt;

&lt;p&gt;That is technological failure.&lt;/p&gt;

&lt;p&gt;The correct division of labor is the opposite.&lt;/p&gt;

&lt;p&gt;Let machines perform machine-like work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;exhaustive search,&lt;/li&gt;
&lt;li&gt;repetitive transformation,&lt;/li&gt;
&lt;li&gt;continuous monitoring,&lt;/li&gt;
&lt;li&gt;mechanical comparison,&lt;/li&gt;
&lt;li&gt;large-scale execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let humans specialize further in what gives human activity meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;imagination,&lt;/li&gt;
&lt;li&gt;judgment,&lt;/li&gt;
&lt;li&gt;empathy,&lt;/li&gt;
&lt;li&gt;responsibility,&lt;/li&gt;
&lt;li&gt;purpose,&lt;/li&gt;
&lt;li&gt;curiosity,&lt;/li&gt;
&lt;li&gt;moral reasoning,&lt;/li&gt;
&lt;li&gt;aesthetic taste,&lt;/li&gt;
&lt;li&gt;relationships.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective is not maximum automation.&lt;/p&gt;

&lt;p&gt;It is &lt;strong&gt;better allocation of cognition&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  33. The Bottleneck Eventually Becomes Wisdom
&lt;/h3&gt;

&lt;p&gt;Imagine that agentic engineering succeeds beyond expectation.&lt;/p&gt;

&lt;p&gt;Building software becomes dramatically easier.&lt;/p&gt;

&lt;p&gt;Then the critical question changes.&lt;/p&gt;

&lt;p&gt;It is no longer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can we build this?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Should we?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This may be the defining problem of technological abundance.&lt;/p&gt;

&lt;p&gt;When implementation is expensive, cost filters ideas.&lt;/p&gt;

&lt;p&gt;When implementation becomes cheap, judgment must replace cost as the filter.&lt;/p&gt;

&lt;p&gt;Should this feature exist?&lt;/p&gt;

&lt;p&gt;Should this automation be allowed?&lt;/p&gt;

&lt;p&gt;Who benefits?&lt;/p&gt;

&lt;p&gt;Who bears risk?&lt;/p&gt;

&lt;p&gt;Does it increase autonomy?&lt;/p&gt;

&lt;p&gt;Does it exploit attention?&lt;/p&gt;

&lt;p&gt;Does it preserve privacy?&lt;/p&gt;

&lt;p&gt;Does it reduce suffering?&lt;/p&gt;

&lt;p&gt;Does it create genuine value?&lt;/p&gt;

&lt;p&gt;These questions cannot be outsourced merely because machines become intelligent.&lt;/p&gt;

&lt;p&gt;They become more important.&lt;/p&gt;

&lt;p&gt;In this scenario, the final scarcity is not compute.&lt;/p&gt;

&lt;p&gt;It is wisdom.&lt;/p&gt;

&lt;h3&gt;
  
  
  34. The Programmer of 2035 Will Feel Sorry for Us
&lt;/h3&gt;

&lt;p&gt;Imagine a developer in 2035 examining an archaeological record of software development in 2025.&lt;/p&gt;

&lt;p&gt;"You manually searched the repository?"&lt;/p&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;"You copied the error message into another application?"&lt;/p&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;"You read dependency release notes yourself?"&lt;/p&gt;

&lt;p&gt;Often.&lt;/p&gt;

&lt;p&gt;"You waited for CI, then reopened a browser to check it?"&lt;/p&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;"And sometimes a release depended on someone remembering a checklist?"&lt;/p&gt;

&lt;p&gt;Please stop.&lt;/p&gt;

&lt;p&gt;"And if the documentation became stale-"&lt;/p&gt;

&lt;p&gt;I SAID PLEASE STOP.&lt;/p&gt;

&lt;p&gt;Future generations always discover that the past contained astonishing amounts of manual glue.&lt;/p&gt;

&lt;p&gt;We are living inside glue work we no longer notice.&lt;/p&gt;

&lt;p&gt;AI will make much of it visible by making its automation possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  35. Humans Will Still Code
&lt;/h3&gt;

&lt;p&gt;Of course they will.&lt;/p&gt;

&lt;p&gt;People still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cook despite restaurants,&lt;/li&gt;
&lt;li&gt;drive despite trains,&lt;/li&gt;
&lt;li&gt;paint despite cameras,&lt;/li&gt;
&lt;li&gt;grow vegetables despite supermarkets,&lt;/li&gt;
&lt;li&gt;play chess despite engines.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Making things is satisfying.&lt;/p&gt;

&lt;p&gt;Direct manipulation is intellectually rewarding.&lt;/p&gt;

&lt;p&gt;Code is a beautiful medium.&lt;/p&gt;

&lt;p&gt;Some domains require exact control.&lt;/p&gt;

&lt;p&gt;Some people simply enjoy it.&lt;/p&gt;

&lt;p&gt;The future does not need to abolish programming.&lt;/p&gt;

&lt;p&gt;It may rescue programming from some of the bureaucracy surrounding programming.&lt;/p&gt;

&lt;p&gt;Less repetitive plumbing.&lt;/p&gt;

&lt;p&gt;More interesting design.&lt;/p&gt;

&lt;p&gt;Less configuration archaeology.&lt;/p&gt;

&lt;p&gt;More algorithms.&lt;/p&gt;

&lt;p&gt;Less dependency babysitting.&lt;/p&gt;

&lt;p&gt;More experimentation.&lt;/p&gt;

&lt;p&gt;Less time wondering why a CI runner has decided today is the day to become philosophical.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Prompts to Protocols
&lt;/h2&gt;

&lt;h3&gt;
  
  
  36. Vibe Coding Was the Biplane
&lt;/h3&gt;

&lt;p&gt;We should remember vibe coding affectionately.&lt;/p&gt;

&lt;p&gt;It revealed the interface.&lt;/p&gt;

&lt;p&gt;It demonstrated that human language could become a high-bandwidth control surface for software construction.&lt;/p&gt;

&lt;p&gt;It made millions of people feel, perhaps for the first time:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I can make the computer do something I imagined.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That feeling is historically important.&lt;/p&gt;

&lt;p&gt;But the first aircraft did not define aviation.&lt;/p&gt;

&lt;p&gt;The first automobiles did not define modern transportation.&lt;/p&gt;

&lt;p&gt;Early websites did not define the internet.&lt;/p&gt;

&lt;p&gt;Vibe coding will not define agentic engineering.&lt;/p&gt;

&lt;p&gt;It was the biplane made of canvas, timber, and optimism.&lt;/p&gt;

&lt;p&gt;The next stage adds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;instrumentation,&lt;/li&gt;
&lt;li&gt;procedures,&lt;/li&gt;
&lt;li&gt;navigation,&lt;/li&gt;
&lt;li&gt;traffic control,&lt;/li&gt;
&lt;li&gt;maintenance,&lt;/li&gt;
&lt;li&gt;certification,&lt;/li&gt;
&lt;li&gt;redundancy,&lt;/li&gt;
&lt;li&gt;safety engineering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Less romantic.&lt;/p&gt;

&lt;p&gt;Far more powerful.&lt;/p&gt;

&lt;h3&gt;
  
  
  37. From Prompting Machines to Governing Capability
&lt;/h3&gt;

&lt;p&gt;The deepest transition can be summarized in three eras.&lt;/p&gt;

&lt;h4&gt;
  
  
  Era One: Code
&lt;/h4&gt;

&lt;p&gt;The human specifies procedure.&lt;/p&gt;

&lt;h4&gt;
  
  
  Era Two: Prompt
&lt;/h4&gt;

&lt;p&gt;The human describes desired artifact.&lt;/p&gt;

&lt;h4&gt;
  
  
  Era Three: Protocol
&lt;/h4&gt;

&lt;p&gt;The human defines desired outcome, boundaries, evidence, and authority.&lt;/p&gt;

&lt;p&gt;The third era is where agentic engineering becomes an institution.&lt;/p&gt;

&lt;p&gt;And institutions are what allow powerful actors to cooperate reliably.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Future Worth Building
&lt;/h2&gt;

&lt;h3&gt;
  
  
  38. The Grand Future
&lt;/h3&gt;

&lt;p&gt;Imagine a mature version of this technology.&lt;/p&gt;

&lt;p&gt;A scientist has an idea for analyzing microscopy data.&lt;/p&gt;

&lt;p&gt;She describes the analysis.&lt;/p&gt;

&lt;p&gt;An agent constructs a reproducible pipeline.&lt;/p&gt;

&lt;p&gt;Another agent tests statistical assumptions.&lt;/p&gt;

&lt;p&gt;Another verifies provenance.&lt;/p&gt;

&lt;p&gt;Another creates the visualization.&lt;/p&gt;

&lt;p&gt;The scientist evaluates the scientific meaning.&lt;/p&gt;

&lt;p&gt;A teacher wants an adaptive learning environment for a specific class.&lt;/p&gt;

&lt;p&gt;The system generates it.&lt;/p&gt;

&lt;p&gt;Accessibility checks run automatically.&lt;/p&gt;

&lt;p&gt;Content aligns with the curriculum.&lt;/p&gt;

&lt;p&gt;Student data remains local by policy.&lt;/p&gt;

&lt;p&gt;The teacher adjusts the pedagogy.&lt;/p&gt;

&lt;p&gt;A small nonprofit needs software for emergency relief coordination.&lt;/p&gt;

&lt;p&gt;Agents assemble it from verified components.&lt;/p&gt;

&lt;p&gt;Security constraints are enforced.&lt;/p&gt;

&lt;p&gt;Deployment is automatic.&lt;/p&gt;

&lt;p&gt;Operators remain in control of consequential actions.&lt;/p&gt;

&lt;p&gt;A person with a unique disability describes how an existing interface fails them.&lt;/p&gt;

&lt;p&gt;The system produces an adaptation for one person.&lt;/p&gt;

&lt;p&gt;In the limit, a market of one may become reachable: software could be tailored to an individual user. That is a scenario about lower fixed costs, not a prediction that every custom tool will be cheap to maintain.&lt;/p&gt;

&lt;p&gt;And that is enough.&lt;/p&gt;

&lt;p&gt;A researcher creates an experimental tool in an afternoon.&lt;/p&gt;

&lt;p&gt;A municipality builds a service without buying a gigantic enterprise platform.&lt;/p&gt;

&lt;p&gt;A small company maintains infrastructure once requiring a dedicated operations department.&lt;/p&gt;

&lt;p&gt;An independent developer supervises a group of agents that test, document, secure, and maintain software around the clock.&lt;/p&gt;

&lt;p&gt;Not because humanity has been removed.&lt;/p&gt;

&lt;p&gt;Because the mechanical distance between intention and capability has shrunk.&lt;/p&gt;

&lt;h3&gt;
  
  
  39. A Better Definition of Progress
&lt;/h3&gt;

&lt;p&gt;Progress is not the number of tasks machines can perform.&lt;/p&gt;

&lt;p&gt;Progress is the number of valuable things humans become capable of doing.&lt;/p&gt;

&lt;p&gt;That distinction should guide everything.&lt;/p&gt;

&lt;p&gt;The best future for AI is not one in which machines become impressive and humans become spectators.&lt;/p&gt;

&lt;p&gt;It is one in which machine capability becomes a multiplier on human agency.&lt;/p&gt;

&lt;p&gt;That is the difference between automation as displacement and automation as civilization.&lt;/p&gt;

&lt;h3&gt;
  
  
  40. Engage
&lt;/h3&gt;

&lt;p&gt;Vibe coding began with a wonderfully unserious proposition:&lt;/p&gt;

&lt;p&gt;What if we stopped obsessing over the code and simply told the computer what we wanted?&lt;/p&gt;

&lt;p&gt;It turned out that this was simultaneously irresponsible and profound.&lt;/p&gt;

&lt;p&gt;Because buried inside the chaos was a glimpse of a new abstraction layer.&lt;/p&gt;

&lt;p&gt;We are now learning to civilize it.&lt;/p&gt;

&lt;p&gt;To add architecture.&lt;/p&gt;

&lt;p&gt;Evidence.&lt;/p&gt;

&lt;p&gt;Policy.&lt;/p&gt;

&lt;p&gt;Verification.&lt;/p&gt;

&lt;p&gt;Authority.&lt;/p&gt;

&lt;p&gt;Memory.&lt;/p&gt;

&lt;p&gt;Recovery.&lt;/p&gt;

&lt;p&gt;Specialization.&lt;/p&gt;

&lt;p&gt;Accountability.&lt;/p&gt;

&lt;p&gt;The future of software engineering is therefore not "AI writes all the code."&lt;/p&gt;

&lt;p&gt;That is far too small an idea.&lt;/p&gt;

&lt;p&gt;The future is that increasingly capable computational systems participate in the entire process by which human intentions become reliable technological capabilities.&lt;/p&gt;

&lt;p&gt;When that process works, implementation becomes cheaper.&lt;/p&gt;

&lt;p&gt;Experimentation expands.&lt;/p&gt;

&lt;p&gt;Expertise scales.&lt;/p&gt;

&lt;p&gt;Small teams become powerful.&lt;/p&gt;

&lt;p&gt;Long-tail problems become worth solving.&lt;/p&gt;

&lt;p&gt;Human attention moves upward.&lt;/p&gt;

&lt;p&gt;Technology recedes into infrastructure.&lt;/p&gt;

&lt;p&gt;And perhaps, eventually, software begins to feel less like a fragile pile of instructions and more like the quietly competent machinery aboard a well-run starship.&lt;/p&gt;

&lt;p&gt;The computer handles the computation.&lt;/p&gt;

&lt;p&gt;The agents maintain the systems.&lt;/p&gt;

&lt;p&gt;The replicator makes the tea.&lt;/p&gt;

&lt;p&gt;And the humans decide where to go.&lt;/p&gt;

&lt;p&gt;That is not a future in which technology has replaced humanity.&lt;/p&gt;

&lt;p&gt;It is one in which technology has finally learned its proper role:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;to enlarge the space of human possibility.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading and evidence
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Andrej Karpathy, &lt;a href="https://x.com/karpathy/status/1886192184808149383" rel="noopener noreferrer"&gt;original “vibe coding” post (February 2025)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Vannevar Bush, &lt;a href="https://www.theatlantic.com/magazine/archive/1945/07/as-we-may-think/303881/" rel="noopener noreferrer"&gt;“As We May Think” (1945)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Norbert Wiener, &lt;a href="https://mitpress.mit.edu/9780262730099/cybernetics/" rel="noopener noreferrer"&gt;&lt;em&gt;Cybernetics&lt;/em&gt; (1948)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;J. C. R. Licklider, &lt;a href="https://doi.org/10.1109/THFE2.1960.4503259" rel="noopener noreferrer"&gt;“Man-Computer Symbiosis” (1960)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Douglas Engelbart, &lt;a href="https://dougengelbart.org/pubs/augment-3906-Framework.html" rel="noopener noreferrer"&gt;“Augmenting Human Intellect: A Conceptual Framework” (1962)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Herbert A. Simon, &lt;a href="https://mitpress.mit.edu/9780262190510/the-sciences-of-the-artificial/" rel="noopener noreferrer"&gt;&lt;em&gt;The Sciences of the Artificial&lt;/em&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Frederick P. Brooks Jr., &lt;a href="https://doi.org/10.1109/MC.1987.1663532" rel="noopener noreferrer"&gt;“No Silver Bullet” (1987)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Peng et al., &lt;a href="https://arxiv.org/abs/2302.06590" rel="noopener noreferrer"&gt;The Impact of AI on Developer Productivity (2023)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;METR, &lt;a href="https://arxiv.org/abs/2507.09089" rel="noopener noreferrer"&gt;randomized study (2025)&lt;/a&gt; and &lt;a href="https://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;measurement update (2026)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dora.dev/research/2025/dora-report/" rel="noopener noreferrer"&gt;DORA 2025 report&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Jimenez et al., &lt;a href="https://arxiv.org/abs/2310.06770" rel="noopener noreferrer"&gt;SWE-bench (2023)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.swebench.com/" rel="noopener noreferrer"&gt;Official SWE-bench leaderboard and benchmark tracks&lt;/a&gt; (accessed 2026-10-01).&lt;/li&gt;
&lt;li&gt;Zheng et al., &lt;a href="https://arxiv.org/abs/2609.08149" rel="noopener noreferrer"&gt;SWE-Bench Pro Verified (2026 preprint)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2609.21190v2" rel="noopener noreferrer"&gt;SWE-Proof (2026 preprint, v2)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Hassan et al., &lt;a href="https://arxiv.org/abs/2509.06216" rel="noopener noreferrer"&gt;Agentic Software Engineering: Foundational Pillars and a Research Roadmap (2025)&lt;/a&gt;. This paper proposes a conceptual vocabulary and research roadmap, not a universal standard.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.github.com/en/pull-requests/reference/status-checks" rel="noopener noreferrer"&gt;GitHub status-check documentation&lt;/a&gt; and the &lt;a href="https://slsa.dev/spec/v1.2/" rel="noopener noreferrer"&gt;SLSA v1.2 specification&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Continue with the series
&lt;/h2&gt;

&lt;p&gt;The next article, &lt;a href="https://dev.to/qnbs/the-reviewer-is-not-the-gate-2na6"&gt;The Reviewer Is Not the Gate&lt;/a&gt;, turns the flagship's authority principle into repository policy: AI may advise, while trusted checks and an accountable human retain merge authority.&lt;/p&gt;

&lt;h3&gt;
  
  
  Source, attribution, and license
&lt;/h3&gt;

&lt;p&gt;This long-form feature substantially adapts and reworks material from &lt;em&gt;From Vibe Coding to Agentic Software Engineering: Toward a Star Trek Future of Building Things — Long-form Feature and Academic Companion&lt;/em&gt;, credited on its &lt;a href="https://archive.org/details/agentic_software_engineering_startrek-tng_essay_chatgpt" rel="noopener noreferrer"&gt;Internet Archive record&lt;/a&gt; to ChatGPT, and the later definitive &lt;em&gt;Make It So—But Run the Tests&lt;/em&gt;, credited on its &lt;a href="https://archive.org/details/make-it-so-but-run-the-tests" rel="noopener noreferrer"&gt;Internet Archive record&lt;/a&gt; to ChatGPT. Both records display CC BY-NC-SA 4.0. Changes include a web-first organization, refreshed empirical interpretation, independently linked primary sources, a new measurement section, and removal or qualification of unsupported forecasts. The earlier &lt;a href="https://archive.org/details/vibecodingagenticsymbiosis" rel="noopener noreferrer"&gt;&lt;em&gt;From Vibe Coding to Agentic Symbiosis&lt;/em&gt;&lt;/a&gt;, credited there to Gemini 3.1 Pro, was used only for claim quarantine; its unverified numbers were excluded. The supplied provenance identifies Gemini 3.1 Pro Deep Research; Archive.org's Creator field lists Gemini 3.1 Pro without the Deep Research qualifier. This adaptation is shared under the &lt;a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.en" rel="noopener noreferrer"&gt;Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;AI assistance was used in research synthesis and editing. A human editor remains responsible for source selection, checking claims, and publication decisions.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Release State Machines: PREPARED Is Not PUBLISHED</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 11:45:00 +0000</pubDate>
      <link>https://dev.to/qnbs/release-state-machines-prepared-is-not-published-2l3m</link>
      <guid>https://dev.to/qnbs/release-state-machines-prepared-is-not-published-2l3m</guid>
      <description>&lt;p&gt;A release is often represented by one badge: released or not released. Real release pipelines usually have more than one output, and those outputs can reach different states.&lt;/p&gt;

&lt;p&gt;WorldScript Studio’s v1.29.0 is a clear example. The signed tag exists and tag verification passed. The Docker publication succeeded and produced a GHCR image. The security audit failed. The Tauri release workflow was cancelled before a GitHub Release was created. That historical state changed with the successor: v1.29.1 is now the Latest GitHub Release. The v1.29.0 tag remains immutable and its desktop release was never published.&lt;/p&gt;

&lt;p&gt;So was v1.29.0 released? The honest answer depends on which surface you mean. A container image was published. Desktop release assets were not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model transitions, not feelings
&lt;/h3&gt;

&lt;p&gt;A useful release state machine names the transitions and the evidence needed for each:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PREPARED:&lt;/strong&gt; exact candidate, version, source, and intended outputs are recorded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TAGGED:&lt;/strong&gt; an immutable tag identifies a commit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VERIFIED:&lt;/strong&gt; required source and candidate checks have terminal results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ARTIFACT_BUILT:&lt;/strong&gt; one output exists with a digest and platform identity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QUALIFIED:&lt;/strong&gt; the exact output passed its required checks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PUBLISHED:&lt;/strong&gt; that output is available at its intended destination.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ANNOUNCED:&lt;/strong&gt; user-facing notes accurately describe what is available.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REVALIDATED:&lt;/strong&gt; later review confirms that the published pointer still resolves to the qualified bytes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These states are not synonyms. A tag can exist before every output is built. An artifact can be published while another platform remains cancelled. A release page can be absent even though a container tag is public.&lt;/p&gt;

&lt;h3&gt;
  
  
  Close the evidence state when a run ends
&lt;/h3&gt;

&lt;p&gt;When a tag-time job reaches a terminal state, the record should stop saying “pending.” For v1.29.0, the audit failed, Docker succeeded, and Tauri was cancelled. Updater assets, installers, latest.json, and a GitHub Release were not produced because publication was cancelled.&lt;/p&gt;

&lt;p&gt;That is more useful than a vague “release incomplete.” It tells the next maintainer exactly which outputs exist and which do not. It also prevents a stale PENDING label from being mistaken for an ongoing job that might still produce assets.&lt;/p&gt;

&lt;p&gt;A release record should have a separate result for each artifact class. If an image alias points to a digest, record the digest. If no desktop release exists, say so. If a job was cancelled, record who or what cancelled it and at what stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Preserve provenance across corrections
&lt;/h3&gt;

&lt;p&gt;A release recovery may create a successor version or rebuild outputs. That successor gets its own source SHA, tag, workflow runs, artifact digests, qualification, and publication records. It must not inherit PASS from the earlier attempt.&lt;/p&gt;

&lt;p&gt;The successor chronology is terminal: candidate 99a664c5 failed the fresh OSV audit and was stopped without a tag; #912 raised the dependency floors; candidate f255d767 completed qualification, was signed as v1.29.1, and reached PUBLISHED then VERIFIED after #913 proved resulting main. No result from 99a664c5 was carried forward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make the user-facing statement match the state
&lt;/h3&gt;

&lt;p&gt;Readers do not need a taxonomy for its own sake. They need to know which platform artifacts they can obtain, what was tested, and what remains unavailable. A precise release note might state that a container image exists while desktop artifacts are withheld. That is more trustworthy than either calling everything successful or hiding the work that did succeed.&lt;/p&gt;

&lt;p&gt;Treat each output as a small state machine. Then the overall release is a set of independently evidenced state machines, joined by an announcement that describes their actual outcomes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue reading
&lt;/h3&gt;

&lt;p&gt;Next: &lt;a href="https://dev.to/qnbs/a-release-protocol-must-fail-closed-too-5h65"&gt;A Release Protocol Must Fail Closed Too&lt;/a&gt; turns release-state distinctions into explicit stop conditions.&lt;/p&gt;

&lt;p&gt;Related: &lt;a href="https://dev.to/qnbs/a-release-is-more-than-a-tag-1kc"&gt;A Release Is More Than a Tag&lt;/a&gt; extends the same idea across the artifacts and publication surfaces in a release.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical extension: require evidence at every transition
&lt;/h2&gt;

&lt;p&gt;Use a release ledger instead of one overloaded “released” flag:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Minimum evidence before advancing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Candidate built&lt;/td&gt;
&lt;td&gt;source commit, workflow run, artifact identity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Candidate qualified&lt;/td&gt;
&lt;td&gt;required checks and target-specific exercise results&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tag created&lt;/td&gt;
&lt;td&gt;immutable tag target and signature verification where used&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Artifact published&lt;/td&gt;
&lt;td&gt;registry or release URL plus digest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release verified&lt;/td&gt;
&lt;td&gt;consumer-facing asset list and install or retrieval check&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each artifact channel advances independently. A container image may be present while a desktop release is cancelled; one successful publication must not promote the other channel's state. A correction also creates a new candidate identity. Preserve the failed attempt and link the successor rather than rewriting the history into a single clean green run.&lt;/p&gt;

&lt;p&gt;As a concrete later checkpoint for this project, v1.29.1 reached VERIFIED on 2026-09-30 at commit f255d767 after the first candidate was rejected and corrected. That later terminal state does not change what happened during v1.29.0 or make earlier artifacts equivalent. The &lt;a href="https://github.com/qnbs/WorldScript-Studio/releases/tag/v1.29.1" rel="noopener noreferrer"&gt;release record&lt;/a&gt; is the user-facing anchor; the &lt;a href="https://github.com/qnbs/WorldScript-Studio/pull/913" rel="noopener noreferrer"&gt;post-release truth-sync PR&lt;/a&gt; records the repository reconciliation.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>release</category>
      <category>github</category>
      <category>testing</category>
    </item>
    <item>
      <title>A Release Protocol Must Fail Closed Too</title>
      <dc:creator>qnbs</dc:creator>
      <pubDate>Thu, 01 Oct 2026 11:45:00 +0000</pubDate>
      <link>https://dev.to/qnbs/a-release-protocol-must-fail-closed-too-5h65</link>
      <guid>https://dev.to/qnbs/a-release-protocol-must-fail-closed-too-5h65</guid>
      <description>&lt;p&gt;A security check is not a gate just because it appears in the release dashboard.&lt;/p&gt;

&lt;p&gt;A gate changes what can happen when the check fails. If publication can continue independently, then the system relies on an operator noticing the red result and stopping the release. That may be a valid short-term control, but the distinction needs to be stated clearly.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happened on v1.29.0
&lt;/h3&gt;

&lt;p&gt;The v1.29.0 tag-time OSV audit failed on a development-only dependency path: joi 18.2.5 through wait-on. By then, the tag had already triggered separate publication workflows. GHCR aliases had published. The operator cancelled the Tauri workflow before it created a GitHub Release.&lt;/p&gt;

&lt;p&gt;That was a manual fail-closed action for the desktop release. It did not undo the container aliases that had already been published. The audit and publication workflows were mechanically independent, so the human response mattered.&lt;/p&gt;

&lt;p&gt;This is why the release record needs separate outcomes: the audit failed, the Docker image published, and the Tauri path was cancelled before GitHub Release creation. Calling the whole event either “blocked” or “released” hides the important ordering.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix the finding, then fix the protocol
&lt;/h3&gt;

&lt;p&gt;PR #909 upgraded joi to 18.2.9 and established an override floor of at least 18.2.6. That corrected the dependency finding in resulting main. A dependency fix addresses the known vulnerability path; it does not by itself create a future publication gate.&lt;/p&gt;

&lt;p&gt;For v1.29.1, the procedural mitigation was executed: the fresh scan stopped candidate 99a664c5 when six new development-only advisories appeared; after #912, the team froze and requalified candidate f255d767, watched its tag-time Security Audit, and completed publication and verification. This worked for that release; it does not make the workflow dependency mechanical.&lt;/p&gt;

&lt;p&gt;A later review found that rerunning the CI/CD Security Audit job also reruns dependent jobs such as GitHub Pages deployment. The current interim method recorded on #911 is a standalone security-scheduled.yml dispatch with no deploy jobs, only while origin/main equals the frozen candidate. The mechanical Tauri/GHCR dependency remains future work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Durable enforcement is a different state
&lt;/h3&gt;

&lt;p&gt;QNB-162 and GitHub issue #911 track post-release machine-enforced hardening: make Tauri and GHCR publication depend on the required security result. That would move a critical stop condition from an operator checklist into the workflow dependency graph.&lt;/p&gt;

&lt;p&gt;The distinction is not a criticism of the current recovery. Manual containment can be the right immediate response when a release is already in motion. The engineering follow-up is to decide which parts should become deterministic and make the transition only after implementation and verification.&lt;/p&gt;

&lt;p&gt;Until then, a diagram should use different shapes for the three stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Historical intervention:&lt;/strong&gt; a human cancelled the Tauri path after the failed audit, but GHCR had already published.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;v1.29.1 procedural control:&lt;/strong&gt; fresh exact-candidate scan stopped the first candidate; the remediated candidate passed and was watched through publication and verification. A rerun side effect led to a safer interim freshness procedure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Future hardening:&lt;/strong&gt; #911 remains open and proposes a workflow-level dependency; it is not current behavior.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  A gate needs an executable contract
&lt;/h3&gt;

&lt;p&gt;A useful gate states the candidate, the check, the result expected, who or what observes it, and what happens on failure. For manual steps, record the exact evidence and how the operator confirms completion. For automated steps, encode the dependency so a downstream publish job cannot start after a red result.&lt;/p&gt;

&lt;p&gt;The word “gate” should never be inferred from a green badge next to a separate workflow. It is a claim about control flow. Show the graph, show the terminal outcome, and keep the release record current.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue reading
&lt;/h3&gt;

&lt;p&gt;This closes &lt;a href="https://dev.to/qnbs/series/44719"&gt;Release Engineering &amp;amp; Testing Reality&lt;/a&gt;. Start with &lt;a href="https://dev.to/qnbs/green-build-broken-first-boot-12ap"&gt;Green Build, Broken First Boot&lt;/a&gt; for the first qualification boundary, then follow the series through candidate identity and publication state.&lt;/p&gt;

&lt;p&gt;Related: &lt;a href="https://dev.to/qnbs/a-release-is-more-than-a-tag-1kc"&gt;A Release Is More Than a Tag&lt;/a&gt; connects these states across release outputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical extension: make the gate graph enforce its claim
&lt;/h2&gt;

&lt;p&gt;A release gate is a dependency relationship, not a dashboard widget. Draw the graph from security qualification to packaging to publication, then check whether a failed required job actually blocks every publishing job. A separate workflow can publish around the gate even when the security workflow is red.&lt;/p&gt;

&lt;p&gt;Keep remediation and enforcement distinct:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fix the vulnerable or misconfigured input.&lt;/li&gt;
&lt;li&gt;Re-run qualification on the exact candidate.&lt;/li&gt;
&lt;li&gt;Preserve the failed candidate and its result.&lt;/li&gt;
&lt;li&gt;Verify the dependency graph prevents publication on a future failure.&lt;/li&gt;
&lt;li&gt;Exercise the emergency path and document its narrow scope.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For WorldScript Studio, v1.29.1 was verified after a procedural qualification and release run. As of 2026-10-01, the mechanical release-gate hardening remained tracked in &lt;a href="https://github.com/qnbs/WorldScript-Studio/issues/911" rel="noopener noreferrer"&gt;issue #911&lt;/a&gt;; the release success did not mean that automation gap had been closed. The interim security-only dispatch was chosen because rerunning the broader CI/CD workflow could also trigger a dependent Pages deployment. That is a useful warning: “rerun the failed job” can have side effects beyond the check being investigated.&lt;/p&gt;

&lt;p&gt;GitHub recommends explicit minimum workflow permissions and careful treatment of third-party actions in its &lt;a href="https://docs.github.com/en/actions/reference/security/secure-use" rel="noopener noreferrer"&gt;Actions security guidance&lt;/a&gt;. Make the gate fail closed, but keep the override observable, time-bounded, and tied to a human decision.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>security</category>
      <category>github</category>
      <category>release</category>
    </item>
  </channel>
</rss>
