Chaos Engineering

Chaos engineering is usually described as the deliberate introduction of controlled failures into a system: terminate a service, increase network latency, remove a dependency, and observe whether the system remains reliable.

That definition is correct, but too narrow. It describes a valuable technique without fully expressing the philosophy behind it.

I would define chaos engineering more broadly: it is the discipline of working with complex systems whose future behavior cannot be predicted with sufficient precision. Its purpose is not simply to manufacture failures. It is to reveal assumptions, observe real behavior, contain the consequences of surprise, and improve our ability to adapt.

This broader definition applies to more than production infrastructure. A software product, the team developing it, the business built around it, its users, its suppliers, and now its AI agents form one interconnected system. Reliability depends on all of them.

Chaos is not disorder

In everyday speech, chaos means mess or confusion. In mathematics, chaos has a more precise meaning: deterministic systems can be extremely sensitive to their initial conditions. Very small differences may compound through feedback until two apparently similar trajectories produce dramatically different outcomes.

This does not mean that every development team is literally governed by the same equations as a double pendulum. The analogy has limits. But the operational lesson is useful.

When we interact with a sufficiently complex system, we face several unavoidable constraints:

  • We cannot observe its complete state.
  • Some important variables remain outside our control.
  • Our measurements are delayed, incomplete, or approximate.
  • The system changes while we are studying it.
  • Interactions between its parts create effects that cannot be inferred from the parts in isolation.
  • Uncertainty grows as the prediction horizon expands.

We may know the common regimes into which a system tends to settle -- what chaos theory calls attractors -- without being able to predict its exact path. We can recognize that a team is approaching burnout, that a service is operating near a dangerous capacity boundary, or that a market is becoming unstable. We usually cannot predict the precise incident, date, and sequence of events that will follow.

Weather forecasting is the familiar example. Tomorrow’s weather can often be predicted reasonably well. A precise forecast months into the future cannot, because limited observations and tiny errors accumulate. Complex technological and organizational systems have similar horizons, even though the mechanisms are different.

The correct conclusion is not that prediction is useless. It is that every prediction is conditional, approximate, and perishable.

The software is not the whole system

Traditional chaos engineering focuses on infrastructure because infrastructure is comparatively easy to instrument and disturb. We can terminate a container, isolate a region, exhaust a resource, or slow down an API. The blast radius can be defined and the result can be measured.

But production reliability is sociotechnical. The actual system includes:

code <--> infrastructure <--> team <--> users <--> market <--> finances <--> regulation

Each part has its own cycles and feedback loops. Development changes the product. The product changes user behavior. User behavior changes business priorities. Business priorities change the team. The team changes the architecture, which affects the next development cycle.

Meanwhile, a lead developer can become unavailable. A vendor can change its API or pricing. A financial crisis can remove a market. An unexpected research result can make a year-long roadmap obsolete. Team morale can alter delivery capacity faster than any planning model predicts.

The result resembles a chain of coupled pendulums: development, testing, deployment, hiring, finance, promotion, support, and research all influence one another. Optimizing one loop in isolation can destabilize another.

Killing a database replica may tell us something useful about technical failover. It tells us nothing about whether only one person understands the recovery procedure, whether management will allow the recovery plan to be executed, or whether the business can survive the resulting interruption.

An expanded practice of chaos engineering must examine the entire system, not only the machines.

The illusion of control

Human thinking naturally favors reductionism. We divide a system into pieces, assign a metric to each piece, create a process, and begin to feel that the whole is under control.

Decomposition is essential for engineering, but it becomes dangerous when we mistake the model for reality.

A roadmap is an intention, not a forecast. A metric is a projection of the system, not the system itself. A process can improve coordination, but no amount of process can guarantee an outcome whose decisive variables are unknown.

This is where organizations begin to spend resources on rituals that create predictable cost without producing proportionate information. Meetings happen because the calendar says they should. Reports are generated because reports have always been generated. Long plans are repeatedly revised, while the revision itself is presented as evidence of control.

Retrospectives can fall into the same trap. A retrospective is valuable when it updates our model and improves the next experiment. It becomes corporate shamanism when it invents a neat, deterministic story after the fact and pretends that the same result could always have been predicted.

There is another complication: the observer is part of the system. Our models, metrics, and incentives alter the behavior we are attempting to measure. A target becomes a KPI; people optimize the KPI; the system evolves toward the simplified model. This can create a self-fulfilling prophecy, but the effect is neither unlimited nor fully predictable.

We do influence the system. We simply do not control it from outside.

From prediction to adaptation

The goal of chaos engineering is not to introduce chaos. Chaos is already present. The goal is to develop the senses, boundaries, and response mechanisms required to operate within it.

The core loop is short:

observe --> form a hypothesis --> intervene --> measure --> update

This is not an argument against strategy. It is an argument for matching the length and confidence of a plan to the stability of its environment. A five-year direction can be useful. A five-year sequence of detailed implementation tasks is fiction.

Several practices follow from this principle.

Instrument reality

Monitoring is not the collection of dashboards. It is the nervous system through which an organization detects change.

Useful observation combines technical telemetry, business data, user behavior, incident reports, research results, and qualitative signals from the team. A service may be green while the people maintaining it are exhausted. Revenue may be growing while support load is becoming unsustainable. No single dashboard represents the whole state.

Shorten the prediction horizon

When uncertainty compounds with time, shorter feedback loops reduce exposure. Evaluate the situation, make a bounded decision, implement it, collect new evidence, and reassess.

The purpose of a short iteration is not simply to deliver faster. It is to avoid navigating for too long using an obsolete map.

Prefer reversible interventions

Feature flags, canary releases, staged migrations, backups, shadow traffic, and small experiments preserve the ability to retreat. Reversibility converts a confident decision into a testable hypothesis.

Some decisions are inherently difficult to reverse. That is precisely why they require more evidence, wider review, and a smaller surrounding blast radius.

Limit propagation

Loose coupling, isolation boundaries, graceful degradation, and independent recovery paths prevent a local failure from becoming a system-wide failure.

The same principle applies to organizations. Knowledge concentrated in one person, approval concentrated in one manager, revenue concentrated in one customer, or infrastructure concentrated in one provider are all forms of tight coupling.

Remove toxic dependencies

A dependency becomes toxic when its failure is both plausible and disproportionately damaging. It may be a library, vendor, employee, model provider, distribution channel, or business assumption.

Removing every dependency is impossible. The practical task is to identify dependencies that silently control the system and create alternatives before an emergency makes the choice for us.

Preserve optionality

Flexible architecture is not architecture that anticipates every future requirement. It is architecture that makes the next unknown change affordable.

Modular boundaries, transferable knowledge, portable data, financial runway, and multiple technical paths store optionality. In an unpredictable environment, optionality is a form of resilience.

Follow positive signals

Chaos engineering is often framed entirely around failure. But complex systems also produce unexpected opportunities: an engineer discovers a new strength, users adopt a feature in an unanticipated way, or a new technology suddenly makes a difficult idea practical.

Observation should identify drivers of development as actively as it identifies risks. Resilience is not only the ability to resist damage; it is the ability to redirect energy toward a promising state.

Experiments still require discipline

Broadening chaos engineering does not mean acting randomly. A chaos experiment should be more disciplined than an ordinary change because it deliberately enters uncertain territory.

Before intervening, we should define:

  • the steady state or behavior we believe currently exists;
  • the assumption being tested;
  • the smallest useful experiment;
  • the maximum acceptable blast radius;
  • the signals that indicate success, failure, or danger;
  • the abort condition;
  • the recovery path;
  • the knowledge we expect to gain.

The result of an experiment is not "the system survived." The real result is a better model of how the system behaves.

Experiments should also test recovery, not only resistance. A perfectly robust system is usually an illusion. Components will fail, people will make mistakes, and external conditions will change. The more important question is whether the system notices, contains, recovers, and learns.

AI makes the dynamics visible

The rise of large language models and agentic development makes this entire problem harder to ignore.

An LLM does not necessarily produce the same response to the same request. Its output depends on the prompt, system instructions, available context, retrieved information, model version, tool results, sampling configuration, and hidden runtime conditions. Even when generation is constrained, the environment surrounding the model continues to change.

Agentic development adds feedback:

prompt --> plan --> tool call --> changed repository --> new context --> next plan

A small difference in the first interpretation can lead to a different file being inspected. That produces a different plan, which produces a different edit, which changes the tests and the context available to the next step. The effect compounds. Two runs that begin with the same task may end with substantially different implementations.

This is the butterfly effect in an operationally useful sense: not magic, but sensitivity amplified by feedback.

AI agents also reduce the cost and time of intervention. That is a major advantage, but it accelerates the loop. A system can now enter a previously unexplored state in minutes rather than weeks. Faster experimentation without faster observation and recovery simply produces failures at higher speed.

For this reason, AI systems should be evaluated as distributions, not anecdotes. One successful run proves very little. We need repeated trials, representative scenarios, recorded context, outcome metrics, adversarial cases, and recovery tests. We should monitor model behavior in production just as we monitor any other uncertain dependency.

AI does not remove the need for chaos engineering. It turns agentic development into one of its most important domains.

The human role

If an AI agent can analyze data, write code, run tests, operate tools, and respond to monitoring signals, what remains for the human?

The wrong answer is "control every step." Micromanaging an agent eliminates much of its value while creating the illusion that the result is deterministic.

The human role is to provide functions that cannot safely be delegated to a local optimization loop.

Set direction and meaning

An agent can optimize a defined objective. It cannot independently decide which future is worth pursuing.

Humans choose the purpose of the system, the people it should serve, the values it must preserve, and the trade-offs that are unacceptable even when they improve a metric. These decisions are not missing technical requirements waiting to be generated. They are acts of responsibility.

The human does not need to specify every move. The human must define the direction in which movement remains meaningful.

Maintain temporal and situational grounding

An LLM does not experience the passage of time. It works with the context available during a run. That context may omit a conversation from this morning, a changing market condition, an exhausted colleague, a physical constraint, or a user reaction that has not yet become data.

Humans connect the current digital state to the current real-world situation. They notice when a previously correct assumption has expired and when the task itself should change.

Curate context and memory

More context is not automatically better context. Old decisions, irrelevant files, misleading examples, and duplicated instructions can destabilize an agent as effectively as missing information.

The human decides what should be remembered, what should be forgotten, which evidence is authoritative, and which contradiction requires investigation. Context engineering is not clerical preparation; it is active control over the initial conditions of the next reasoning loop.

Read weak signals

Automated monitoring detects what we have learned to measure. Humans are still essential for noticing signals whose meaning is not yet formalized: a pattern in user frustration, a subtle loss of coherence in a product, an emerging capability in a team member, or the feeling that a technically correct result is solving the wrong problem.

This is particularly important where digital systems meet physical reality and human perception. Virtual and augmented reality, industrial interfaces, spatial design, accessibility, aesthetics, and social interaction cannot be evaluated adequately through text and numerical proxies alone. A model can assist, but it does not directly inhabit the experience being designed.

Define boundaries and stop conditions

Autonomy without boundaries is not intelligence; it is uncontrolled blast radius.

Humans define permissions, budgets, environments, reversible actions, escalation paths, and conditions under which an agent must stop. They decide which changes require independent verification and which systems must never be modified by an experiment.

The human is not required to approve every action. The human is required to design a control surface appropriate to the consequences.

Shape the attractor

Because the observer is part of the system, the human does more than react to signals. Architecture, incentives, examples, access to tools, review culture, and definitions of success all influence the states toward which the system evolves.

We cannot prescribe an exact trajectory, but we can make desirable states easier to reach and dangerous states harder to enter. This may be the most powerful form of control available in a complex system.

Accept accountability

An agent can recommend, generate, and execute. It cannot bear responsibility for the consequences in the human world.

Someone must decide whether evidence is sufficient, whether a risk is justified, whether a release should proceed, and whether the resulting harm or benefit is acceptable. Accountability is not an inefficiency to automate away. It is the foundation that makes meaningful autonomy possible.

What this requires from a human

The "conqueror of chaos" is not a heroic controller standing outside the system. No one stands outside it. The more useful image is a skilled navigator who understands that the map is incomplete and the conditions are changing.

That role requires:

  • Epistemic humility: knowing the difference between evidence, inference, and confidence.
  • Systems thinking: seeing feedback loops and second-order effects rather than isolated tasks.
  • Attention: noticing weak signals before they become obvious incidents.
  • Probabilistic judgment: reasoning in ranges, scenarios, and trade-offs rather than false certainty.
  • Experimental discipline: making hypotheses testable, interventions bounded, and recovery possible.
  • Adaptability: updating a mental model without defending it merely because it was once useful.
  • Emotional stability: remaining capable of clear decisions when uncertainty cannot be eliminated.
  • Technical and human breadth: connecting architecture, business, users, teams, and physical reality.
  • Responsibility: making consequential decisions without transferring moral agency to a tool.

Human judgment is not automatically correct. People bring bias, fatigue, politics, and their own chaotic behavior into the loop. That is why human decisions also need observability: recorded reasoning, peer challenge, independent review, and feedback from outcomes.

The answer is not to replace fallible humans with supposedly infallible automation. It is to combine machine speed and breadth with human meaning, perception, and accountability -- and to design checks for the weaknesses of both.

21.06.2026
Extensible Markdown
The old/new standards for the agentic era
06.07.2026
JSDA-Kit 1.6.x -- What's New?
Features for Richer Static Output
03.06.2026
Symbiote.js & WebMCP
The important part of modern web usability
28.05.2026
Symbiote.js v3.7.x
What's new?
10.05.2026
How to interview
A practical guide to technical interviews as a soft skill
03.05.2026
Symbiote VS Lit
David and Goliath: differences, pros and cons...
15.04.2026
R&D: How to?
The Art of Managing Uncertainty in Software Development
11.12.2025
JSDA is very simple
A new, simple, but powerful way to build modern web applications.
26.08.2024
AI as a Platform
New risk for our jobs or new opportunities?
10.05.2024
The path of Full Stack
How to be efficient in multiple development areas?
RND-PRO.com © 2026 | Built with JSDA-Kit