<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Software-Architecture on scripting.pro</title><link>https://scripting.pro/tags/software-architecture/</link><description>Recent content in Software-Architecture on scripting.pro</description><image><title>scripting.pro</title><url>https://scripting.pro/images/og-featured.png</url><link>https://scripting.pro/images/og-featured.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 03 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://scripting.pro/tags/software-architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>The System Is Working as Designed</title><link>https://scripting.pro/posts/the-system-is-working-as-designed/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/the-system-is-working-as-designed/</guid><description>On why large organizations structurally produce technical debt, select for political behavior, and reliably defeat every attempt at reform, including Agile.</description><content:encoded><![CDATA[<p><em>On why large organizations structurally produce technical debt, select for political behavior, and reliably defeat every attempt at reform, including Agile.</em></p>
<hr>
<p>I have watched a pattern repeat itself across organizations too many times to believe it is accidental. A technically competent person does careful work, raises legitimate concerns about architectural shortcuts, pushes back on timelines that will generate problems downstream. They are right. Their concerns are documented. And they are quietly sidelined while the project proceeds, delivers on schedule, and the manager who overrode their concerns is promoted.</p>
<p>The promoted manager is not incompetent. In many cases, they are genuinely skilled at something. But skilled at what, exactly? And why does that skill, rather than technical judgment, determine who advances?</p>
<p>This article is an attempt to answer that question rigorously. The answer implicates organizational dynamics, but also the educational institutions that train managers, the governance models that structure IT investment, and the reform movements, Agile among them, that have tried and failed to change the outcome. The system is not broken; it is working exactly as its underlying structure dictates. In 2007, Robert Schaefer, writing in ACM SIGSOFT Software Engineering Notes, asked the same question in more general terms: why do large complex systems so often work against their declared goals? His answer pointed directly at organizational governance, specifically at what he termed the Authoritarian Hierarchy of Control. What follows builds on that diagnosis and extends it into the specific dynamics of IT investment, selection, and reform.</p>
<blockquote>
<p><em>Technical debt is not a failure of discipline. It is a system of incentives working exactly as designed.</em></p>
</blockquote>
<hr>
<h2 id="the-incentive-structure-that-generates-technical-debt">The Incentive Structure That Generates Technical Debt</h2>
<p>Large organizations govern IT investment through annual budget cycles and delivery metrics. A project is funded for a year, expected to deliver defined functionality by a defined date, and evaluated on whether it did. This structure imposes a specific temporal resolution on decision-making: what matters is what is visible within twelve months.</p>
<p>Architectural quality does not operate on a twelve-month horizon. The decisions that determine whether a system can be evolved cheaply in three years (modularity, decoupling, reversibility, testability) produce no visible output in the current budget cycle. By the logic of the measurement instrument, they are invisible.</p>
<p>Every technical role in a delivery team, whether developer, tech lead, or architect, is in the business of reducing the cost of being wrong. Good design does not predict the future; it ensures that when the system must evolve in ways no one anticipated, the cost of that evolution is bounded rather than catastrophic. But this value cannot be captured by a metric that closes at year end. It has no line in the budget and generates no deliverable.</p>
<p>The project manager who allocates time and money to architectural quality is making an investment whose return will appear in someone else&rsquo;s budget cycle, under someone else&rsquo;s name. The project manager who defers that investment delivers on time and on budget, and receives the recognition that comes with it. That is a sensible response to the incentive structure rather than a failure of individual judgment.</p>
<p>Schaefer named this mechanism <em>risk shifting</em>: when direct action to reduce a risk is judged too costly, the less costly tactic is to transfer that risk burden to others. If this transfer can proceed without immediate observation, the conflict it generates will simply be deferred. Annual budget cycles are, structurally, a machine for making risk shifting invisible. The cost lands in a future cycle, under a different manager, attributed to different causes.</p>
<p>Game theory offers a complementary framing. In a prisoner&rsquo;s dilemma, two actors each face a choice between cooperation, which produces the best collective outcome, and defection, which protects individual interest at collective cost. When both actors reason independently and arrive at the locally coherent choice, both defect. The problem is not irrationality but the fact that individually sensible behavior produces collectively irrational outcomes. The parallel with IT governance runs deep enough to carry predictive weight. Every project manager, every budget cycle, every delivery team faces the same calculus. When every actor optimizes for their own position, the collective result is a technology estate that grows progressively more rigid, more expensive to evolve, and less capable of supporting the business it was built to serve. Nobody made a bad decision; everyone made a good one, given the game they were playing.</p>
<hr>
<h2 id="the-cascade-from-deferral-to-dissimulation-to-manipulation">The Cascade: From Deferral to Dissimulation to Manipulation</h2>
<p>Technical debt is the first and most visible symptom of this structure. But the same logic operates at every level of the organizational hierarchy, producing a cascade of increasingly consequential behaviors.</p>
<p>At the project level, the actor defers architectural quality. This is risk shifting in its most direct form: a cost that is real but diffuse, transferred to a future that belongs to someone else.</p>
<p>As the project encounters difficulty (deferred costs begin to materialize, timelines slip, complexity compounds), the actor at the next level faces a different version of the same calculus. Delivering bad news upward is costly. It damages reputation, invites scrutiny, and moves the problem from the future into the present. Filtering that information, presenting progress in the most favorable available framing, managing perception rather than reality: this is individually sensible for exactly the same reason that deferring architectural debt is individually sensible. The cost is real but diffuse, while the benefit is immediate and personal.</p>
<p>Schaefer formalized this in what he called the Liars&rsquo; Axioms. A liar, his term for any actor who strategically manages information to protect their position, suppresses, manufactures, or denies evidence to align observers&rsquo; judgments with their own goals. The intent of the lie, he observed, may simply be to stall for time. If the delay runs long enough, the consequences will have had greater impact on the world than the uncovering of the lie. Those who discover it afterward (auditors, commissions of inquiry, historians) matter only to a small audience. The actor has long since moved on.</p>
<p>The calculus that defers architectural quality also defers information. Technical debt accumulates at the bottom of the hierarchy; informational debt accumulates at the top. The mechanism is identical, and the consequences, when they finally surface, are proportional to how long the deferral has continued.</p>
<p>This is a structural observation, not a cynical one about human nature: it describes what happens when the same incentive pattern operates at multiple levels of a hierarchy simultaneously. Each level protects its position by deferring its costs to the next. The progression from deferral to dissimulation is continuous, not discrete. There is no moment at which a sensible actor becomes a dishonest one, only a gradual drift toward behaviors that the structure rewards and away from behaviors that it penalizes.</p>
<hr>
<h2 id="what-gets-selected">What Gets Selected</h2>
<p>Organizations do not select randomly among the people available to them. Over time, through promotion decisions made by individuals operating within the incentive structure described above, they exercise a form of natural selection. The behaviors that advance are the behaviors that the structure rewards. The behaviors that are penalized (transparency, technical rigor, willingness to deliver unwelcome news) become associated with career stagnation.</p>
<p>Schaefer described this dynamic in terms of the Authoritarian Hierarchy of Control: organizations structured around command and control systematically suppress independent judgment in favor of loyalty and conformance, rewarding those who display alignment with authority over those who bring accurate but unwelcome observations. The result, he noted, is that the quality of products and services tends to be driven to the lowest level of mediocrity the market will bear, and that responsibility for poor performance will be attributed to individual contributors, never to the structure that produced it.</p>
<p>This selection process has a name for each of its outcomes. HEC Montréal, one of Quebec&rsquo;s leading business schools, administers a political skill assessment that classifies managers into five profiles: Machiavellian, Strategist, Survivor, Good Soldier, and Sacrificial Lamb. The Machiavellian profile, described as driven by a strong thirst for power, politically motivated behavior, and the belief that ends justify means, is listed as having two strengths: highly effective, and achieves objectives. Ethical risks appear as a limitation, alongside friction and mistrust. The profile is presented not as a pathology but as a high-performance option with known trade-offs.</p>
<p>At the other end of the scale, the Sacrificial Lamb, described as believing that merit is sufficient, unable to decode political dynamics, potentially becoming a victim of the system, is listed as having three strengths: integrity, authenticity, and focus on work well done. Its risks include marginalization and incomprehension of real organizational dynamics.</p>
<hr>
<h2 id="what-gets-trained">What Gets Trained</h2>
<p>HEC is not inventing the reality it describes. It is documenting what it observes in organizations, and then teaching it. HEC is not alone in this. The framing of political skill as a legitimate and measurable managerial competency has been widely adopted across business schools. What was once informal knowledge (how to handle power, manage perception, read the room) has been systematized into curriculum. By naming these profiles, measuring them, and transmitting them to the next generation of managers as legitimate knowledge about how organizations actually work, business education completes a feedback loop that Schaefer identified: the selection pressure that organizations exert is validated, codified, and taught as professional competence.</p>
<blockquote>
<p><em>The Machiavellian who advances in a large organization is not a deviation from the system. They are its product: shaped by the incentive structure, selected by promotion decisions, and trained by the curriculum.</em></p>
</blockquote>
<p>There is an irony here. Schaefer&rsquo;s 2007 paper received only three citations in the seventeen years following its publication, not because it was wrong, but because the professional and academic structures of software engineering had no established category for an argument that located the root cause of system failure in governance, power, and the suppression of independent judgment. The diagnosis arrived before the vocabulary existed to receive it. That, too, is the system working as designed.</p>
<p>There is a question this article does not pretend to resolve: does the organization produce this selection pressure, which the educational institution then documents? Or does the educational institution legitimate and amplify a pressure that would otherwise remain informal? The honest answer is that causality runs in both directions. The organization and its educational infrastructure have co-evolved into a system that is now very difficult to disturb from within.</p>
<hr>
<h2 id="why-agile-was-structurally-condemned">Why Agile Was Structurally Condemned</h2>
<p>The Agile movement emerged in the early 2000s as a direct response to the dysfunctions described above. Its founding documents, particularly the Agile Manifesto, called for transparency over performance theater, genuine collaboration over contract negotiation, and working software over comprehensive documentation. It identified, correctly, that waterfall project dynamics generated exactly the kind of rigidity and deferral that technical debt represents.</p>
<p>The adoption of Agile in large organizations over the following two decades produced a result that is by now well documented: the vocabulary was adopted; the underlying dynamics were not changed. Sprints became fixed-scope, fixed-date delivery commitments. Velocity became a production output target. Retrospectives became compliance rituals. The Agile transformation was managed by the same people operating within the same incentive structure, producing the same behaviors under a new name.</p>
<blockquote>
<p><em>Agile did not transform governance. Governance transformed Agile.</em></p>
</blockquote>
<p>The standard explanation for this failure centers on the frozen middle: middle managers whose positional authority depends on the existing governance model, who absorbed the pressure for change without transmitting it upward. This explanation is correct but incomplete.</p>
<p>The deeper explanation is that Agile, authentically practiced, requires a specific type of organizational actor. It requires transparency about progress and problems, the willingness to deliver unwelcome news early, and collaboration that is genuine rather than performed. These are the behaviors associated with the Good Soldier and the Sacrificial Lamb in the HEC taxonomy, the profiles described as loyal, competent, and appreciated for their work, but also naive, vulnerable, and easily marginalized in competitive environments.</p>
<p>The Strategist and the Machiavellian, the profiles that large organizations have systematically selected and elevated, are precisely those for whom authentic Agile practice is not a viable strategy. Transparency exposes their deferral. Early bad news undermines their narrative management. Genuine collaboration limits their control of information flows. For these actors, adopting the vocabulary of Agile while hollowing out its content is political competence applied to organizational survival, not resistance to change.</p>
<p>Schaefer anticipated this failure with what he called the Process Paradox: the more a process is commanded, the less independent judgment is permitted, and when something goes wrong (as it inevitably will), the worse the consequences. Agile, commanded from above within an authoritarian hierarchy, does not produce agility. It produces a rigid process that eliminates independent judgment while preserving the appearance of flexibility. The name changes; the structure does not.</p>
<p>Agile did not fail because it was poorly designed or poorly implemented. It failed because it was introduced into organizations that had spent decades selecting against the human dispositions it required. The frozen middle did not block Agile. The selection process that produced the frozen middle made authentic Agile adoption structurally improbable before the first sprint planning meeting.</p>
<p>The Agile coach role, now a standard position in many large organizations, crystallizes this contradiction with particular clarity. It is an officially sanctioned mandate to transform a culture that the incentive structure actively reproduces. The role signals commitment to change without requiring it. In Schaefer&rsquo;s terms, it is a display directed outward: the organization can point to its coaches as evidence of transformation while the governance model remains untouched. And it produces a specific collateral damage that rarely appears in any measurement. Developers who glimpse a different way of working, who are shown what genuine collaboration and technical quality could look like, find themselves unable to practice any of it within the real constraints of the system. The choices available to them are narrow: exit the organization, remain with a chronic frustration that compounds over time, or disengage quietly and accept the distance between what they know is possible and what the system will permit. The organization does not notice this damage, because what it measures is sprint velocity.</p>
<hr>
<h2 id="the-normalization-of-failure">The Normalization of Failure</h2>
<p>One final mechanism completes the loop and explains why the system persists without generating the corrective pressure one might expect.</p>
<p>Large IT project failure is not an occasional anomaly. The Standish Group has tracked IT project outcomes for decades; their data consistently show that only around 30% of IT projects are considered fully successful, a figure that drops further for large-scale initiatives, with roughly half of all projects challenged and nearly one in five outright cancelled or abandoned. The pattern is stable across years and geographies. Yet when a specific project fails (costs overrun, the system delivered is less capable than the system it replaced, timelines stretch beyond any defensible estimate), the failure is almost never attributed to the incentive structure that generated it. It is attributed to poor management, to vendor problems, to scope creep, to technical complexity. The postmortem identifies individuals and decisions. It does not identify the game those individuals were playing or the rules that made their decisions predictable.</p>
<p>Schaefer identified this as a structural property of hierarchical governance: the source of all faults will ultimately be whatever legitimate authority claims it is, whether or not such claims are true. Accountability flows downward to individual contributors. The structure that produced the conditions for failure is never the finding. To make it the finding would require those conducting the examination to indict what elevated them.</p>
<p>This misattribution operates at two scales simultaneously, and the two reinforce each other. At the organizational level, the postmortem blames individuals and decisions, protecting the incentive structure. But the same dynamic operates earlier, at the level of the project itself. When timelines slip, as they inevitably do when architectural shortcuts accumulate and deferred complexity begins to surface, the reading is almost always that the technical team is slow, that estimates were poor, that execution was lacking. This interpretation is structurally necessary. If the delay were attributed to its actual cause, the decisions that sacrificed quality to meet an earlier date, accountability would travel upward, toward the people who made those decisions. Attributing it to technical competence severs that causal chain cleanly. The practitioners who lived through the accumulation carry the reputational cost of a problem they did not create. They raised concerns that were overridden and worked inside constraints they did not choose. Some internalize the blame, wondering whether they could have done better, whether they should have pushed back harder, whether they lack something. The structure produces this doubt as a feature, not a side effect.</p>
<p>The system then produces a second deferral: the failed system is declared legacy (too old, too rigid, too expensive to maintain) and replaced. The replacement project is governed by the same annual budget cycle, managed by the same profiles, and evaluated by the same metrics. The cycle restarts. The debt that accumulated in the previous system is not examined as evidence of a structural problem but treated as the natural aging of technology, as entropy rather than design.</p>
<p>Software does not age. The observation is Schaefer&rsquo;s, made in passing but worth dwelling on: software stays fixed in time. What changes is the context around it: the business it serves, the expectations placed on it, the people who maintain it. When an organization declares a system legacy, it is not describing a property of the technology. It is describing the accumulated consequences of decisions that were never attributed to their real cause.</p>
<blockquote>
<p><em>A system whose failures are consistently misattributed, whose lessons are never learned, and whose replacements reproduce its conditions is not a system that is trying and failing to improve. It is a system that is successfully maintaining itself.</em></p>
</blockquote>
<hr>
<h2 id="a-final-observation">A Final Observation</h2>
<p>This analysis is not offered as a counsel of despair to the practitioners who have spent years pushing against these dynamics, advocating for better design, raising concerns that were overridden, watching careful work be undone by delivery pressure. The frustration those practitioners feel does not mean they misunderstood something. It means they understood something correctly and found themselves playing a game whose rules made their understanding a competitive disadvantage.</p>
<p>Schaefer ended his 2007 paper with a question that remains unanswered: what are the limits of the will? He was asking whether individuals operating within deeply coercive systems retain any meaningful capacity for independent judgment. The question is not rhetorical. History suggests that the levers which have actually changed systems of this kind are rarely internal. They tend to be external: competitive pressure severe enough to punish rigidity, regulatory constraint that removes certain decisions from the negotiating table, or the cumulative weight of people who refuse to play the game and vote with their feet. Departures concentrate in exactly the profiles the system needs most, the Good Soldiers and Sacrificial Lambs who carry the technical judgment the Machiavellians cannot replace. Whistleblowing, when it occurs, is almost always punished before it produces change. Smaller organizations built deliberately outside the AHoC model sometimes succeed precisely because they have not yet had time to reproduce its conditions. None of these are solutions. They are the terrain on which change, when it happens, actually occurs.</p>
<p>The technical argument for architectural quality (modularity, decoupling, reversibility) remains correct. The problem is that it is a technical argument being made in an environment where the selection pressure runs in the opposite direction, and technical correctness has never overridden incentive structure.</p>
<p>What this analysis suggests is that the relevant question is not how to make the case for better architecture more persuasively. It is a prior question: in an organization that has systematically selected for political behavior, trained its managers in its legitimacy, and structured its governance to make individual rationality and collective interest incompatible, from what position, and with what leverage, is change actually possible?</p>
<p>That question does not have a technical answer.</p>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Software Architect and Software Engineering Quality Advisor</em><br>
<em>Researcher (2005–2010): Image Processing &amp; Creative AI</em><br>
<em>Business Expert / Domain Expert (2010–2026): Software Architecture, Software Development and Quality Practices</em></p>
<hr>
<p><strong>Reference</strong></p>
<p>Schaefer, R. (2007). The Grand Theory of Everything: What Man-Made Systems Are, and Why They Fail. <em>ACM SIGSOFT Software Engineering Notes</em>, 32(4).</p>
]]></content:encoded></item><item><title>The Tipping Point</title><link>https://scripting.pro/posts/the-tipping-point/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/the-tipping-point/</guid><description>Partial AI integration in software development creates a structural instability that leads to a tipping point: a discontinuity in how organizations must configure themselves. This article examines the two stable configurations, the hierarchy of durable assets, and the organizational implications of choosing deliberately versus drifting.</description><content:encoded><![CDATA[<h1 id="the-tipping-point">The Tipping Point</h1>
<p><em>What AI Cannot Replace in Software Development, Part 3</em></p>
<hr>
<p>In a previous article in this series, I proposed a redefinition of legacy: legacy is not a property of the code itself, but a state of the relationship between the code and those expected to maintain it. A system becomes legacy the moment no one in the organization mentally inhabits what they are nonetheless expected to evolve. The problem lies less in the age of the technology than in the developer&rsquo;s lack of deep cognitive engagement with their own code.</p>
<p>This definition raises an urgent question: if generative AI produces code in place of developers, and if those developers only supervise the output without having genuinely thought through the underlying reasoning, are we creating the conditions for legacy at scale from the very first generated line?</p>
<p>The purpose of this article is to examine this question and its organizational consequences. Partial integration of AI into the development process tends to create a structural instability, one that leads logically to what I call a <em>tipping point</em>: a discontinuity in how an organization must configure itself. Getting through this transition also requires a precise understanding of which organizational assets are truly durable, and the answer is less obvious than it appears.</p>
<hr>
<h2 id="cognitive-engagement-as-a-condition-of-maintainability">Cognitive Engagement as a Condition of Maintainability</h2>
<p>When a developer writes code, they do more than produce text: they build a mental representation of the problem, its constraints, edge cases, and trade-offs. This representation lives in procedural memory and enables effective maintenance: the ability to anticipate where things will break, to understand why a decision was made, and to assess the impact of a change without simulating the entire system.</p>
<p>When a developer merely supervises AI-generated code, this mental representation does not fully form. They can read the code, validate its apparent logic, and approve a pull request, but they have not traversed the reasoning that produced it.</p>
<blockquote>
<p><em>Supervising AI-generated code without engagement in the reasoning that produces it is functionally similar to maintaining a legacy system: one understands what the code does, but not why it does it that way.</em></p>
</blockquote>
<p>I am not criticizing generative AI as such. I am describing a structural property of the situation: intellectual ownership of code is a consequence of the creation process, not of reading the result, and review cannot supply it after the fact.</p>
<hr>
<h2 id="the-tipping-point-a-structural-discontinuity">The Tipping Point: A Structural Discontinuity</h2>
<p>Organizations that integrate generative AI without changing the structure of responsibility tend to drift into an unstable intermediate state, which typically becomes visible only during the first serious incidents.</p>
<p>Developers believe they are supervising, but have progressively lost the capacity to intervene autonomously. The system keeps growing, technically modern and cognitively orphaned. In several AI-assisted transitions I have observed, the pattern is consistent: productivity is high for months, velocity metrics look excellent, confidence is strong. Then comes the first non-trivial evolution (a scaling constraint, an architectural shift, or a subtle behavioral regression), and no one can confidently explain why the system behaves as it does.</p>
<p>The problem with gradual transition is precisely that it produces this situation without anyone having made the deliberate choice to accept it. The organization bears the costs of both models without benefiting from the advantages of either.</p>
<p>The relationship between human intellectual ownership and AI integration is not linear. Below a certain threshold of engagement, maintainability tends to collapse in a way that is difficult to reverse once the accumulated gap reaches critical mass. This threshold is the tipping point. It separates two internally stable configurations from a fragile intermediate zone.</p>
<hr>
<h2 id="the-two-stable-configurations">The Two Stable Configurations</h2>
<p><strong>The Human-Author Model</strong></p>
<p>Humans remain the cognitive authors of the code. Generative AI serves as an accelerator for boilerplate, refactoring, or exploration, but the developer still traverses the reasoning. They can explain every significant decision, debug unexpected behaviors, and anticipate the consequences of changes. This model preserves long-term maintainability and integrates naturally with existing quality practices. Its main constraint is speed: AI amplifies productivity but does not replace the human traversal of reasoning.</p>
<p><strong>The Agent-Author Model</strong></p>
<p>Agents become responsible for producing the code. Humans step out of the traditional technical loop. In exchange, the organization reconfigures itself deeply: code loses its status as a durable strategic asset and becomes a temporary instantiation of behavior defined elsewhere, rewritten on demand from specifications and behavioral tests, which now form the primary reference. Classical technical debt tends to be largely replaced by a different form of accumulated cost centered on specification quality and test completeness. Architecture becomes declarative: focused on <em>what</em> the system must do, not <em>how</em>.</p>
<p>Which of these assets, then, are truly durable over time? Current agent-oriented frameworks largely leave this question unanswered, and it deserves careful examination before committing to this model.</p>
<hr>
<h2 id="the-hierarchy-of-durable-assets">The Hierarchy of Durable Assets</h2>
<h3 id="specification-drift-and-the-limits-of-natural-language-stability">Specification Drift and the Limits of Natural Language Stability</h3>
<p>Current agent-oriented frameworks tend to treat specifications as a stable abstraction layer above the model. The assumption is that you write the spec once and can reliably regenerate the system across model versions and technology changes.</p>
<p>This assumption deserves scrutiny. Practitioners already observe <em>prompt drift</em>, <em>LLM drift</em>, and <em>context drift</em>: the gradual degradation in how a specification is interpreted as models evolve. A specification that worked reliably with one model version can produce subtly different behaviors in its successor, not because the spec changed, but because the model&rsquo;s implicit understanding of its constructs has shifted. The long-term stability of a specification is coupled, implicitly, to the stability of the model that interprets it.</p>
<p>In systems meant to last years or decades, this <em>specification drift</em> becomes more than a prompt engineering inconvenience; it threatens the long-term reproducibility of the system itself. Subtle divergences can accumulate in the spaces between explicit requirements, even when tests continue to pass on covered behaviors. Current frameworks do not yet formally manage this coupling.</p>
<h3 id="the-asset-hierarchy">The Asset Hierarchy</h3>
<p>This leads to a clear hierarchy of durability:</p>
<ul>
<li><strong>Code</strong> is ephemeral by design, the least durable asset. It is regenerated, not evolved.</li>
<li><strong>Specifications</strong> are semi-stable. More durable than code, but subject to semantic drift relative to evolving models. They require active, periodic re-validation.</li>
<li><strong>Behavioral tests</strong> constitute the most stable anchor. A well-designed test yields a binary, objective verdict (it passes or it fails), independent of any model&rsquo;s interpretation of intent.</li>
</ul>
<p>However, the durability of tests ultimately rests on the quality of the human oracle that defines them. A poorly conceived test can protect incorrect behavior as reliably as a good one protects the right one. This brings us back directly to the oracle problem examined in the first article of this series: tests are only as strong as the human reasoning behind them.</p>
<blockquote>
<p><em>In the agent-author model, the true organizational anchor is the behavioral test suite, but only insofar as it crystallizes genuine human understanding of expected behavior. Tests are the formal record of the oracle&rsquo;s judgment, not a substitute for it.</em></p>
</blockquote>
<h3 id="quality-assurance-as-a-foundational-discipline">Quality Assurance as a Foundational Discipline</h3>
<p>This inversion is structural. In traditional development, QA is positioned as downstream validation. In the agent-author model, defining, maintaining, and evolving behavioral tests becomes the first step in the process, and the most consequential one.</p>
<p>The quality engineer who designs solid behavioral test suites is no longer in a support role. They steward the behavioral knowledge that makes reliable system regeneration possible across time, model versions, and technology generations. QA shifts from a verification function to a core strategic competency.</p>
<hr>
<h2 id="the-human-role-in-the-agent-author-model">The Human Role in the Agent-Author Model</h2>
<p>Agents operate within a bounded context, a necessary reduction of reality that always implies information loss. The real world is structurally larger than any context an agent can receive: regulatory constraints, internal political dynamics, implicit contractual commitments, strategic directions, stakeholder relationships. None of this is fully visible to a system operating within a defined context.</p>
<p>A concrete example: agents might correctly choose a technically superior tool within their context, yet overlook a token cost ten times higher, an unevaluated vendor dependency, or a strategic direction not yet formally communicated. These elements simply were not in their context.</p>
<p>The human role is therefore not to supervise code, but to maintain alignment between the space of agents and the real world that will never be entirely captured in a context. It is a <em>translation role</em>: transposing the constraints, objectives, and values of the real world into clear intentions for systems that operate within bounded spaces. Humans retain responsibility for the <em>what</em> and the <em>why</em>. Agents manage the <em>how</em>.</p>
<p>In this model, IT professionals do not disappear; they migrate. Their expertise moves from writing code to mastering specification quality, behavioral verification, and domain knowledge. The longstanding comprehension gap between business and IT dissolves here through a deeper reconfiguration of the IT role itself.</p>
<hr>
<h2 id="a-historical-precedent-the-transition-to-deep-learning">A Historical Precedent: The Transition to Deep Learning</h2>
<p>The shift I describe has a direct parallel in AI&rsquo;s own history. For several decades, symbolic expert systems emphasized full interpretability: every rule was explicit and traceable. The transition to deep learning abandoned this property. Neural networks produce impressive results through mechanisms their creators cannot fully explain. The debate was settled by results rather than philosophy: deep learning produced capabilities that symbolic systems could not reach.</p>
<blockquote>
<p><em>AI became what it is today because the scientific community collectively accepted abandoning internal interpretability as a necessary condition of a system&rsquo;s validity. Observable performance replaced transparency of mechanism as the primary evaluation criterion.</em></p>
</blockquote>
<p>The parallel with the tipping point is direct. In the agent-author model, one abandons code comprehensibility as a condition of maintainability. It is replaced by the quality of specifications and, above all, the completeness of behavioral tests. Observable performance replaces internal understanding.</p>
<p>This precedent does not prove the tipping point is inevitable everywhere, but it shows that abandoning one form of comprehensibility for another form of validation can produce significant gains, and that resisting the shift can carry a competitive cost.</p>
<hr>
<h2 id="the-organizational-question-the-greenfield-model">The Organizational Question: The Greenfield Model</h2>
<p>For large organizations with decades of technological history, transforming the existing base is rarely feasible in the short term. Legacy systems (those for which intellectual ownership has already been lost) do not lend themselves to migration toward the agent-author model without massive prior investment in specification.</p>
<p>The coherent pattern is the <em>greenfield model</em>: creating a new entity, such as a division, a subsidiary, or a distinct organization, configured according to the agent-author model from day one. This entity develops the competencies in specification, declarative architecture, and behavioral testing while the existing organization continues under the human-author model.</p>
<p>This pattern is not without precedent. Large financial institutions have used it for digital transformation initiatives. Cooperatives have created subsidiaries to explore new business models without risking their operational core. When transformation requires a reconfiguration too deep to be achieved from within, one creates something new alongside.</p>
<p>The resulting coexistence, with units in human-author mode managing the existing systems and units in agent-author mode building the future, is stable when the boundary between the two models is explicit and deliberate. The danger lies in blurring the line between them, not in having two models.</p>
<hr>
<h2 id="implications-for-practitioners-and-decision-makers">Implications for Practitioners and Decision-Makers</h2>
<p>Three practical observations emerge:</p>
<p><strong>First</strong>, diagnose honestly. The relevant question is not &ldquo;what percentage of our code is AI-generated?&rdquo; but &ldquo;can our developers intervene autonomously and confidently in the code that exists?&rdquo; An uncertain answer signals that the organization is likely already in the unstable intermediate zone, without having made the deliberate choice to be there.</p>
<p><strong>Second</strong>, choose deliberately. Maintaining the human-author model requires frameworks that preserve developers&rsquo; traversal of reasoning: not excluding AI, but ensuring they remain genuine authors of what they maintain. Moving to the agent-author model demands significant prior investment in specification quality and behavioral tests <em>before</em> the transition, not after.</p>
<p><strong>Third</strong>, protect the right asset. Resist the temptation to treat specifications as the primary investment. The behavioral test suite, grounded in rigorous human judgment, is the more stable and strategically critical anchor. Specifications communicate intent to agents; tests verify that the intent was correctly understood. Only the latter survives model evolution without active re-validation.</p>
<p>The intermediate zone, where humans supervise code they have not genuinely inhabited without strong specifications and tests, is a trap rather than a transitional state. It is precisely where tomorrow&rsquo;s legacy forms, at the accelerated speed of generative AI.</p>
<hr>
<p>In the previous article in this series, I argued that the capacity to judge the correctness of a result is an irreplaceably human competency. Machines can evaluate outputs; what they cannot do is define what constitutes a correct output, because that requires an understanding of the real world that exceeds any formalizable context.</p>
<p>The tipping point does not contradict this thesis. It extends it upward. In the agent-author model, humans no longer judge the correctness of code. They define the behavioral tests that encode what correctness means, and they translate the real-world constraints that no bounded context will ever fully capture. The oracle does not disappear: it moves upstream and becomes the organization&rsquo;s most critical competency.</p>
<p>AI is already transforming software development.<br>
The question is whether your organization will deliberately choose its tipping point, or simply drift into one without realizing what it has surrendered.</p>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Organizational Engineering for the AI Era<br>
Researcher (2005–2010): Image Processing &amp; Creative AI<br>
Business Expert / Domain Expert (2010-2026): Software Architecture, Software Development and Quality Practices</em></p>
<p><em>Series: <a href="/series/what-ai-cannot-replace-in-software-development/">What AI Cannot Replace in Software Development</a></em></p>
]]></content:encoded></item><item><title>Memory, Speed, and Understanding: The Cognitive Division Between Developer and AI</title><link>https://scripting.pro/posts/the-cognitive-division/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/the-cognitive-division/</guid><description>What the developer must retain, what can legitimately be delegated, and why confusing the two leads to the erosion of knowledge.</description><content:encoded><![CDATA[<p><em>What AI Cannot Replace in Software Development, Part 2</em><br>
<em>What the developer must retain, what can legitimately be delegated, and why confusing the two leads to the erosion of knowledge.</em></p>
<hr>
<h2 id="an-operational-distinction">An Operational Distinction</h2>
<p>I have spent a significant part of my career working with organizations whose human foundation is unstable: high turnover, frequent reassignments, temporary teams assembled for a project and dissolved at its close. In these organizations, something specific happens to software systems over time. The knowledge of why the code is the way it is gradually disappears.</p>
<p>It is most visible with legacy systems. Take VB6 applications, COBOL modules, early Java codebases: the developers who built them have moved on, retired, or simply forgotten. What remains is the code itself, and a thin layer of documentation that rarely captures the decisions and constraints that shaped it. New developers inherit a system they can run but not fully understand.</p>
<p>I had assumed this was a problem of time, in which knowledge erodes because the people who held it leave. Then I started observing something different in teams using AI coding assistants intensively. The developers were still there, yet the knowledge was still eroding. The mechanism was disengagement rather than departure.</p>
<p>AI creates distance through engagement rather than through time, and that distinction changes how we should think about what developers must retain.</p>
<hr>
<h2 id="the-structural-advantages-of-ai-memory-and-computational-speed">The Structural Advantages of AI: Memory and Computational Speed</h2>
<p>AI has two advantages that do not depend on the quality of the model or its version: near-unlimited memory and processing speed that vastly exceeds human cognition.</p>
<p>Memory first. A large language model has been trained on billions of lines of code, millions of technical discussions, years of documentation. It can instantly retrieve the exact syntax of a rarely used API, the correct pattern for an obscure edge case, the exhaustive list of parameters for a given function. No developer, however experienced, can compete on this terrain.</p>
<p>Speed next. AI accomplishes in seconds what would take hours: generating boilerplate, converting an algorithm from one language to another, reformatting a data structure, producing variants. This is a real, measurable advantage, and it is not going away.</p>
<p>These two advantages are what they are: memory and performance, not judgment.</p>
<hr>
<h2 id="what-the-developer-must-retain-causal-understanding">What the Developer Must Retain: Causal Understanding</h2>
<p>The boundary between what AI does well and what it cannot do is more precise than a split between memory and reasoning in the abstract sense. It runs between pattern recognition and causal understanding.</p>
<p>An experienced developer who identifies a race condition in multithreaded code does more than recognize a familiar pattern. They understand why that pattern is problematic in this specific context: which timing constraint creates the risk, which property of the system makes the bug intermittent, which fix will resolve the problem without creating another.</p>
<p>AI can recognize the pattern. It does not possess the causal understanding that allows one to evaluate whether that recognition is relevant in this context. This understanding of the system, the domain, and the real constraints is what the developer must retain.</p>
<p>The concern has empirical support. A randomized controlled trial examining how AI coding assistance affects skill development found that developers using AI assistance scored 17 percentage points lower on comprehension and debugging tests than those coding manually (50% versus 67% on average). The contrast was even sharper by usage pattern: developers who delegated code generation to AI scored below 40%, while those who used AI for conceptual inquiry while coding independently scored 65% or higher. The engagement pattern mattered more than the tool itself.</p>
<p>This includes, as discussed in the first article of this series, the definition of expected behaviors and the design of tests. These activities call for judgment about what the system must do in the real world, not memorization.</p>
<hr>
<h2 id="knowledge-erosion-an-underestimated-organizational-risk">Knowledge Erosion: An Underestimated Organizational Risk</h2>
<p>When a developer delegates to AI not only memory and speed, but also understanding, a silent phenomenon takes hold: knowledge erosion.</p>
<p>The traditional form of this erosion is familiar. Developers leave, and with them goes the understanding of why the system is structured the way it is (the decisions, constraints, and trade-offs that shaped it). Call it a distance of time: the gap between the people who understood the system and those who now maintain it.</p>
<p>What AI introduces is structurally different. The developers are still there, but their engagement with the code has diminished. The cognitive effort of reading it, holding its structure in mind, and reasoning about its consequences no longer happens. They generate, accept, and move on, and the knowledge never forms.</p>
<p>This is a distance of engagement, and it is more insidious than the distance of time because it is invisible. The team is stable, the velocity metrics are green, the system runs. Yet the understanding that would allow someone to reason confidently about changing it has quietly failed to accumulate: anticipating the consequences of a modification, recognizing a subtle regression, formulating a test without looking at the code.</p>
<p>Teams using coding assistants intensively report that developers increasingly struggle to explain code they have recently written themselves. Understanding atrophies from lack of exercise, and a developer who does not fully understand their own system can no longer evaluate its quality. This closes the loop with the testing problem from the first article. Such developers can no longer verify that the system does what it should. They may not have lost sight of the intent, but they no longer understand the code well enough to reason about whether it delivers it.</p>
<hr>
<h2 id="the-optimal-division-of-labor">The Optimal Division of Labor</h2>
<p>The right question is therefore not &ldquo;should we use AI?&rdquo; but &ldquo;for what should we use it?&rdquo;</p>
<p><strong>AI as a memory extension:</strong> syntax, APIs, known patterns, mechanical conversions, boilerplate. The developer formulates the request, evaluates the result, decides whether to integrate it. AI accelerates access to what they already know how to look for.</p>
<p><strong>The developer as guardian of understanding:</strong> architecture, expected behaviors, edge cases, domain constraints, tests, decisions that commit the future of the system. These activities are not delegated. AI may well produce something that resembles them, but their value lies precisely in the human judgment that produces them.</p>
<p>This division is a stable structure rather than a temporary limitation, grounded in what causal understanding requires: lived experience of the system, knowledge of the domain, and accountability for the outcome.</p>
<hr>
<h2 id="implications-for-organizations-and-training">Implications for Organizations and Training</h2>
<p>This analysis has direct consequences for how organizations train their developers and evaluate the value of AI.</p>
<p>On training: the goal should not be to teach developers to use AI, but to ensure that AI use does not replace the development of understanding. Practices that require reading code, manual debugging, and peer review, precisely those that delivery pressure tends to eliminate, become more important.</p>
<p>On value assessment: the usual metrics (lines of code produced, delivery speed, test coverage rates) do not capture knowledge erosion. An organization can see its metrics improve while its capacity to master its own system degrades. The indicators that matter are harder to measure: a developer&rsquo;s ability to explain why an architectural decision was made, to recognize a subtle regression without running the tests, or to reason confidently about the consequences of a change they have not yet made.</p>
<p>AI does not save time; it changes the nature of work by shifting value toward what the machine cannot do. Organizations that understand this invest in human understanding. Those that do not let it atrophy without even noticing.</p>
<p>Legacy systems are already showing us what a system looks like when its knowledge has disappeared. The question is whether we are building the legacy systems of 2035 right now. If the specifications and tests that protect expected behavior are themselves produced by developers who no longer fully understand the system, the circle closes on itself, and the erosion spreads beyond the code to the knowledge that was supposed to protect it.</p>
<hr>
<blockquote>
<p>The distance of engagement is a choice, until it isn&rsquo;t.</p>
</blockquote>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Software Architect and Software Engineering Quality Advisor</em><br>
<em>Series: <a href="/series/what-ai-cannot-replace-in-software-development/">What AI Cannot Replace in Software Development</a></em></p>
]]></content:encoded></item><item><title>Unit Testing and Artificial Intelligence: The Oracle Problem</title><link>https://scripting.pro/posts/the-oracle-problem/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/the-oracle-problem/</guid><description>A perspective on the structural limits of automated test generation, and what they reveal about the nature of work in software engineering.</description><content:encoded><![CDATA[<p><em>What AI Cannot Replace in Software Development, Part 1</em><br>
<em>A perspective on the structural limits of automated test generation, and what they reveal about the nature of work in software engineering.</em></p>
<hr>
<h2 id="the-problem-nobody-names">The Problem Nobody Names</h2>
<p>A few years ago, I reviewed a software development contract between an organization and a vendor. The terms were standard: a fixed delivery date, a penalty clause for late delivery, and an obligation to maintain 80% code coverage. The intent was twofold. It would protect the organization from negligence, and guard against the kind of deliberate opportunism that governance frameworks exist precisely to prevent.</p>
<p>When the project fell behind schedule, the vendor found a way to satisfy the coverage requirement without slowing down: they had the AI generate unit tests after the developers had written the code. The coverage metric turned green, the delivery date was met, and the penalty was avoided.</p>
<p>Then came UAT, and the acceptance phase surfaced problem after problem. The tests had protected nothing, because they had been written to describe what the code did rather than what the system was supposed to do.</p>
<p>The contract had specified a metric, and the metric had been satisfied. The organization had paid, contractually and technically, for a test suite that institutionalized its own blind spots.</p>
<p>I am often asked whether it is a good idea to let AI generate unit tests. That experience is part of my answer. The complete answer is more interesting, because it touches on the nature of testing, the source of truth in a software system, and what AI actually changes in the work of a developer.</p>
<hr>
<h2 id="the-test-oracle-problem-what-research-already-knows">The Test Oracle Problem: What Research Already Knows</h2>
<p>In the software engineering literature, the problem has a precise name: the test oracle problem. It designates the central challenge of any automated test generation. How do you automatically distinguish correct behavior from incorrect behavior?</p>
<p>Automated generation tools, including those based on large language models, produce what are called regression oracles: tests that capture what the code does today, not what it should do.</p>
<p>When you ask AI to generate tests from source code, you invert the causality of testing. The test becomes a mirror of the implementation, and if the implementation contains a bug, the test will capture it in order to protect it rather than flag it. Beyond introducing a bug into the system, you put in place an infrastructure that resists its correction.</p>
<p>Alan Turing demonstrated formally that one can never prove a program is free of all bugs. This is a consequence of undecidability: no general procedure can determine whether a program behaves correctly in all cases. In practice, this means there will always be incorrect behaviors the code produces without anyone having intended them. When AI takes the code as its source of truth, it freezes these invisible behaviors at industrial scale.</p>
<p>The test oracle problem is not new; what AI changes is its scale. A developer writing tests manually is constrained by the time it takes. An AI generating tests from code can institutionalize incorrect behavior at industrial speed, producing in seconds a test suite that would have taken days to write and that is wrong in exactly the same way throughout.</p>
<hr>
<h2 id="what-kent-beck-understood-and-what-automated-generation-ignores">What Kent Beck Understood, and What Automated Generation Ignores</h2>
<p>Kent Beck, in his Test-Driven Development philosophy, establishes a distinction that remains underappreciated: a test must speak to behavior, not implementation. Behavior is the very reason the code needs to exist. Unlike code, it is stable: it survives refactorings, technology changes, and complete rewrites.</p>
<p>A behavior-based test is a living document of the system&rsquo;s intent. Future developers will refer to it to understand what the system must do, as opposed to what it happens to do today.</p>
<p>A test generated from code lies about that intent, documenting the accident rather than the design.</p>
<p>This has an organizational consequence the technical literature does not make explicit. An untested bug can be discovered and fixed freely. A bug protected by a test becomes a norm. Any attempt to correct it will cause the test to fail, creating institutional pressure not to fix it. At that point the problem is one of governance as much as of technique.</p>
<blockquote>
<p>A test generated from code does not protect against bugs. It protects against change, including the change that would fix the bug.</p>
</blockquote>
<hr>
<h2 id="the-limits-of-specifications-as-a-substitute">The Limits of Specifications as a Substitute</h2>
<p>One might think the problem is solved by asking AI to generate tests from specifications rather than from code. This is a direction academic research is actively exploring, enriching prompts with documentation, developer comments, and semantic context. It is better, but it is not enough.</p>
<p>A specification is always incomplete. Consider a typical example: a spec describes how a search feature should return results ranked by relevance. It says nothing about what happens when two users submit the same query simultaneously, or how the system should behave when the underlying index is being updated, or what &ldquo;relevance&rdquo; means when the user&rsquo;s implicit intent differs from their explicit query. No negligent author forgot these edge cases. They belong to the class of conditions that only become visible when the system meets real users in a real environment.</p>
<p>Human judgment detects these gaps naturally, by confronting the spec with lived experience of how systems fail, how users actually behave, and what the production environment will impose. AI generates tests that are consistent with what is written, without the ability to signal what is missing.</p>
<p>A better model will not remove this limitation, because it is structural rather than temporary: understanding the real world, with its complexity, ambiguity, and unspoken assumptions, remains a capability current systems do not possess.</p>
<hr>
<h2 id="the-real-asset-of-a-software-organization">The Real Asset of a Software Organization</h2>
<p>In a world where AI generates code, the real asset of an organization becomes its specifications and its tests.</p>
<p>The code itself will be rewritten, migrated, replaced. What endures is the knowledge of expected behavior, captured by humans who understand the problem in its full complexity.</p>
<p>This conclusion does not appear in the technical literature or in analyst reports, which measure the value of AI in terms of volume produced. It is a thesis about the nature of a software organization&rsquo;s intellectual asset, and it radically changes what is worth investing in.</p>
<p>Organizations that have understood this invest in the quality of their specifications and in the human rigor of their tests. Those that delegate both to AI, working from existing code, leave their technical debt in place while making it harder to see and harder to correct.</p>
<p>The question of what the developer must retain, and what can legitimately be delegated, extends beyond the problem of tests alone. It touches on the cognitive division between human and machine, which is the subject of the next article in this series.</p>
<hr>
<blockquote>
<p>If the real asset of a software organization is not its code but its understanding of expected behavior, who in your organization is responsible for building and protecting that understanding? And what happens to it when the pressure to deliver is high enough?</p>
</blockquote>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Software Architect and Software Engineering Quality Advisor</em><br>
<em>Series: <a href="/series/what-ai-cannot-replace-in-software-development/">What AI Cannot Replace in Software Development</a></em></p>
]]></content:encoded></item><item><title>Legacy Is Not a Property of Code</title><link>https://scripting.pro/posts/legacy-is-not-a-property-of-code/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/legacy-is-not-a-property-of-code/</guid><description>Legacy code is not about age, language, or missing tests. It is the state of a system whose meaningful relationship with its human maintainers has been broken.</description><content:encoded><![CDATA[<p><em>A sociotechnical perspective on what makes code legacy, and what actually keeps it alive.</em></p>
<hr>
<p>In the organization where I work, there is a mainframe COBOL system that has been running at the core of operations for decades. By every conventional definition, it should be legacy: old language, old architecture, a technology that most developers under forty have never touched.</p>
<p>It is not legacy. The team responsible for it is among the most mature and capable in the organization. They understand every decision embedded in that system: the constraints that shaped it, the business rules it encodes, the edge cases it handles. They can explain why a specific field is structured a certain way, what regulatory requirement drove a particular branching condition, and exactly what would happen downstream if you changed it. There is no question about the system they cannot answer.</p>
<p>Contrast that with a microservices architecture I reviewed at another organization. It had been built two years prior on a modern stack, with 85% test coverage and a full CI/CD pipeline. The team that built it had since been reorganized. No one could explain why the service boundaries had been drawn that way. Modifying anything felt like defusing a bomb. That system was legacy from the inside out, despite being less than two years old.</p>
<hr>
<p>Michael Feathers defined legacy code as code without tests. The definition is pragmatic and useful, since tests reduce the uncertainty of change, but it is incomplete.</p>
<p>Tests are not the cause of human engagement with code. They are a partial substitute for its erosion.</p>
<p>When a team genuinely understands a system (its decisions, its constraints, its intended behaviors), tests are almost redundant as a knowledge preservation mechanism. When that understanding has eroded, tests become the last line of defense against the unknown. They matter enormously in that role. But their presence does not mean the understanding is there.</p>
<hr>
<p>Legacy is not a property of the code. It is the state of the relationship between the code and the people responsible for it.</p>
<p>A system becomes legacy at the moment when no one can confidently answer: <em>why does it work this way?</em> Not <em>how</em>, since any developer can read code, but <em>why</em>: the reasoning, the trade-offs, the domain constraints that shaped the implementation. When that knowledge is gone, whether through team turnover, disengagement, or the gradual accumulation of changes nobody fully understood, the system has crossed the threshold.</p>
<p>This distinction matters because it changes what the problem actually is. If legacy is a technical property, the solution is technical: rewrite, refactor, add tests, modernize the stack. If legacy is a relational property (a broken link between a system and its human maintainers), then the solution requires restoring that link. Sometimes that means tests. More often it means something harder: rebuilding the shared understanding of what the system is supposed to do, and why.</p>
<hr>
<p>Tests, documentation, and architecture diagrams are mechanisms for transmitting intent across time and team boundaries. They matter, but they are proxies for something more fundamental: the capacity of a human being to understand a system well enough to change it with confidence.</p>
<p>As long as that capacity exists, the software is alive, regardless of its age, its language, or its test coverage.</p>
<p>The moment it disappears, the system becomes legacy. And no amount of refactoring will fix that without first addressing the human dimension.</p>
<hr>
<p><em>This is the foundation on which the rest of this series is built. The next article takes up the question that follows: what happens to that human capacity when AI generates the code?</em></p>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Software Architect and Software Engineering Quality Advisor</em><br>
<em>Series: <a href="/series/what-ai-cannot-replace-in-software-development/">What AI Cannot Replace in Software Development</a></em></p>
]]></content:encoded></item><item><title>Processes Are Becoming Legacy Systems: Why AI Demands a New Organizational Architecture</title><link>https://scripting.pro/posts/processes-becoming-legacy-systems/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/processes-becoming-legacy-systems/</guid><description>AI is an organizational architecture disruption as much as a technological one. Why processes are becoming legacy systems, and what principle-driven governance looks like in practice.</description><content:encoded><![CDATA[<p><em>Part IV of a series on rethinking technology governance foundations, and a pivot toward what comes next</em></p>
<hr>
<p>The first three articles in this series examined specific symptoms: the instability of the People-Process-Tools model under high human variability, the strategic liability of tool positioning in a fast-moving AI market, and the asymmetric risk that regulated organizations are structurally failing to measure. This fourth article steps back to name the underlying condition, the diagnosis from which those symptoms follow.</p>
<blockquote>
<p>AI is not just a technological disruption. It is an organizational architecture disruption.</p>
</blockquote>
<hr>
<h2 id="a-mismatch-that-went-unnoticed-until-now">A Mismatch That Went Unnoticed Until Now</h2>
<p>For most of the industrial and information age, there was a comfortable relationship between the pace of technological change and the pace of organizational adaptation. Technology evolved, but slowly enough that organizations could absorb each shift, stabilize their processes around it, and build institutional knowledge before the next wave arrived. The lag between technological possibility and organizational practice was an inconvenience, not a structural threat.</p>
<p>That relationship has inverted. For the first time in the history of organized work, the speed of technological evolution is structurally outpacing the speed of organizational adaptation. Rather than a temporary disruption caused by one particularly fast technology cycle, this is a change of regime: a permanent shift in the relative velocities of technological change and organizational response.</p>
<p>The evidence is visible in every domain. Organizations complete a tool evaluation cycle and find the market has already moved. They design a training program for a capability that AI has partially automated by the time the program launches. They build processes around a set of constraints that are redefined by regulatory guidance six months later. The gap is widening rather than closing, and the organizational models built for a slower world are showing the strain.</p>
<hr>
<h2 id="why-processes-were-the-right-answer-and-what-they-assumed">Why Processes Were the Right Answer, and What They Assumed</h2>
<p>Consider what processes actually are, and why they represented such a powerful organizational technology for so long. Beyond being a list of steps, a process is an encoded solution to a recurring problem, a crystallization of organizational learning into a repeatable, transferable, auditable form. When an organization documents a process, it is converting tacit knowledge into institutional memory, individual judgment into scalable behavior.</p>
<p>This is genuinely valuable, and it rests on three assumptions that held for most of the twentieth century and well into the twenty-first: that the problem being solved is sufficiently stable to justify encoding, that the conditions under which the process operates will remain predictable enough for the steps to stay valid, and that repeatability is itself a source of value (doing the same thing reliably, at scale, is better than improvising every time).</p>
<p>AI attacks all three assumptions simultaneously. It renders stable problems unstable by continuously shifting what is technically possible and economically rational. It introduces permanent uncertainty into operating conditions. And it transforms repeatability from an asset into a fragility: the ability to execute the same steps reliably becomes a liability when those steps are precisely what needs to change.</p>
<p>Processes are not so much wrong as misaligned, optimized for a world that is receding faster than most organizations have recognized.</p>
<hr>
<h2 id="processes-are-becoming-legacy-systems">Processes Are Becoming Legacy Systems</h2>
<p>In technology, we use the term &rsquo;legacy system&rsquo; to describe something specific: not a system that is broken, but a system that was built for a set of constraints that no longer match the environment in which it now operates. A legacy system can be technically functional, even well-maintained. What makes it legacy is the growing gap between its underlying assumptions and current reality.</p>
<p>This is precisely the condition of process-driven organizational architectures in the face of AI-driven technological turbulence. The processes themselves may be executing correctly. The people following them may be doing so diligently. The problem is architectural. The way the organization governs work (through predefined steps, stable roles, documented procedures, sequential approvals) was designed for a world of slower change, and that world is no longer the operating environment.</p>
<p>The recognition is uncomfortable because process-driven governance is deeply embedded in how organizations understand accountability, compliance, and quality. Audits verify process adherence. Performance frameworks reward process execution. Regulatory frameworks often mandate specific processes. Saying that processes are becoming legacy systems does not mean that accountability, compliance, and quality no longer matter. It means that the mechanism through which they have been achieved is reaching the limits of its fitness for purpose.</p>
<hr>
<h2 id="principle-driven-systems-as-the-architectural-response">Principle-Driven Systems as the Architectural Response</h2>
<p>If processes assume stability, principles assume change. This is the essential distinction, and it points toward a different architecture for organizational governance.</p>
<p>A principle defines what must be true: the quality threshold that cannot be compromised, the constraint that is non-negotiable, the outcome that must be achieved. It does not prescribe how. It governs by results rather than by steps. Teams operating under a principle-driven system follow guardrails and pursue defined objectives, but they adapt their methods continuously as the environment evolves, while the principle itself stays stable.</p>
<p>This is not a novel idea in theory. Agile movements, outcome-based management, and mission-command doctrine in military organizations have all pointed in this direction. What is new is the urgency and the mechanism. The urgency comes from the acceleration of technological change. The mechanism comes from agentic AI architectures: systems that are natively coupled to objectives and constraints rather than to specific tools or procedures, and that can adapt to changing operating conditions without requiring the governance layer to be redesigned every time the tooling shifts.</p>
<p>Agentic architectures are not simply a more efficient way to execute processes. They are an architectural alternative to them, embedding adaptability at the level of the system itself rather than relying on human judgment to compensate for procedural rigidity.</p>
<p>Consider a concrete illustration. A logistics team operating under a process-driven model has a documented approval workflow for any change to its supply chain routing tools, a cycle that takes weeks and requires sign-off from architecture, security, and procurement. When a new AI-powered routing tool becomes available, the process triggers in full, regardless of how minor the change. Under a principle-driven model, the governing constraint is different: <em>&ldquo;all routing decisions must maintain delivery reliability above X%, cost variance below Y%, and full auditability.&rdquo;</em> An agent operating under those principles can evaluate and adopt a new routing tool autonomously, because what is being governed is the outcome rather than the mechanism. The principle holds, and the approval cycle dissolves.</p>
<p>The shift from process-driven to principle-driven governance is therefore primarily an architectural decision rather than a technology one. It concerns where stability should live in an organization. In a world of permanent technological turbulence, the answer is that stability must live in principles and outcomes, not in procedures and tools.</p>
<hr>
<h2 id="organizations-must-be-engineered-for-technological-turbulence">Organizations Must Be Engineered for Technological Turbulence</h2>
<p>None of this argues for improvisation, or for abandoning the rigor that processes have historically provided. The argument is that rigor itself must be rearchitected. The question to settle is what to govern and at what level of abstraction, not whether to govern.</p>
<p>The organizations that handle the coming decade well will not be the ones that execute their current processes better, but the ones that have made a deliberate architectural choice: to invest in stable, well-defined principles rather than brittle, step-by-step procedures; to build agentic systems capable of working with continuously shifting tooling; and to develop adaptive governance frameworks that measure outcomes rather than adherence.</p>
<p>Engineering an organization for technological turbulence means building a particular kind of resilience. Bouncing back from disruption is one form of it; being structurally designed to absorb continuous change without losing coherence is another. The distinction matters, because the first is a recovery capability and the second is an architectural property.</p>
<p>The organizations that possess this property will not be immune to the challenges of an AI-accelerated environment. But they will face those challenges with a structural advantage: the ability to adapt their methods while holding their principles constant, and to absorb technological change as a normal operating condition rather than as an exceptional disruption.</p>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Software Architect and Software Engineering Quality Advisor</em><br>
<em>Series: <a href="/series/organizational-engineering-for-the-ai-era/">Organizational Engineering for the AI Era</a></em></p>
]]></content:encoded></item><item><title>Beyond the People-Process-Tools Model: Toward Resilient Organizational Engineering</title><link>https://scripting.pro/posts/beyond-people-process-tools/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/beyond-people-process-tools/</guid><description>Rethinking the foundations of technology governance in an era of structural human variability: why the PPT model needs to be rebalanced, and what replaces it.</description><content:encoded><![CDATA[<p><em>Rethinking the foundations of technology governance in an era of structural human variability</em></p>
<hr>
<h2 id="a-time-tested-model-confronting-an-unprecedented-context">A Time-Tested Model Confronting an Unprecedented Context</h2>
<p>The People, Process, Tools (PPT) model has shaped technology governance for decades. Its founding premise rests on the stability of human capital: skilled individuals, carrying a shared culture, apply defined processes using adapted tools. In its mature form, this model has always recognized that processes and tools encode organizational knowledge, with the human dimension serving as the activation vector.</p>
<p>But in an environment defined by high resource turnover, systematic reliance on external consultants, and the proliferation of teams assembled for short-term needs, that premise of stability no longer holds. The PPT model remains theoretically valid. What is in question is whether it can operate effectively when its human pillar is structurally unstable.</p>
<hr>
<h2 id="the-people-pillar-as-an-unstable-variable">The &lsquo;People&rsquo; Pillar as an Unstable Variable</h2>
<p>When resource turnover is high, organizational knowledge disperses instead of accumulating. Every departure takes with it decision-making context, tacit practices, and domain understanding that formal artifacts only partially capture. Internal culture loses its coherence when a significant proportion of contributors operates within a temporary horizon. Practices imported from outside, heterogeneous by nature, complicate governance and introduce variability that neither documented processes nor available tools can adequately contain.</p>
<p>Under these conditions, structuring quality around a constantly renewing pool of human expertise exposes the organization to real risks: operational discontinuity, practice drift, and erosion of technological maturity. What this calls for is a shift in ratio, not an inversion of the model. The human factor remains central, but it can no longer serve as the sole foundation.</p>
<hr>
<h2 id="repositioning-the-foundation-processes-tools-and-platform-engineering">Repositioning the Foundation: Processes, Tools, and Platform Engineering</h2>
<p>Faced with this reality, it becomes necessary to shift the model&rsquo;s foundation toward elements that remain constant: processes, tools, and now the platform. This reconfiguration does not marginalize the human role; it relieves it of a responsibility it can no longer bear alone in a context of high variability. Individuals stop being the source of coherence and become its beneficiaries: they join a structured environment that guides them from day one, regardless of their background.</p>
<p>The natural evolution of this approach is platformization. An internal platform encodes organizational knowledge in a reusable ecosystem of normalized pipelines, pre-configured environments, project templates, automated controls, and standardized practices. It substitutes a human memory that erodes with turnover for an integrated, persistent operational memory.</p>
<p>That said, this approach is demanding. Building and maintaining a quality internal platform requires a competent, stable, and well-governed team. The structural irony is real: to reduce dependence on interchangeable individuals, you create an infrastructure that requires highly specialized individuals over the long term. Many organizations underestimate this cost. A poorly designed or poorly governed platform can become an even greater obstacle than having no platform at all. This repositioning is no magic solution but a long-term investment, with its own governance requirements.</p>
<hr>
<h2 id="artificial-intelligence-as-a-lever-and-as-a-responsibility">Artificial Intelligence as a Lever and as a Responsibility</h2>
<p>The integration of artificial intelligence represents a significant acceleration of this logic. Within a heavily tooled system, AI can transform static processes into adaptive mechanisms: automated code analysis, test generation, continuous review, technical drift detection, and domain knowledge assistance. These capabilities reduce dependence on individual expertise and strengthen the system&rsquo;s resilience against team turnover.</p>
<p>However, it would be inaccurate to present AI as a frictionless solution. Its effective deployment raises several challenges:</p>
<ul>
<li>AI system governance (prompt engineering, continuous output evaluation, data lineage management, bias monitoring) itself creates dependence on specialized competencies (MLOps, LLMOps, Platform AI) that are often rare and expensive.</li>
<li>AI shifts human dependencies; it does not eliminate them. It generates new layers of specialization, often more demanding than those it replaces.</li>
<li>The cognitive debt risk is real: junior profiles who become overly reliant on AI suggestions may develop impoverished reasoning, undermining precisely the human capital the system seeks to make less critical.</li>
</ul>
<p>An organization that adopts AI as a pillar of its quality engineering must simultaneously invest in the governance of that pillar. Without it, you are simply substituting one fragility for another.</p>
<hr>
<h2 id="scope-of-application-and-model-limitations">Scope of Application and Model Limitations</h2>
<p>This repositioning is particularly well-suited to high-variability organizations: fast-growing scale-ups, technology consulting firms, product teams with a significant proportion of contractors, or IT service delivery environments. In these contexts, platformization and AI augmentation represent high-ROI levers for operational resilience.</p>
<p>In high-criticality domains such as aerospace, healthcare, heavily regulated finance, and critical infrastructure, this logic must be applied with considerable care. Individual accountability and accumulated expertise remain non-substitutable pillars in these fields. Automation and standardization can play a supporting role, but they cannot render the human factor &lsquo;interchangeable&rsquo; without introducing risks of a fundamentally different nature.</p>
<hr>
<h2 id="a-hybrid-model-for-an-asymmetric-environment">A Hybrid Model for an Asymmetric Environment</h2>
<p>The repositioning proposed here aims to rebalance the PPT model rather than invert it. In an environment where human variability has become the norm, operational excellence rests on an asymmetric combination: a solid platform infrastructure, processes that enforce coherence, and well-governed AI that increases resilience. As an indispensable complement, it also needs a core of highly skilled individuals who maintain and evolve the system and embody its vision.</p>
<p>This model does not guarantee excellence on its own. It creates the structural conditions under which excellence becomes reproducible and less dependent on the luck of individual trajectories. What you gain is predictability. You do not eliminate the need for exceptional people; their role concentrates where it is least substitutable, in judgment, innovation, and governance of the system itself.</p>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Software Architect and Software Engineering Quality Advisor</em><br>
<em>Series: <a href="/series/organizational-engineering-for-the-ai-era/">Organizational Engineering for the AI Era</a></em></p>
]]></content:encoded></item><item><title>When Tool Positioning Becomes a Strategic Liability: The Case for Principle-Driven Agentic Architectures</title><link>https://scripting.pro/posts/principle-driven-agentic-architectures/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/principle-driven-agentic-architectures/</guid><description>In a world where AI is redefining the available tools every few months, even the Tools layer of your platform needs to be rethought. The case for governing outcomes, not mechanisms.</description><content:encoded><![CDATA[<p><em>Part II of a series on rethinking technology governance foundations</em></p>
<hr>
<p>In a previous article, I argued that the People-Process-Tools model needs to be rebalanced toward platform engineering in contexts of high resource variability. This article extends that argument one step further: in a world where AI is redefining the available tools every few months, even the &lsquo;Tools&rsquo; layer of that platform deserves to be rethought.</p>
<hr>
<h2 id="the-paradox-of-tool-positioning">The Paradox of Tool Positioning</h2>
<p>In large organizations, the process of selecting, evaluating, approving, and deploying a new tool is rarely a lightweight exercise. Between security reviews, architecture assessments, procurement cycles, integration planning, and training programs, the full lifecycle from initial evaluation to production readiness commonly spans six to eighteen months. For highly regulated environments, that timeline can extend further.</p>
<p>This investment was once rational. When technology moved slowly, the cost of a rigorous positioning process was amortized over years of standardized usage. The approved tool became part of the organizational fabric, embedded in workflows, documentation, onboarding paths, and institutional memory.</p>
<p>That calculus has changed. The current cycle of AI-driven tool evolution is measured not in years but in months, sometimes weeks. By the time an organization completes its positioning process for a given tool, the competitive situation may have shifted, the tool itself may have been substantially transformed, and a new generation of alternatives may have emerged. The organization ends up optimized for a world that no longer exists.</p>
<hr>
<h2 id="why-this-was-rational-and-why-it-no-longer-is">Why This Was Rational, and Why It No Longer Is</h2>
<p>It would be unfair to dismiss tool positioning processes as bureaucratic excess. They exist for legitimate reasons: security and compliance requirements, interoperability constraints, support and vendor stability considerations, and the very real cost of fragmented tooling across teams. These concerns have not disappeared.</p>
<p>What has changed is the nature of the coupling between an organization and its tools. In a slower-moving environment, investing deeply in a specific tool (building expertise, integrations, and institutional knowledge around it) generated durable returns. That depth was an asset.</p>
<p>In today&rsquo;s environment, that same depth increasingly functions as a liability. Deep coupling to a specific tool creates switching costs that slow adaptation. Institutional knowledge built around a particular interface or workflow becomes obsolete as AI transforms the tools themselves. The more thoroughly an organization has embedded a tool into its operating fabric, the more painful the inevitable transition becomes.</p>
<p>The issue lies less in the tools themselves than in the strategic weight organizations assign to tool selection. When tool positioning is treated as a long-horizon strategic commitment, the organization assumes a stability that the environment no longer provides.</p>
<hr>
<h2 id="the-pivot-from-tools-to-principles">The Pivot: From Tools to Principles</h2>
<p>If tools are no longer a stable strategic variable, what is? I would argue for principles: the articulation of expected behaviors, quality standards, operational constraints, and governance guardrails that define how work should be conducted, independently of which tool happens to be executing it.</p>
<p>This shift goes deeper than it may initially appear. Principle-driven governance asks organizations to invest in defining what good looks like (what outcomes are expected, what boundaries must be respected, what quality thresholds must be met) rather than prescribing the specific mechanism through which those outcomes are achieved. The principle is stable; the tooling that enacts it is fluid.</p>
<p>Consider the difference between these two governance postures:</p>
<p><strong>Tool-centric:</strong> <em>&ldquo;All code reviews must be conducted using platform X, following workflow Y.&rdquo;</em></p>
<p><strong>Principle-centric:</strong> <em>&ldquo;All code changes must demonstrate coverage above threshold T, pass static analysis at severity level S, and include a human review sign-off before merging.&rdquo;</em></p>
<p>The second posture is tool-agnostic. It can be enacted by a human reviewer, a CI/CD pipeline, an AI-assisted review agent, or any combination thereof. As tooling evolves, the principle remains intact. Only the mechanism of enactment changes, and that change becomes an optimization rather than a disruption.</p>
<hr>
<h2 id="agentic-architectures-as-a-tooling-abstraction-layer">Agentic Architectures as a Tooling Abstraction Layer</h2>
<p>This is precisely where agentic AI architectures become strategically relevant, as a structural response to tooling volatility and not merely as a productivity lever.</p>
<p>A well-designed agent is coupled to an objective, a set of constraints, and a definition of acceptable outputs, rather than to a specific tool. Given those parameters, the agent selects, orchestrates, and adapts its tooling dynamically. The tool becomes an implementation detail, visible to the agent but invisible to the governance layer.</p>
<p>In a multi-agent architecture, this abstraction scales. Individual agents can specialize (one handling code analysis, another managing test generation, another monitoring technical debt), each operating against the same set of organizational principles while independently managing their tooling layer. As new, more capable tools emerge, the agents can incorporate them without requiring a governance review of the tool itself. What gets reviewed is whether the agent&rsquo;s outputs continue to satisfy the principles.</p>
<p>This represents a meaningful inversion of the traditional governance model. Rather than controlling quality by controlling tools, the organization controls quality by controlling outcomes. The locus of governance shifts from inputs to outputs, from <em>&ldquo;what tool are you using&rdquo;</em> to <em>&ldquo;are the results meeting the standard.&rdquo;</em></p>
<p>The implications for large organizations are significant. Tool evaluation cycles shorten dramatically. Shadow tooling, a persistent governance challenge in organizations with slow approval processes, largely dissolves as a concern: if the agent is producing compliant outputs, the underlying tooling becomes an operational detail rather than a governance risk.</p>
<hr>
<h2 id="limits-and-conditions-for-success">Limits and Conditions for Success</h2>
<p>This architecture relocates governance complexity rather than eliminating it. Several challenges deserve honest acknowledgment.</p>
<p><strong>Defining good principles is harder than it appears.</strong> Principle-driven governance requires organizations to articulate, with precision, what they actually care about. Vague principles produce inconsistent agent behavior. Overly rigid principles reproduce the brittleness of tool-centric governance in a different form. Getting the level of abstraction right requires significant organizational investment and ongoing calibration.</p>
<p><strong>Output evaluation at scale is a partially unsolved problem.</strong> For well-defined, measurable outcomes such as test coverage, static analysis scores, or deployment frequency, this is tractable. For more qualitative dimensions like architectural coherence, domain appropriateness, and long-term maintainability, it remains genuinely difficult.</p>
<p><strong>Agent maturity remains a limiting factor.</strong> Current agentic systems are capable and improving rapidly, but they are not infallible. Human oversight, particularly for high-stakes decisions, cannot be fully removed from the loop, at least not yet.</p>
<p><strong>Regulated environments require special treatment.</strong> In domains where regulatory compliance is tied to specific tools, processes, or audit trails, the fluidity of agentic tooling introduces compliance risks that cannot be resolved through principle-definition alone.</p>
<hr>
<h2 id="a-governance-model-built-for-the-speed-of-change">A Governance Model Built for the Speed of Change</h2>
<p>The organizations best equipped for the current period of technological acceleration are not necessarily those with the best tools. They are those with the clearest principles, along with the architectural flexibility to let those principles be enacted by whatever mechanisms become available.</p>
<p>This is a direct extension of the argument made in the first article of this series. If the People-Process-Tools model needs to be rebalanced toward platform and process in a context of human variability, then the tooling layer of that platform needs to be rebalanced toward principles and agents in a context of technological volatility.</p>
<p>The strategic question for technology leaders has shifted from <em>&ldquo;which tools should we standardize on&rdquo;</em> to <em>&ldquo;which principles are non-negotiable, and how do we build systems, human and agentic, that reliably enact them, regardless of what the tooling landscape looks like six months from now.&rdquo;</em></p>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Software Architect and Software Engineering Quality Advisor</em><br>
<em>Series: <a href="/series/organizational-engineering-for-the-ai-era/">Organizational Engineering for the AI Era</a></em></p>
]]></content:encoded></item><item><title>Similarity Is (almost) Solved. Analogy Is Not.</title><link>https://scripting.pro/posts/analogy-not-similarity/</link><pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate><guid>https://scripting.pro/posts/analogy-not-similarity/</guid><description>On creativity, metaphor, and what AI still needs to learn: a research perspective from 2005–2010 that remains an open architectural problem today.</description><content:encoded><![CDATA[<p><em>On Creativity, Metaphor, and What AI Still Needs to Learn</em></p>
<hr>
<h2 id="a-theory-of-creativity-first">A Theory of Creativity First</h2>
<p>Before building any system, I needed to understand what creativity actually is.</p>
<p>Here is the formulation I arrived at around 2005, working as a researcher in Québec City:</p>
<p>Humans cannot create something entirely new from nothing.</p>
<p>We can only perceive reality through our senses. You cannot imagine a color that does not exist. You cannot conceive a sound you have never heard. The entire domain available to human creativity is bounded by accumulated sensory experience.</p>
<p>Creative thinking is therefore combinatorial rather than generative ex nihilo. The only way to produce something genuinely new within a bounded experiential space is to discover a structural correspondence between two distant domains that are already known.</p>
<p>When that correspondence holds, it is a metaphor.</p>
<p>But novelty alone is insufficient. A creative idea must also be useful, and usefulness is not intrinsic to the idea itself. It is evaluated by a human observer with a specific problem and a specific set of objectives. The same association can be brilliant in one context and irrelevant in another.</p>
<p>This leads to a precise formulation:</p>
<blockquote>
<p>A creative idea is an association between two distant known domains whose relevance is judged by a human evaluator as both novel and useful within a specific context.</p>
</blockquote>
<p>Novelty is a function of semantic distance between domains.</p>
<p>Utility is a function of the match with the problem and with the evaluator&rsquo;s own criteria.</p>
<p>From this theory, an architecture follows naturally.</p>
<hr>
<h2 id="the-architecture-20052010">The Architecture (2005–2010)</h2>
<p>If creativity is the identification of structural correspondences across distant domains, then a system designed to assist creativity should not search for what is similar. It should search for what is structurally equivalent across distance.</p>
<p>Between 2005 and 2010, working at a private imaging company in Québec City, I designed and implemented such an architecture.</p>
<p>Each object in the system (initially images, but the framework was modality-independent) was described through three structured vectors:</p>
<ul>
<li>A <strong>composition vector</strong> capturing spatial organization, perspective, and luminosity</li>
<li>An <strong>object-property vector</strong> encoding detected geometries, shapes, and physical attributes</li>
<li>A <strong>semantic vector</strong> containing qualitative keyword descriptors</li>
</ul>
<p>These vectors were computed automatically using classical computer vision techniques: color histograms, wavelet decompositions, geometric segmentation, texture analysis, spatial frequency distributions. Each image received a multidimensional signature, which we called a &ldquo;genetic code,&rdquo; stored in a database and queryable in real time across a collection of 100,000 images.</p>
<p>In today&rsquo;s terminology: a hand-crafted feature-embedding pipeline feeding a structured vector database, with sub-second query response time. Built in 2008, before those words existed in this context.</p>
<p>But the architectural intent was quite different from similarity search.</p>
<p>The system did not ask: <em>What is nearest?</em></p>
<p>It asked:</p>
<ul>
<li>Which objects share equivalent structural overlaps with a reference? <em>(alternative objects: substitutable, not combinable)</em></li>
<li>Which objects contribute complementary, non-overlapping components of a reference? <em>(complementary objects: combinable to form a stronger metaphor)</em></li>
<li>Which combinations increase analogical coherence rather than surface resemblance? <em>(linked objects: internal reinforcement as a tiebreaker)</em></li>
</ul>
<p>The metaphorical strength of a combination was computed as the aggregate overlap across structured dimensions. Combinations were ranked by analogical coverage, not by proximity.</p>
<p>A red apple and a white tablecloth, taken separately, are only partial metaphors for the Japanese flag. Combined, they cover it completely: one contributes the red circle, the other the white rectangle. Their combination scores higher not because they resemble the flag, but because together they account for its structure. That is analogy, not similarity.</p>
<p>Similar questions were being explored across content-based retrieval and computational creativity research during that period. The problem was recognized; what was missing were the representational tools to address it at scale.</p>
<hr>
<h2 id="why-this-distinction-still-matters">Why This Distinction Still Matters</h2>
<p>Modern embedding systems, including the best multimodal foundation models, are extraordinarily capable. They organize high-dimensional spaces where related concepts cluster together. Distance minimization in embedding space has proven to be a remarkably powerful paradigm.</p>
<p>But the analogical operation itself remains largely latent in these systems.</p>
<p>Current architectures optimize for distance, retrieve nearest neighbors, and interpolate within learned manifolds. They do not explicitly evaluate which pairs or sets of representations together form a structurally stronger mapping to a reference than any single element alone.</p>
<p>Foundation models can produce metaphor-like outputs through statistical association, sometimes impressively so. But the mechanism is emergent rather than structured, which means it cannot be controlled, composed, or inspected.</p>
<p>Making analogy a first-class, explicit, steerable operation in AI systems remains an open architectural problem.</p>
<hr>
<h2 id="what-ai-still-needs">What AI Still Needs</h2>
<p>Revisiting this research today, three limitations of current AI systems stand out, each rooted in the same theory of creativity I was working from in 2005.</p>
<h3 id="1-implicit-context-inference">1. Implicit context inference</h3>
<p>Human creativity does not operate in a vacuum. The relevance of any idea depends heavily on the context in which the human is operating: their constraints, objectives, mental state, environment. A skilled collaborator reads this context without being explicitly told.</p>
<p>Current AI systems depend almost entirely on what the user explicitly provides. They do not perceive the context in which the human evolves. For AI to become a genuine creative partner, it needs access to richer contextual signals, along with the capacity to infer meaning from them without requiring the human to articulate everything. That is a problem of situated cognition rather than retrieval.</p>
<h3 id="2-memory-as-a-knowledge-reservoir">2. Memory as a knowledge reservoir</h3>
<p>In my theory of creativity, the quality of associative reasoning is directly proportional to the richness of available memory. More diverse experience means more potential connections across distant domains.</p>
<p>Current AI systems have impressive parametric knowledge, but their memory architecture is largely static between training runs. The strategic management of episodic, contextual, and long-term memory, treated as a dynamic, queryable reservoir that evolves with use, remains underdeveloped. Memory, in this view, is the substrate of association and not just storage.</p>
<h3 id="3-emotional-memory">3. Emotional memory</h3>
<p>This is perhaps the most significant gap, and the one most likely to trigger an objection from researchers in reinforcement learning or affective computing.</p>
<p>The objection is predictable: AI systems do incorporate affective signals, through reward modeling, reinforcement learning from human feedback, and preference learning. This is true, and the work is serious.</p>
<p>But it addresses a different problem. These approaches treat affect as an external training signal: feedback injected during learning to shape behavior. Human emotional memory is structurally different. Rather than a signal applied to knowledge from the outside, it is woven into knowledge itself.</p>
<p>The neuroscientist Antonio Damasio demonstrated this precisely. Emotion is not separate from rational cognition; it is constitutive of it. Patients with damage to emotional memory centers do not become more rational. They lose the capacity to make decisions at all, because they can no longer assign differential weight to recalled experiences.</p>
<p>Every human memory carries affective encoding (fear, joy, discomfort, wonder) that influences which associations surface, which combinations feel meaningful, and which ideas resonate. This weighting is embedded in the retrieval structure itself rather than applied post-hoc.</p>
<p>Current AI systems process semantic relationships without this integrated affective architecture. The gap may therefore be architectural rather than merely incremental.</p>
<p>Building systems where affective structure is embedded in memory, instead of applied to it from outside, may be one of the most important open problems in AI research on creativity and reasoning.</p>
<hr>
<h2 id="why-i-am-writing-this-now">Why I Am Writing This Now</h2>
<p>The research described here was conducted between 2005 and 2010 and was not publicly discussed at the time due to contractual obligations.</p>
<p>Revisiting it now is less an exercise in retrospection than a recognition that the underlying questions remain open, and that the technological conditions to investigate them meaningfully finally exist.</p>
<p>I am not writing to claim priority. Parallel discovery is the norm in research, and I have no interest in relitigating timing. I am writing because the problem is still in front of us.</p>
<p>If you are working on reasoning architectures, compositional intelligence, contextual AI systems, or human–AI collaboration, I would like to talk.</p>
<p><em>The research described above is documented in an unpublished patent specification and a research poster produced in 2008.</em></p>
<hr>
<p><em>Gabriel Mailhot</em><br>
<em>Software Architect and Software Engineering Quality Advisor</em><br>
<em>Series: <a href="/series/organizational-engineering-for-the-ai-era/">Organizational Engineering for the AI Era</a></em></p>
]]></content:encoded></item></channel></rss>