# Agentic Engineering

> The key concept this garden keeps returning to: building software where an agent does the work and a human sets the contract, and the smaller notes that grow from it.

## The loop

An agent reads a spec, acts, and verifies its work against it: the shape every atom here refines. Plan first, then write a testable Definition of Done before execution. Getting the contract sharp is most of the job.

## Constraints over capability

More tools and autonomy make an agent harder to control, not easier. Reliability comes from tighter constraints, not more prompting. [What I learned experimenting with OpenClaw for analyst workflows](/garden/openclaw-analyst-workflows) treats this in full.

## Infrastructure

Runtime, sandboxes, and durable schedules let an agent work across many turns without losing the thread. The platform underneath is a key concept in its own right, treated in full elsewhere.

Main note(s): [Agentic AI Stack](/garden/agentic-ai-stack)

## A sandbox you can carry

The work happens inside a [dev container](https://code.claude.com/docs/en/devcontainer): the agent runs non-root with only the repository mounted, so a run's blast radius is the project, not the machine, and credentials stay on the host. The environment is written down, so it rebuilds the same anywhere. That isolation is what makes it reasonable to loosen the leash.

## From capable to operational

Capability was the cheap part. Keeping a capable agent stable enough to run unattended is the work: a measurable purpose, a verifiable contract, an affordable model, a lean harness whose patches are mine, and one [gateway](/garden/model-gateway) holding every key, budget and trace. [Capable was the easy part, operational was the work](/garden/openclaw-to-nanoclaw) is where I rebuilt on that lesson, and the gateway is the seam between a demo and a fleet you can run and watch.

## Verification

A second, skeptical reader catches the plausible-but-wrong result the first one talked itself into, so adversarial checks beat one confident pass. A Definition of Done works at two levels, task (when a run is complete) and operational (when to stop experimenting). An output contract, a fixed shape the answer must fill, makes results comparable across runs.

## Don't interrupt the cook

Stepping in mid-run pours more context into a process that was already confused, and usually makes the output worse. Park the idea, let the run finish, then judge it against a baseline.

## What's next

The fleet runs today on a small VPS behind a gateway I own, enough to operate but a single point of failure. The next rebuild moves it onto [AWS AgentCore](https://aws.amazon.com/bedrock/agentcore/), trading self-run servers for managed runtime, memory, identity and observability, so the same spec-and-contract agents can back webapp agentic platforms.
