Seven Mental · 心智七篇
Chapter II · Mental Models

Cybernetics

控制论
§ 01

The helmsman

An agentic system’s output is the resultant of two forces — model capability and everything you do at the harness layer. Orthogonality tells you where to aim. But what is the actual mechanism of “aiming”? What kind of work is your harness doing?

In 1948, a mathematician gave that work a name.

The word cybernetics comes from the Greek κυβερνήτης — helmsman. Not a philosopher, not an architect. A helmsman. Someone adjusting course in real time, against wind and current.

the helmsman the helmsman

Norbert Wiener used this word to name a discipline: the study of how systems achieve control through feedback — whether the system is a steam engine, a cat, or a social organization.

Wiener’s core insight (paraphrased)

A system’s function depends on the quality of information flowing through it. Corrupt the information with noise, and the system loses stability. Break the feedback loop, and control becomes an empty word.

— Paraphrased from Cybernetics: Or Control and Communication in the Animal and the Machine (1948)

If you have written any agentic system code, this might sound familiar.

Feedback: an overused word, an underused concept

In everyday language, “feedback” means someone tells you how you did. In cybernetics, feedback is a precise mechanism: the system’s output is routed back as input, shaping the system’s subsequent behavior.

This mechanism has two modes. Note: “positive” and “negative” here do not mean “good” and “bad” — positive feedback is often dangerous, negative feedback is usually what you want. The names are counterintuitive, but the logic is clean:

Negative feedback corrects deviation and drives toward equilibrium. The thermostat is the textbook example — temperature too high, heater off; too low, heater on; the system oscillates around the setpoint. Your agent calls a tool, gets a result, adjusts its next decision accordingly — that is negative feedback at work.

Positive feedback amplifies deviation and drives toward runaway. The screech when a microphone gets too close to a speaker is positive feedback — sound picked up, amplified, picked up again, amplified again, until the system saturates. Your agent produces a hallucination — the model confidently outputs something factually wrong — and that wrong information enters the context. The model, reasoning from a now-corrupted context, produces more errors. Positive feedback — only what runs away is meaning, not sound.

Both modes coexist in every agent system. Negative feedback steers toward the goal. Positive feedback steers away from it — and accelerates.

You are already doing cybernetics

If you have written agent code, you have already been practicing cybernetics.

What you write in the harnessWhat cybernetics calls it
System prompt, tool definitionsInitial conditions and interface definitions of the control signal
Output parser, evaluatorObserver
The loop that concatenates tool results and calls the model againClosed-loop feedback loop
Context management (compaction, summarization)Signal filtering and noise reduction
Permission system, sandbox isolationConstraint boundaries of the actuator
Max steps, timeoutsSafety valves against positive-feedback runaway

These components together form your harness — the entire feedback control system wrapped around the LLM. This system does not require a human in the loop at every turn; harness code closes the loop automatically. The human’s role is at design time, not runtime.

Why give your intuitions a name

Putting a theoretical framework on these practices is not about padding a resume. It is about seeing something clearly: which of your gut-instinct design choices have theoretical backing, which ones are just getting lucky — and whether theory can help you get lucky more reliably.

The harness is a single whole, but it has internal division of labor. Cybernetics describes that division with three roles — Observer, Controller, Plant.

Further Reading

  • Wiener, N. (1948). Cybernetics: Or Control and Communication in the Animal and the Machine. MIT Press.
§ 02

Observer-Controller-Plant

Knowing the harness is a feedback control system is a start. But “the whole system” is too coarse — when something goes wrong, you have no idea where to look. Cybernetics splits the system into three roles.

Three roles

Plant (the controlled object) — the thing you want to control but cannot directly modify from the inside. In classical control theory, it is a motor, a chemical reactor, the aerodynamic surfaces of an aircraft. In an agentic system, it is the LLM. You give it input; it gives you output. You cannot crack open its parameter matrix and manually tweak a weight — you can only influence its output through its input.

Controller — the part that generates control signals based on observed signals. System prompt, tool definitions, orchestration logic, permission system, context management strategy — these determine “what gets fed to the LLM next turn.”

Observer — the part that senses the plant’s output. Output parser, evaluator LLM (a separate model checking the primary model’s output), human-in-the-loop approval flows, logging systems — they determine “whether the LLM’s output meets the mark, and where the gap is.”

Controller and observer are both your harness code. The plant is the only part that does not belong to the harness — it is what the harness exists to control. OCP is not dividing your system into three separate programs. It is performing responsibility decomposition within the harness: inside the same codebase, which components are doing control, which are doing observation.

Closed loop and open loop

If your agent is just prompt → response, fire and forget, you are doing open-loop control — issuing a command without looking at the result. Open-loop control works when the plant’s behavior is highly predictable.

LLM behavior is not highly predictable — ch-01 covered this: probabilistic output is one of its operational characteristics. So nearly every production-grade agentic system is closed-loop. The ones that are not are either chatbots or rolling the dice.

The essence of closed-loop control is straightforward: observe, compare, adjust, repeat. The agent loop’s while has_tool_calls: execute → feed_back → call_again is this cycle expressed in code.

graph LR
  P["Plant<br>(LLM)"] -->|output| O["Observer<br>(parser, evaluator, logs)"]
  O -->|error signal| C["Controller<br>(prompt, tools, orchestration)"]
  C -->|control signal| P
  style P fill:#e8f4fd,stroke:#333
  style O fill:#fff3e0,stroke:#333
  style C fill:#e8f5e9,stroke:#333

Mapping table

Aligning cybernetics terminology with agent system components makes the whole picture click:

Cybernetics conceptAgent system counterpartExample
PlantLLMClaude, GPT
ControllerControl components in the harnesssystem prompt, tool definitions, orchestration logic, context management
ObserverObservation components in the harnessJSON parser, evaluator LLM, human review, logs
Reference signalTask objective”Fix this bug”
Error signalGap between objective and actual outputTests still failing
Control signalNext-round inputAdjusted prompt + tool results
FeedbackTool results / evaluation resultsbash output, test results, linter output

You do not need to memorize this table. What you need is an instinct: when you hit a design problem in an agent system, try asking — is this a plant problem, a controller problem, or an observer problem? That single distinction, just sorting into the right bucket, sharpens your troubleshooting direction considerably.

The separation principle

Separation Principle

Control theory has a theorem: under conditions of linearity, Gaussian noise, and a few other assumptions, the controller and the observer can be designed independently. You can design the optimal controller first (assuming perfect observation), then design the optimal observer (assuming perfect control), combine them, and the result is still optimal.

LLM systems are neither linear nor Gaussian — the theorem does not apply directly. But the engineering spirit behind it is worth borrowing.

Put plainly: “getting the model to output in the right format” and “checking whether the model’s output is correct” are two different jobs. The first belongs to the controller (prompt engineering, structured output, tool design). The second belongs to the observer (validation, evaluation, testing).

A classic symptom of conflating the two: stuffing a paragraph into the system prompt that says “please verify your own output for correctness” — the controller moonlighting as the observer. Sometimes this works (models do have some self-correction ability), but it couples two problems that could have been optimized independently. Once coupled, every time you adjust the prompt, you cannot tell whether you are tuning control or tuning observation. Debugging becomes guesswork.

Anthropic’s generator/evaluator separation architecture in harness design is exactly this principle in engineering practice — generation and evaluation handled by different components, each iterated independently.

Three roles, one loop, one separation principle — that is the basic skeleton cybernetics gives you. But this skeleton faces a unique challenge: its plant is a language model with a near-infinite output space. How does your controller cope with that kind of variety? Ashby answered this in 1956.

Further Reading

  • Ahn, K., Zhang, Z., & Sra, S. (2024). What’s the Magic Word? A Control Theory of LLM Prompting. arXiv:2310.04444
§ 03

Requisite variety

Observer, Controller, Plant — three roles, one closed loop. The skeleton is in place. But this skeleton faces a challenge unlike anything in classical control: its plant is not a motor with a bounded output space. It is a language model whose output space is practically infinite.

Ashby’s Law

In 1956, W. Ross Ashby proposed a principle that would later be called “the first law of cybernetics”:

Law of Requisite Variety

Only variety can absorb variety. The number of distinct situations a controller can handle (its variety) must be no less than the number of distinct disturbances it needs to counteract.

The intuition: a thermostat has exactly one control lever — switching the heater on and off. So it can regulate temperature, but not humidity. If you want to control both temperature and humidity, you need a system with at least two independent control levers. The ceiling on control capability is set by the controller’s variety.

Map this to an agentic system: the range of behaviors your harness can handle must cover the range of behaviors the model might produce. Whatever falls outside that coverage is a blind spot — and inside that blind spot, the model’s output goes uncontrolled.

The LLM is a high-variety plant

Classical control theory usually deals with low-variety plants. A motor’s output space is speed and torque. A thermostat’s output is temperature. You can enumerate every possible output state and design a control strategy for each one.

An LLM is nothing like that.

The LLM’s output space is natural language — in theory, the set of all possible token sequences. Even if you cap output at 1,000 tokens, the number of possible combinations is astronomical. You cannot enumerate every possible model output and write a handling branch for each.

Ashby’s Law cuts straight to an engineering directive here: since you cannot make your harness’s variety catch up to an infinite output space, you have to work from the plant side — reduce the variety that needs handling.

Two strategies

Increase the harness’s control capacity

More tools, more complex orchestration logic, more checkpoints, more granular evaluators — expanding the range of model behaviors your harness can recognize and handle.

The cost: the harness itself grows more complex. A complex harness is harder to understand, harder to debug, and more likely to have its own bugs. The controller’s variety has a practical ceiling — it cannot exceed what engineers can comprehend and maintain.

Reduce the plant’s effective variety

Constrain output format. Limit available tools. Narrow task scope. Each of these shrinks the space of behaviors the harness needs to cover — not by restricting what the model can do, but by restricting what you need to handle.

OpenAI distilled a similar lesson while building Codex — “give Codex a map, not a 1,000-page instruction manual.” Use clear architecture docs and constraint rules to bound the agent’s behavior space, rather than sprawling instructions trying to cover every case. This is variety reduction by a different means: not constraining output format through code, but constraining behavior space through documentation.

The two strategies are not either-or. Once you reduce the plant’s effective variety, the residual space the harness needs to cover shrinks — a control problem that was previously impossible becomes tractable. Reduce noise first, then control.

And by the way — “reducing the plant’s effective variety” is itself one of the cumulative investments ch-01 talked about. No matter how capable the model becomes, the work of constraining output format, bounding the tool set, and framing behavior space through documentation does not get replaced by model capability growth. It is orthogonal to model capability.

Why simple harnesses often win

Keep your agent framework simple. The sophistication should be in your tools and in your prompts, not in your agentic framework.

— Anthropic, Building Effective Agents

In Ashby’s terms: do not try to make the harness as complex as the plant. Go the other way — bring the plant’s effective variety down, and a simple harness is enough.

But “simple” is a slippery word. Ashby’s Law has a corollary: the controller is itself a system with its own variety. If the harness’s variety grows too high — past the point where engineers can understand and debug it — it stops being a tool for controlling the LLM and becomes another complex system that needs controlling. The controller spirals out of control while trying to control the plant.

Go too far the other direction, and the harness’s variety drops below what is needed to cover the plant’s residual behavior space. Now you have a system riddled with blind spots.

The meaning of “simple” hides in the math of Ashby’s Law: the harness’s variety matches exactly the variety it needs to handle.

Variety constrained, structure clarified — the next question is: what does this constrained system actually look like at runtime? It is a state machine. But not a typical one.

Further Reading

  • Ashby, W. R. (1956). An Introduction to Cybernetics. Chapman & Hall. rossashby.info
  • Anthropic. (2024). Building Effective Agents. anthropic.com
§ 04

An atypical state machine

Variety constrained, harness covering the residual space. What does this constrained system actually look like at runtime?

It is a state machine — formally, it fits the definition perfectly. But it has several unusual properties.

The agent loop is a while loop

At the core of every agentic system sits a loop:

while not done:
    output = llm(context)
    if output.has_tool_calls:
        results = execute(output.tool_calls)
        context.append(results)
    else:
        done = True

Current state (context) + input (tool results) → transition function (LLM inference) → next state (updated context). Formally, that is a state machine.

Tell a computer scientist “the agent loop is a state machine,” and they will nod. But if they try to verify your agent using the methods they use for finite state machines, they will run into trouble.

Classical FSM vs. agent state machine

DimensionClassical finite state machineAgent loop
State representationEnumerated type, finite setNatural language + structured data, combinatorial explosion
Transition functionDeterministic, lookup tableNon-deterministic, LLM inference
Input alphabetFinite symbol setNatural language + tool results, unbounded
Transition predictabilityFully predictableProbabilistic — same input may yield different output
Number of statesFinite, enumerableEffectively infinite
Termination conditionReaching an accept stateModel decides to stop (or harness forces a stop)
Transition triggerSynchronous — input arrives, transition firesMix of synchronous and asynchronous events

Three atypical properties

Property one: natural-language states

A classical FSM’s states look like enum { IDLE, WORKING, DONE } — finite, discrete, exactly comparable. The agent loop’s “state” is the entire content of the context window — potentially tens of thousands of tokens of natural language.

“Are two states identical?” is itself a fuzzy question. An extra sentence in the context, a missing sentence, a rephrasing — same state or different state? There is no precise answer. Context management (compaction, summarization) is, at its core, state dimensionality reduction — compressing an infinite state space into a subspace where approximate comparison becomes possible.

Property two: the LLM as transition function

A classical FSM’s transition function is deterministic: state A + input X → always state B. The agent loop’s transition function is LLM inference — feed the same context and same tool results in twice, and you may get different next-step decisions.

This is not a bug in the implementation. It is a property of the mechanism — ch-01 covered this: probabilistic output is one of the LLM’s operational characteristics.

Property three: non-deterministic termination

A classical FSM halts when it reaches a predefined accept state. The agent loop halts when the model “believes the task is done” — and that judgment is itself probabilistic. The model may declare completion before the task is actually finished (false positive), or keep performing meaningless operations after the task is already done (false negative).

Every production-grade harness has external termination mechanisms — max steps, timeouts, human interrupts. Not because the model cannot be trusted, but because probabilistic judgment needs a backstop.

Beyond the while loop: event-driven execution

The synchronous loop described above is the agent loop’s main path. But a production harness does not run just one while loop — it is an event loop.

Off the main path, asynchronous signals arrive continuously:

  • Hooks: pre-tool-call and post-tool-call hooks fire at specific nodes on the main path, able to intercept, modify, or abort execution.
  • External interrupts: user cancellation, timeout signals, CI status changes — events that can break into the main path at any moment.
  • Event-driven kickoff: the agent’s startup itself is not necessarily triggered by a human hand. State changes in the outside world (data arriving, upstream service pushes, scheduled triggers, output from another agent) can all serve as trigger conditions for agent execution. In production orchestration layers, event-driven agent kickoff is a common pattern — the state machine’s very first transition is already asynchronous.

Classical FSMs do not face this dimension — their transitions are synchronous, one input per transition. The agent state machine’s transitions are both synchronous (LLM output → tool execution → result injection) and asynchronous (external events injected at any time). This makes the harness’s runtime model closer to an event-driven reactor than a simple while loop.

Two constraint strategies

Facing this atypical state machine, the industry has developed two constraint strategies:

Explicit graph (LangGraph): overlay a deterministic graph structure on top of the non-deterministic LLM transitions — you define which nodes can transition to which; the LLM calls inside each node remain probabilistic. Deterministic skeleton + probabilistic muscle.

Implicit loop (Claude Agent SDK / OpenAI Codex harness): no predefined explicit graph. Instead, tool definitions + hooks + permission systems constrain the agent’s available action space at each step. The loop itself is general-purpose; constraints are injected through runtime configuration.

Neither is right or wrong — they serve different scenarios. When the workflow can be predefined, the explicit graph is more transparent. When the workflow demands flexible exploration, the implicit loop is more natural.

Near-infinite state space, non-deterministic transition function, probabilistic termination, a mix of synchronous and asynchronous drivers. This is still a state machine — you just cannot verify it with classical methods.

With the runtime shape understood, one dimension remains unexplored: the feedback loops on this state machine are not single-layered.

Further Reading

§ 05

Feedback layers

Feedback is the mechanism that routes a system’s output back as input — negative feedback corrects deviation, positive feedback amplifies it. But feedback does not happen in just one place. Pull the camera back from a single tool call to the full lifecycle of an AI system, and at least four nested feedback loops come into view.

Four layers

LayerTimescaleFeedback signalTriggerCorrects
TokenMillisecondsPreceding tokens → next-token probabilityAutoregressive; fires every stepToken distribution randomness
TurnSeconds to minutesTool result → next-round promptEvent-driven; fires on tool-call completionSingle-step decision deviation
SessionMinutes to hoursTask outcome evaluation → strategy adjustmentMixed timing + events (CI results, user interrupt)Cross-turn accumulated drift
AlignmentWeeks to monthsHuman preferences → model weight updateTraining cycleSystematic bias in model weights
Token level

The model’s autoregressive mechanism: every token it generates becomes part of the input for the next token. This loop closes on a millisecond timescale. You cannot intervene here directly — unless you are doing inference-time intervention research. It is feedback internal to the plant, outside the harness’s control surface.

Turn level

The core feedback of the agent loop. Model calls a tool → tool returns a result → result gets spliced back into context → model makes the next decision. This is the harness engineer’s primary operating theater. Your system prompt, tool definitions, output parsing — they all live at this layer. Each closure of the Observer-Controller-Plant loop is one turn-level feedback cycle — and one step through the atypical state machine.

Session level

The execution cycle of a complete task. The evaluation that follows — did tests pass? is the user satisfied? — may trigger strategy adjustments: a different prompt template, a different tool combination, a revised context-management approach. Human-in-the-loop intervention mainly happens here.

As harnesses mature, session-level feedback is shifting from manual to automated. In Anthropic’s long-running agent architecture, the handoff between initializer agent and coding agent, the automatic updates to feature tracking — these are automated session-level feedback. No human standing at every session boundary pressing buttons.

Alignment level

Human preference signals get aggregated and, through training, alter the model’s weights. Unless you are a model provider, this is not your direct control surface — but it determines the baseline behavior of your plant. Ch-01 noted that capability grows predictably with scale; alignment-level feedback is one of the mechanisms that shapes the direction of that growth curve.

Nested loops

Each layer is a complete Observer-Controller-Plant circuit. Inner layers run fast, outer layers run slow — but the outer layer sets the boundary conditions under which the inner layer operates.

Training changes the model’s weights, so every token-level probability distribution shifts. You revise the system prompt, so every turn-level model behavior shifts. The slow layer determines what the fast layer can and cannot do.

Harness engineers mainly operate at the turn and session levels. But knowing which layer your control signal actually takes effect in — and which behaviors are not yours to change at your layer — that boundary awareness matters.

The danger of positive feedback

Hallucination as a positive feedback loop

At the turn level, hallucination is a textbook positive-feedback process: the model generates incorrect information → incorrect information enters the context → the model generates based on the corrupted context → errors accumulate and amplify. Each turn-level feedback cycle does not correct the deviation — it widens it.

One of the core responsibilities of harness engineering: intervene before positive feedback runs away. Observers that validate tool results, controllers that run sanity checks, termination mechanisms that cap autonomous execution steps — all of them are negative-feedback devices, counteracting the turn-level tendency toward positive feedback. The microphone-squeal analogy from 01 gets a more concrete anatomy here.

This also gives another angle on the separation principle from 02: why the evaluator needs to be independent from the generator. If the generator is responsible for checking its own output (controller doubling as observer), positive feedback can quietly accumulate in the generator’s blind spots — it cannot see its own errors, so it cannot correct them. An independent evaluator provides negative feedback from outside, breaking the loop.

Up to this point, the perspective has been from outside the system. But one question has gone unasked: when you are tuning a prompt, are you part of the system?

Further Reading

  • Christiano, P. et al. (2017). Deep Reinforcement Learning from Human Preferences. arXiv:1706.03741
§ 06

Second-order cybernetics

What are you doing when you tune a prompt?

Observing the model’s output, judging how far it lands from where you want it, modifying the system prompt, observing the new output. The cycle might run for hours. You are a controller operating at the session-level timescale.

But you are also part of the system. Your design decisions shape the system’s behavior, and the system’s behavior shapes your next design decision. You are inside.

observer within observer within

In 1974, Heinz von Foerster drew a line through this phenomenon.

First order and second order

First-order cybernetics

The cybernetics of the observed system. You stand outside, studying how it works. Plant over there, observer over here, clean boundary. The first five articles — from OCP structure to feedback layers — all took this vantage point.

Second-order cybernetics

The cybernetics of the observing system. You recognize that the observer is inside the system, and that the act of observing changes the system being observed. Not “I am watching how it runs,” but “I am watching how it runs, and my watching changes how it runs next.”

The first-order view handles most engineering problems. But some phenomena only come into focus through the second-order lens.

You are the adaptive controller

The iterative process of tuning a prompt has a name in control theory: adaptive control — a controller that adjusts its own strategy in real time based on the behavior of the controlled system.

In classical adaptive control, the controller is an algorithm. In the development of an agentic system, the controller is you — a human engineer, observing behavior, judging outcomes, and adjusting strategy on a session-level timescale. The process of designing the harness is itself a feedback loop, just one that closes far more slowly than the turn level.

Second-order cybernetics describes exactly this structure: no one-way arrow between observer and observed system, only a loop.

When the system observes itself

More interesting than you tuning a prompt: the model can do something similar on its own.

An agent generates, checks its own work, corrects itself — generator and evaluator are the same model.

Constitutional AI: self-observation, engineered

Constitutional AI pushes this logic into the training layer: the model critiques its own output using a set of principles, generates preference data from its own judgments, and uses that data to train its own reward model. Observer and observed collapse into one.

Papers, code, quantifiable results all exist — but the approach rests on one premise: the system’s self-assessment is reliable enough.

Engineering boundary

Self-correction depends on a premise: the model’s judgment in the target domain is strong enough to evaluate its own output. If it is not, self-correction can turn correct output into incorrect output — a bad self-assessment is more dangerous than no self-assessment at all.

Anthropic’s circuit-tracing research has found that models sometimes exhibit introspective awareness — they can report what they are doing, and the reports sometimes align with internal computation paths. Whether this constitutes some form of “self-awareness” is a question serious researchers are still debating. For engineering, what matters is not the philosophical verdict but an operational question: on your specific task, is the model’s self-assessment accurate?

Separation principle meets second-order view

02 said the responsibilities of controller and observer should be separated. This article says observer and observed can collapse into one. No contradiction — they speak at different layers.

The separation principle is an engineering guideline internal to the harness: within the same codebase, control components and observation components each do their own job, optimized independently. A first-order view.

The second-order view concerns something else. No matter how you design the harness, you (as the designer) and the system always form a loop — your design affects behavior, behavior affects your next design. This loop cannot be eliminated, only recognized. And recognizing it is understanding why “getting the harness design right” is not a task with an endpoint but an ongoing iterative process.

The perspectives that cybernetics can offer agentic-system engineering are mostly laid out now. One question remains: all these perspectives together — where exactly is the line they draw?

Further Reading

  • Von Foerster, H. (1974). Cybernetics of Cybernetics. University of Illinois.
  • Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073
  • Anthropic. (2025). Circuit Tracing: Revealing Computational Graphs in Language Models. transformer-circuits.pub
§ 07

The boundary with traditional software

The question left open by 06: where is the line?

Three dividing lines

Non-deterministic execution

Traditional software: f(x) = y holds every time. Same input, same output. Tests can assert exact values.

Agentic systems: f(x) may differ each run. Ch-01 established that probabilistic behavior is an operational characteristic of LLMs. You cannot verify an agent’s behavior with assertEqual — you need statistical methods.

Natural language as control signal

Traditional software uses APIs, type systems, and compilers for enforcement. Wrong parameter type? The build fails.

Agentic systems use natural language as their control signal — the prompt. “The prompt is ambiguous” and “the API parameter type is wrong” are errors from two different universes. The first has no compiler to catch it.

Emergent behavior

A traditional system’s behavior = the union of all code paths, theoretically enumerable.

An agentic system’s behavior set cannot be enumerated — the model may do anything within its capability range. The requisite-variety problem discussed in 03 has its root here.

Different plant, different engineering

The three lines converge: traditional software’s plant is deterministic, low-variety, and driven by typed interfaces. An agentic system’s plant is non-deterministic, high-variety, and driven by natural language.

Different plant, different harness design principles.

DimensionTraditional softwareAgentic systemCybernetics concept
VerificationUnit tests, integration tests (deterministic assertions)Statistical validation, adversarial testing04 non-deterministic transitions
ObservabilityLogs, metrics, traces+ reasoning-path tracing, context auditing02 observer variety
SafetyInput validation, access control+ sandbox isolation, least-privilege tools, output auditing03 constraining plant variety
DebuggingBreakpoints, stack traces+ prompt replay, context snapshots04 natural-language state
IterationChange code, run tests+ tune prompts, watch for behavior drift06 second-order feedback

You would not debug a jet engine the way you debug a compiler. They are different systems with different failure modes.

What stays, what changes

The core of engineering discipline does not move: rigor, repeatability, verifiability.

What changes is the concrete form that discipline takes. What does “repeatable” mean when execution is non-deterministic — exact reproduction, or statistical stability? What counts as “verified” — asserting an exact value, or checking a distribution? And “observable” — tracing code paths, or tracing reasoning paths?


Orthogonality was about where to point your force. Cybernetics is about the mechanism — a multi-layered feedback control system running on an atypical state machine, with you as part of it.

The mechanism is clear. Next question: what happens to this system over long runs?

Further Reading

  • Schneier, B. & Raghavan, B. (2025). On the OODA Loop and Agentic AI. schneier.com