The rover with a perfect plan

A rover receives a map of a warehouse, computes the shortest route to a charging dock and prints six moves: east, east, east, east, east, east. The route is correct when computed. Two seconds later, a pallet rolls into the third cell. The rover executes the stored sequence anyway. Its third movement is rejected, the remaining eastward commands strike the same obstruction, and it stops at the pallet while reporting that the stored plan has finished.

Now change only the arrangement around the route planner. After every attempted move, the rover reads its position and nearby obstacles. It preserves the charging objective, checks whether the action had the expected effect, and invokes the same shortest-path programme again when the pallet appears. The route planner has not become more intelligent. The surrounding loop has made its output conditional on what actually happens.

The move from programme to agent occurs when computation becomes causally coupled to an environment across time. A programme maps supplied inputs to outputs. An agent uses computation inside an ongoing loop in which observations influence action, action may change the world, and the changed world supplies later evidence. The difference is architectural before it is cognitive.

This answer avoids two common mistakes. The first is to call every automated programme an agent because it executes without a person touching each step. The second is to reserve “agent” for systems with language, elaborate planning, self-reflection or human-like goals. Both erase useful distinctions. A payroll batch can be highly automated without observing the consequences of its own actions. A thermostat can display a very thin form of situated agency without reasoning in language.

The practical question is therefore not “How smart is the model?” It is: which functions close the loop, which system owns each one, and what happens when any function is removed? That cutaway gives an engineering definition precise enough to test without pretending to settle the metaphysics of agency.

Part IAgency lives in the coupling

Software is usually classified by what its code contains: rules, learned parameters, search, memory or a planner. Agency cuts across those categories. A lookup table can control a situated system. A large neural model can remain a passive function. The classification depends on the programme’s role in a larger causal circuit.

Published evidence

Classical agent research never produced one universally accepted essence. Yet influential accounts converge on a family resemblance: an agent is situated in an environment, operates with some autonomy, responds to change and pursues continuing objectives. Wooldridge and Jennings emphasised autonomy, reactivity and pro-activeness. Franklin and Graesser added temporal continuity and explicitly contrasted an agent with an ordinary programme that lacks environmental feedback.

Thought experiment one: the same programme in two sockets

Take a function that receives temperature and returns either HEAT_ON or HEAT_OFF. In the first socket, a researcher feeds it a spreadsheet of yesterday’s readings. The function writes a column of outputs. Nothing observes whether a room warms. In the second socket, a controller samples a live sensor every minute, executes the returned command against a heater, and samples again. The code is identical. The causal role is not.

The spreadsheet use is a calculation. The controller use is a thin agent because its choices participate in a persistent loop with the room. The room is not merely input data. It is an environment whose later state partly depends on the controller’s earlier action. This is why agency cannot be read from a source file alone.

The cutaway makes a further distinction. A policy can propose an action without possessing authority to execute it. A rover’s motor controller may have direct permission to move within a sandbox. A banking assistant should not acquire payment authority merely because it can formulate a valid instruction. Capability selects a possible effect; authority determines whether that effect may be attempted.

The same programme in two causal arrangements Left, a programme maps an input file to an output file once. Right, the same programme sits in a repeated observation and action loop with an environment. One-shot calculation Situated agent loop Input file fixed record Programme f(input) Output final No later observation depends on the output. Same programme used as policy observe act Output changes the next input through the world.
Figure 2. Identical code can occupy different causal roles. The left arrangement is a finite transformation. The right arrangement gives the output environmental consequence and returns consequence as later input. The comparison is illustrative.

An operational definition

Working definition

An engineering agent is a bounded system that preserves a criterion across time, receives observations from an environment, selects actions at runtime, can affect that environment, and uses later observations to continue, revise, stop or escalate.

“Bounded” matters. The environment may be a room, a game, a browser, a repository or an enterprise workflow. The boundary tells us what the agent can observe and affect. “Criterion” may be a target state, reward, rule set, service objective or termination test. It need not be a human-like desire. “Across time” excludes a single isolated mapping unless that mapping is one step inside a continuing controller.

This definition is intentionally functional. It does not imply consciousness, moral agency, understanding or self-authored purposes. Those are separate questions. It also leaves room for degrees. A thermostat has a narrow action space, little state and a fixed criterion. A repair agent may inspect several systems, maintain a case state and replan. Both can instantiate the loop, while differing drastically in competence and consequence.

A boundary test, not a badge

The strongest objection is that “agent” is observer-relative. A process that looks autonomous at one scale may be a subroutine at another. The thermostat is an agent relative to the room, yet a component relative to the building-management system. A web assistant may be an agent relative to one browser task while remaining a tool within a human-led service journey. This objection is correct about scale, but it does not make the term useless. It requires the analyst to declare the environment, criterion and effect boundary before assigning the label.

The same discipline handles scheduled daemons, database triggers and event-driven services. A daemon that wakes, checks a queue and executes a fixed transaction is autonomous in the ordinary software sense. Whether it is agent-shaped depends on whether observations can change its next action and whether it reads back consequence across an episode. A database trigger may react to state without carrying a continuing objective. An event processor may preserve an objective but never observe its own effects. The component-removal test reveals the difference more reliably than product vocabulary.

There is also a legitimate broad usage in which any autonomous situated process counts as an agent, including the clockwork courier. This paper adopts a narrower engineering cut because it predicts a consequential design obligation: once actions affect later evidence, the system must manage state, uncertainty, stopping and recovery. The label is useful only when it identifies a causal responsibility that would otherwise be missed.

Part IIThe five minimum additions

Start with an arbitrary programme f. It may be a rules engine, a search procedure, a neural model or a mixture. Five additions change its role from a supplied transformation into situated, goal-directed action. Removing any one of the five produces a recognisably different system.

Design inference

The five-function cut below is an engineering synthesis of the classical literature, control theory and current agent practice. It is not presented as a newly discovered natural kind. Its value is discriminating: each function can be removed, implemented by a different component and tested through an observable failure.

1. A persistent criterion

A programme normally receives a task specification with its input. An agent must carry enough of the objective to judge what to do after the first result. The criterion may say “keep the room between 19 and 21 degrees”, “reach the charging dock”, “resolve the incident or escalate”, or “collect enough evidence to answer”. It includes a stopping condition, because an endless loop is not evidence of pro-activeness.

Persistence does not mean immutability. A human may revise the task, a policy may narrow it, or new evidence may make it infeasible. The key is that the next action is evaluated against an enduring task state rather than generated as an unrelated response. A goal without a stop rule produces activity; a criterion produces controllable progress.

2. An observation interface

The system needs evidence about a world outside the policy calculation. A sensor reading, tool result, test outcome, page state or case record can serve as an observation. The interface must also say what absence means. An empty search result may mean no record exists, or merely that the query failed. A timeout may mean the action failed, succeeded late or remains unknown.

Observation is stronger than context. A prompt can contain a description of a warehouse, but a situated rover needs a current reading tied to its own position and time. The evidence may still be imperfect. Agency does not guarantee correct perception. It creates a channel through which reality can correct a plan.

3. Runtime action selection

A fixed schedule can cause effects, yet it does not adapt those effects to newly observed conditions. An agent policy chooses among available actions after the run begins. The choice may be trivial, deterministic or learned. The action set may contain “heat”, “wait”, “read status”, “run test”, “draft response” or “escalate”. What matters is that the current observation can alter which action is selected.

This is where many language-model applications qualify only weakly. A model that answers one prompt selects tokens, but the surrounding application may expose no environmental action and no continuing task. Adding function calling still does not finish the job. The application must execute a bounded operation, return a typed observation and decide what happens next.

4. An effect channel

The selected action needs a path into the environment. Sometimes the effect is epistemic: query a database, inspect a file, run a test. Sometimes it is consequential: move a robot, change a record, send a message. A proposal written into a log is not the same as an executed effect. The system boundary must state which one occurred.

For consequential work, the effect channel should sit behind a deterministic authority gate. The model or policy may recommend an operation. Identity, permission, argument validity, idempotency and limits should be enforced elsewhere. This does not make the controller less agentic. It makes its autonomy legible and bounded.

5. Temporal closure through consequence readback

The agent must learn what happened after acting. A transport-level “accepted” response may not establish the intended business state. A motor command may be blocked. A patch may compile but fail tests. Consequence readback compares the expected postcondition with an observation of the changed environment. It lets the system continue, replan, compensate, wait or admit that the outcome is unknown.

Readback closes the causal loop. Without it, action leaves the system but consequence does not return. The programme may remain automated and stateful, yet it cannot adapt to the world it is changing.

The minimal observation-action loop over time A time sequence from environment state to observation, state update, policy, proposal, authority gate, action, transition and next observation. time t time t+1 World xt Observe ot Update state mt = U(mt-1, ot) choose π(ot, mt, g) Gate allow, deny, or escalate Act et environment transition T produces the next state and outcome evidence Criterion g persists across the episode
Figure 3. A programme becomes an agent policy inside a repeated state transition. Symbols are defined in the text below. The authority gate may refuse execution, so the executed effect can differ from the proposed action. The relationship is illustrative.

The loop can be written compactly. Let x_t be the environment state at time t. The observation function O yields o_t = O(x_t). A state updater produces m_t = U(m_{t-1}, o_t). Given criterion g, the policy proposes a_t ~ π(o_t, m_t, g). A gate K turns that proposal into an executed effect e_t, perhaps by allowing, denying or escalating it. The environment then changes according to x_{t+1} ~ T(x_t, e_t, ξ_t), where ξ_t represents disturbances outside the agent’s control.

When O(x_t) exposes everything relevant to the next decision, m_t can be trivial. When observation is partial, the agent needs a memory or belief state that summarises relevant history. This is a conditional requirement, not an excuse to call every transcript “memory”.

Goal-directedness also needs care. A designer may write the criterion, a user may supply it, or a higher-level controller may allocate it. The agent need not invent its own ends. What makes behaviour goal-directed is that the criterion constrains successive selections and terminal judgements. A system that merely prints the goal in every prompt can still wander if no runtime state checks progress against it.

Autonomy is similarly local. The policy has discretion among actions permitted by the envelope. It may decide which record to inspect or which safe route to take, while lacking permission to widen its purpose, add a new tool or change a customer record. This bounded account avoids equating autonomy with independence from human institutions. It also supports comparative evaluation: two systems can share the same goal and action envelope while differing in how much selection is fixed by workflow and how much is delegated to the policy.

The formalism exposes one further fact. Disturbance ξ_t is what makes open-loop execution fragile. If the environment transition were perfectly known and deterministic, the policy could plan once. When disturbances alter state, observation and readback acquire value. Agent architecture is justified by uncertainty entering between intention and consequence.

When internal state becomes necessary Two paths show that identical current observations can require different actions when relevant history is hidden, whereas a fully observable state can be controlled reactively. Fully observable Partially observable Current state reveals route Reactive policy Correct action A B Same current observation History or belief state distinguishes path A from B Conditionally correct action
Figure 4. Memory is required when the current observation is not decision-sufficient. In the right-hand case, two histories produce the same visible state but justify different actions. The figure is illustrative and follows the standard partial-observability problem framing.

Thought experiment two: the clockwork courier

A courier robot is wound up each morning with a complete sequence of turns. It traverses a building without sensing anything. When the corridor is clear, it reaches the mail room. When a door is closed, it walks into the door until its spring unwinds. Is it an agent?

It has temporal persistence, an apparent goal and an effect channel. It lacks observation-dependent action. Calling it a very weak open-loop agent is defensible under a broad definition, but the label hides the precise capability engineers usually seek. It cannot be situated in the operational sense because the environment cannot correct its behaviour. The useful boundary is therefore closed-loop agency: later action is conditional on evidence returned after earlier action.

The thought experiment also prevents overclaiming. Feedback alone does not confer intelligence. The closed-loop courier may use a tiny rule table. It has gained sensitivity to consequence, not general reasoning. Agency and intelligence are related dimensions, not synonyms.

Remove this functionWhat remainsFailure exposedMore accurate label
Persistent criterionUnrelated responses to successive inputsNo episode-level progress or stopping judgementRequest-response component
Observation interfaceA plan driven only by initial contextCannot detect environmental changeOpen-loop workflow
Runtime action selectionA fixed schedule of effectsObservation cannot alter behaviourScripted automation
Effect channelRecommendations or simulated actionsNo causal influence on the target environmentAdviser or planner
Outcome readbackActions with assumed consequencesDuplicate, blocked or unknown effects go unnoticedUnreconciled automation

Part IIIWhat is optional, and what breaks

The minimum loop should not be confused with a modern agent product checklist. Several powerful capabilities sit above it. They improve performance in some environments and add new failure modes. Treating them as definitional makes simple agents invisible and complex workflows look more agentic than they are.

Planning is optional

A policy can map current observations directly to action. Rodney Brooks’s reactive robotics work showed that useful situated behaviour need not depend on a central symbolic world model. Planning becomes valuable when delayed consequences, dependencies or alternatives make local action insufficient. It is an enrichment of the policy, not the source of agency.

A fixed plan may also be superior in a stable environment. If every precondition is known and no observation can alter the route, replanning introduces variability without information. The correct baseline is therefore a deterministic workflow, not another elaborate agent.

Learning is optional

An agent can use a fixed policy forever. Learning changes the policy or internal representation from experience. Reinforcement learning formalises one route through repeated agent-environment interaction, but the interaction loop exists before learning is added. Conversely, a model may have learned from enormous data and still be deployed as a passive predictor with no continuing agency.

Language and reasoning traces are optional

Language models make policies more flexible because instructions, observations and candidate actions can share a textual interface. ReAct demonstrates how generated reasoning can be interleaved with tool actions and observations. Toolformer demonstrates that call placement and arguments can be learned. These are important mechanisms, yet neither a reasoning trace nor a tool call proves that a complete agent loop exists.

A system can emit persuasive plans while lacking a current world state. It can name a tool without authority to use it. It can receive a success-shaped response without verifying the postcondition. Fluency lives inside the policy; agency lives across the whole loop.

Agency is graded along separable axes

A single ladder from “non-agent” to “advanced agent” is attractive and misleading. Systems differ along several axes: duration of the episode, diversity of observations, discretion in action selection, consequence of effects, quality of outcome verification, capacity to learn and dependence on human approval. A thermostat is persistent but narrow. A coding assistant may have broad semantic discretion inside an isolated repository but no release authority. A fraud investigator may gather evidence over hours while every disposition remains a human decision.

These axes matter more than anthropomorphic surface cues. A named persona, first-person language and a conversational memory can make a component feel agentic while its actions remain a predetermined sequence. Conversely, a silent scheduler that diagnoses, chooses among recovery paths and verifies system state may instantiate stronger operational agency. The correct description should report the dimensions rather than compressing them into one flattering adjective.

Graded agency does not remove the minimum cut. It explains why borderline cases exist. A system may close the loop for information gathering but remain open-loop for consequential effects. It may preserve a criterion for one request but lose it after context compaction. It may observe current state but trust an unverified action receipt. Each case is partially agent-shaped, and each missing closure predicts a specific failure rather than a philosophical embarrassment.

Agency stack from minimal loop to optional capabilities A layered landscape showing a minimal closed loop at the base and optional additions of memory, planning, learning, language, tools and social coordination above it. Closed observation-action loop criterion · observation · action · consequence readback State under partial observability Planning and search Learning and adaptation Language, tools and social coordination Capability and failure surface grow Not implied consciousness moral agency
Figure 5. Agency is a base layer, while many celebrated capabilities are optional additions. The vertical order is conceptual rather than developmental. Higher layers can improve competence and enlarge the evaluation surface. The relationship is illustrative.

The serious negative control: a world that does not change

Suppose the warehouse map is complete, no obstacles move, every action succeeds deterministically and the objective never changes. A precomputed route and a closed-loop rover reach the dock by the same path. The agent adds sensor calls, state updates and failure branches without improving the outcome. In this environment, the simpler programme is the stronger design.

This control matters because almost any task can be made to look agent-shaped by wrapping it in a loop. The loop earns its cost only when new evidence can change a material decision. Otherwise, “agent” becomes a decorative name for orchestration overhead.

Open-loop and closed-loop behaviour under controlled variation Three synthetic scenarios compare a precomputed route and a feedback agent: static corridor, surprise obstacle and sealed corridor. Scenario Open-loop route Closed-loop agent Static corridor No observation changes Success · 6 moves Success · 6 moves Surprise obstacle One planned move is blocked Stops at obstacle Replans · succeeds Sealed corridor No route exists Fails after execution Stops · reports blocked The closed loop helps only when feedback changes the justified next action. It cannot create a route that does not exist.
Figure 6. Feedback has a discriminating benefit, not a universal one. Results are synthetic and deterministic, generated by the bundled grid sandbox. The static corridor is the negative control. The sealed corridor marks the failure boundary.

Where the mechanism ceases to help

Explicit failure boundary

Agentic control is a poor fit when the environment cannot provide decision-relevant observations, when no bounded action can improve the state, when outcomes cannot be reconciled, or when the required authority is too broad and irreversible to contain. More planning turns cannot repair those missing interfaces.

Interactive benchmarks reinforce the distinction between model competence and situated system performance. AgentBench evaluates models across several interactive environments rather than static question answering. OSWorld evaluates computer-use agents through executable tasks and reported a large gap between human and model performance in its original release. These results do not establish one universal level of agency. They show that perception, state tracking, action grounding and recovery can dominate success even when the underlying model is capable.

The same caution applies to safety. Current official work on agentic systems increasingly focuses on identity, authorisation, interoperable protocols and attacks that arrive through untrusted observations. Those concerns arise because the model is now embedded in an effectful loop. They are properties of the configured system, not of the model weights in isolation.

Part IVBuild the smallest honest agent

The most useful artefact for this argument is deliberately small. It holds the route planner constant and changes only the causal arrangement. The environment is a seven-by-five grid. Start and goal lie on a clear horizontal route. In the changing case, a pallet appears after two moves. The open-loop controller executes its original six commands. The closed-loop controller observes after every effect and replans.

Worked example: minimal

The sandbox uses public, synthetic data and deterministic breadth-first search. Actions are restricted to north, south, east and west. The gate rejects obstacles and out-of-bounds movement. Expected result: both controllers succeed in the static control; only the closed-loop controller succeeds after the surprise obstacle.

Minimal sandboxed agent

Run the same planner in three arrangements. The changing cases inject one obstacle after the second accepted move. The trace records observation, proposal, gate result, effect and readback.

Choose a run.

    Inspect the executable logic and assumptions

    The full JavaScript is embedded at the end of this page. Its central loop is reproduced here. The planner is deterministic. There is no model call, external service, hidden state or random seed.

    while (steps < stepLimit && !atGoal(position)) {
      observeEnvironment();
      const route = breadthFirstSearch(position, goal, blockedCells);
      if (!route) return stop("blocked: no route");
    
      const proposedAction = route[0];
      const receipt = gateAndExecute(proposedAction);
      record(receipt);
    
      if (receipt.outcome === "unknown") return stop("escalate");
      // The next iteration uses the position read back after execution.
    }

    Positive case: the closed-loop run detects the new obstacle and chooses a different route. Negative case: the static control shows no benefit from replanning. A sealed environment would make both controllers fail, although the closed loop could stop earlier with an explicit “no route” outcome.

    A production-shaped case: recovering a failed data job

    Worked scenario: production-shaped

    This is a synthetic operations scenario, not a deployment claim. A scheduled data job has missed its freshness objective. The system may inspect status, logs and upstream availability; propose one restart, and execute only after deterministic policy checks.

    A conventional retry script waits five minutes and reruns the job. That works when failures are transient. It is harmful when the upstream feed is incomplete, the prior run actually committed after a timeout, or the job version has been withdrawn. The agent-shaped design keeps the same restart command but surrounds it with an observation-action loop.

    First, it admits an intent: restore the dataset to its freshness objective without duplicating a completed load. Identity binds the run to an operations service account and one job. World state contains the scheduler status, last committed partition and upstream watermark. Context contains the runbook and current release rule. Reasoning proposes the next diagnostic or recovery step. Authority limits the system to read operations and at most one restart for that job version.

    Suppose the scheduler reports “failed” but the target table already contains the expected partition. Outcome evidence overrides the retry impulse, and the controller closes the incident without execution. Suppose instead that the upstream watermark is late. The controller waits or escalates because a restart cannot satisfy the objective. Only when inputs are complete, no prior commit exists and the release is valid does it propose a restart. The gateway supplies a narrow credential and stable idempotency key. Readback then checks the scheduler and target partition independently.

    The agent earns its place because different observations justify different next actions. It does not earn authority by diagnosing correctly. The command remains constrained by identity, policy and effect limits. It does not declare success from the restart response; it verifies the business postcondition.

    Production incident loop with unknown-outcome branch A timeline from freshness breach through observation, diagnosis, proposed restart, policy gate, execution, readback and one branch for an unknown outcome. Freshness breach Observe status watermark target state Diagnose wait close or restart Authority identity release one restart Execute stable intent narrow token receipt Read back the business postcondition fresh partition, correct watermark, no duplicate continue from verified state Unknown outcome stop writes · reconcile · escalate
    Figure 7. The production-shaped loop separates proposal, permission, effect and verified outcome. The scenario is synthetic. It illustrates why an “accepted” restart response is not equivalent to restored data freshness.

    Use the ten-field control record

    Once an agent can touch an organisational system, its loop should be visible as a control record. The following fields keep unlike functions separate. They also prevent the policy model from becoming the implied owner of every decision.

    FieldQuestion it answersData-job example
    IntentWhat outcome is being pursued?Restore freshness without duplicate load
    IdentityWho requested, proposed and executes?Scheduler, recovery policy and operations service account
    World stateWhat authoritative condition exists now?Run status, watermark, committed partition
    ContextWhich instructions and evidence are applicable?Current runbook, release status, job contract
    ReasoningWhich action is proposed and why?Wait, close incident, inspect or restart
    AuthorityWhich effects are permitted now?Read access and one bounded restart
    ActionWhat operation was actually attempted?Restart job version with idempotency key
    EvidenceWhich observations support the proposal?Scheduler, upstream and target references
    OutcomeWhat changed, including unknown state?Fresh partition verified, contradicted or pending
    Release and recoveryHow is capability widened, stopped or repaired?Shadow, read-only, one write, revoke and reconcile

    This record is not part of the minimal philosophical definition. It is the minimum responsible extension for effectful organisational use. The policy can remain probabilistic. The identity, authority, action and outcome records should be machine-checkable wherever the domain permits.

    Test the loop by breaking it

    Ordinary success cases are weak evidence because all five functions may agree when the world is cooperative. The release test should inject a different failure at each boundary. Change the objective after planning and check that stale actions are withdrawn. Return an observation for the wrong subject. Make the action gateway deny a well-formed proposal. Time out after the target system commits. Return “accepted” while the authoritative postcondition remains false. Crash after execution but before the controller records completion.

    Each fault has a distinct expected response. A subject mismatch should invalidate the evidence, not merely lower model confidence. A denied action should route to a legitimate alternative or escalation, not prompt the policy to rephrase the same effect. A timeout after possible commit should create an unknown-outcome state and prohibit another write until reconciliation. A false completion signal should be caught by independent readback.

    This is where the five-function synthesis becomes falsifiable. If removing consequence readback never changes safety or task utility in a representative environment, the task may not need an agent loop. If a deterministic workflow handles every injected branch under the same budget, the adaptive policy has not earned its surface. If the agent improves recovery without crossing authority gates, the mechanism has produced evidence for its intended role.

    Open hypothesis

    A component-removal audit of the five-function loop will predict important agent failures more reliably than counting tools, planning steps or agents. The hypothesis can be tested by mapping failures to missing or weak criterion, observation, selection, effect and readback functions across benchmark trajectories.

    A decision instrument: should this be an agent?

    The label matters because it changes architecture and assurance. Calling a fixed workflow an agent can invite unnecessary model choice and autonomy theatre. Calling an effectful loop “just a model” can hide state, authority and recovery obligations. Use the following sequence before selecting a framework.

    Decision tree for choosing an agent or simpler mechanism A branching decision instrument asks whether runtime observations can change a material decision, whether actions are bounded, whether outcomes can be verified and whether deterministic baselines suffice. Can a runtime observation change the justified next action? No Use a deterministic programme or workflow Yes Can the relevant world state be observed with known uncertainty? No Improve observation or retain human work Can actions be bounded, denied and safely recovered? No Keep the system advisory or simulated Can the intended outcome be verified independently? Do not grant live consequential action Build the smallest bounded agent then compare it with the deterministic baseline
    Figure 8. The first branching question is informational, not fashionable. An agent is justified when new observations can alter a material decision and the surrounding system can bound effects and verify outcomes. The tree is a practitioner decision instrument.
    1. Name the environmental uncertainty. State which fact can arrive only after the episode begins and which decision it can change.
    2. Define the criterion and terminal states. Include success, refusal, escalation, blocked progress and unknown outcome.
    3. Specify observations before prompts. Record source, subject, time, completeness and trust class.
    4. Classify actions by effect. Separate inspect, test, draft, commit, communicate and compensate.
    5. Keep authority outside the policy. Bind identity, purpose, resource, arguments, limits and expiry mechanically.
    6. Require outcome readback. Define the authoritative postcondition and what happens when it cannot be observed.
    7. Run the deterministic negative control. Use the same task data and budget. Keep the agent only when adaptation earns its added surface.
    Architecture decision rule

    Choose an agent when the task contains material observation-dependent branches. Choose a deterministic workflow when the state transition is known in advance. Choose an adviser when judgement is useful but live effects cannot be bounded or independently verified.

    Release should widen by operation, not by a vague title such as “autonomous worker”. Begin in simulation or replay. Then allow live read-only observations, followed by drafts. Add one narrow reversible effect only after authority, idempotency, postcondition verification and containment have been tested. This staged path turns autonomy into an evidence-backed property of a specific action, not a marketing claim about the whole system.

    This paper stops at the functional boundary. The later question of how reasoning and action should interleave is developed in ReAct Beyond the Prompt Pattern. The platform controls required once several specialists and services participate are developed in Anatomy of a Production Multi-Agent System.

    Compact glossary

    Programme
    An explicit or learned procedure that maps supplied state to output. It can be a component of an agent without being an agent by itself.
    Policy
    The mechanism that selects a proposed action from current observation, task criterion and any relevant internal state.
    Environment
    The bounded external state the system can observe or affect for the purpose of one analysis.
    Closed loop
    An arrangement in which effects change later observations and those observations can alter subsequent action.
    Authority
    An independently enforced permission to attempt a specific effect under a stated identity, purpose, resource and limit.
    Outcome readback
    An observation of authoritative state used to decide whether the intended postcondition occurred, failed or remains unknown.

    The decision changes at the boundary

    A programme does not become an agent because its code contains a large model, a planner, a memory store or a tool catalogue. It becomes an agent policy when a configured system preserves a criterion, observes an environment, selects an action at runtime, can create an effect and receives consequence as later evidence.

    That boundary changes design. It moves attention away from model spectacle and towards the interfaces that make action situated: task state, observation contracts, effect channels and postcondition checks. It also makes limits visible. A reactive controller may be an agent without being broadly intelligent. A language model may be highly capable without owning a continuing task. A fixed workflow may outperform both when no material uncertainty enters during execution.

    The smallest honest agent is the smallest closed loop that adaptation can justify. Build that loop, remove each function in turn, and compare it with a deterministic baseline. Add planning, learning, memory and language only when the environment demands them. Add authority only through an external gate. Call the result successful only when the world, not the policy’s prose, confirms the intended outcome.

    Source ledger

    Open the source register and extended notes
    1. Primary: Michael Wooldridge and Nicholas R. Jennings, “Intelligent Agents: Theory and Practice”. Used for classical properties and the absence of one universally accepted definition.
    2. Primary: Stan Franklin and Art Graesser, “Is it an Agent, or Just a Program?”. Used for situatedness, temporal continuity, feedback and the agent-relative-to-environment distinction.
    3. Primary: Rodney A. Brooks, “Intelligence Without Representation”. Used as evidence that reactive situated control need not begin with a central symbolic world model.
    4. Primary: Pattie Maes, “Agents that Reduce Work and Information Overload”. Used for continuing autonomous assistance and interaction with users and environments.
    5. Primary: Anand S. Rao and Michael P. Georgeff, “BDI Agents: From Theory to Practice”. Used to distinguish one rich agent architecture from the minimal functional boundary.
    6. Primary: Michael E. Bratman, David J. Israel and Martha E. Pollack, “Plans and Resource-Bounded Practical Reasoning”. Used for the role of plans and intentions under limited computation.
    7. Primary: Leslie P. Kaelbling, Michael L. Littman and Anthony R. Cassandra, “Planning and Acting in Partially Observable Stochastic Domains”. Used for the conditional need for belief or memory state.
    8. Primary: Richard S. Sutton and Andrew G. Barto, Reinforcement Learning: An Introduction. Used for the standard agent-environment interaction framing and to separate agency from learning.
    9. Primary: Shunyu Yao et al., “ReAct: Synergizing Reasoning and Acting in Language Models”. Used as a later mechanism for interleaving reasoning, action and observations.
    10. Primary: Timo Schick et al., “Toolformer: Language Models Can Teach Themselves to Use Tools”. Used to distinguish learned tool calling from complete system agency and authority.
    11. Primary benchmark: Xiao Liu et al., “AgentBench: Evaluating LLMs as Agents”. Used for the move from static answers to interactive environment evaluation.
    12. Primary benchmark: Tianbao Xie et al., “OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments”. Used for executable computer-use evaluation and the original human-agent performance gap.
    13. Official: US National Institute of Standards and Technology, Agentic AI programme and AI Agent Standards Initiative. Used for current emphasis on goal-driven interaction, interoperability, identity and security.
    14. Official: US National Institute of Standards and Technology, concept paper on software and AI agent identity and authorisation. Used for the separation of agent capability from access control.
    15. Practitioner sources: Rajesh Ranjan Mahapatra, “ReAct Beyond the Prompt Pattern” and “Anatomy of a Production Multi-Agent System”. Used only to define the boundary to later papers and avoid duplicating their production-control arguments.