Skip to content

Programming with human language: defining intent before the agent builds

Published 2 October 2026 · Bella Belgarokova · 10 min read.

Insights

A coding agent needs a clear definition of the system it is building. If we leave its meaning, scope and rules undefined, the agent makes those decisions while writing the code.

Development through human language lets us delegate more of software construction. We can describe an outcome and ask an agent to work out the implementation. That makes more work practical, but it also allows construction to proceed while important decisions remain unstated.

In my approach, three documents establish the system: a domain profile, invariants and intent. They give the agent the meanings, rules and purpose it needs to make implementation decisions. To understand why this matters, it helps to examine how formalisation has changed through computing history.

How formalisation moved

Formalisation is the work of turning an idea into explicit objects, relationships, operations and rules that a computer can act on.

Someone must bridge the distance between “calculate the value of these holdings” and the operations that produce the answer. Over time, we have delegated more of that translation to machines. The following progression compares what we express with what translates it into execution. These modes overlap and remain in use.

ModeWhat we expressWhat translates it into execution
Physical configurationConnections and settings that establish a procedureThe machine executes the configured procedure
Machine instructionsExplicit operations, operands and control transfersThe processor decodes and executes the instructions
Assembly languageMachine operations expressed through symbolic instructions and labelsAn assembler resolves symbols and produces machine instructions
Higher-level languagesBehaviour expressed through functions, types, collections and other abstractionsCompilers, interpreters and runtimes realise those constructs
Declarative languagesRequired results, relationships or constraints within a defined languageAn engine determines how to obtain the result within that language’s capabilities
Human-language developmentGoals, domain concepts, behaviour, constraints and examplesAn agent interprets the description, develops a formal representation and constructs an implementation

Physical configuration embodied the procedure in connections and settings. Stored-program computers made instructions available from memory, reducing the need for physical program setup. The Computer History Museum’s account of the stored program describes this transition. It changed how programs were held and modified; symbolic and higher-level languages changed how people expressed them.

Higher-level languages let programmers work further from machine instructions. A programmer could define holdings as records, collect them in a list and express a valuation calculation through functions. The language implementation handled much of the lower-level translation. The programmer still had to decide what a holding contained and how its value should be calculated.

Declarative languages delegated part of the procedure as well. A SQL query can specify which records to retrieve while leaving the database to choose an execution plan. The request still has to use the language’s vocabulary and rules.

What separates human-language development from the earlier modes is the point at which automated translation can begin. In conventional programming, we express the problem in a programming language before its compiler or interpreter can process it. With an agent, assistance can begin while we are still deciding how the problem should be represented.

Human language moves the boundary

A programming language has a defined syntax and rules for interpreting its expressions. Those rules can have gaps and implementation-specific behaviour. Even the Python language reference distinguishes its formal grammar from its prose descriptions of meaning. Nevertheless, a program is interpreted against an established language definition.

Human-language development introduces another interpretive step. Before generating a program, the agent must determine what our description means for this particular system.

“Calculate portfolio value” sounds clear until we ask which holdings belong to the portfolio, which price applies to each instrument, how currencies are combined and what happens when a required price is missing. An agent can choose answers and produce executable software. The code can run successfully while calculating something different from what we intended.

We can delegate the work of formalisation. A human and an agent can establish definitions together, explore alternatives and expose contradictions. But we still need a basis for deciding which interpretation is correct.

Asking an agent to act as an architect or backend engineer does not supply that basis. A role names a responsibility. The particular system still needs to be defined.

Three definitions for construction

The domain profile, invariants and intent answer different questions. They constrain construction together; they are not three implementation stages.

DocumentQuestion it answersWhat it owns
Domain profileWhat do the concepts mean?Shared objects, relationships, operations and domain laws
InvariantsWhat must every acceptable implementation preserve?Construction rules, ownership boundaries and verification obligations
IntentWhat should this particular system do?Purpose, scope, decisions and required behaviour

A separate engineering specification then maps these definitions into mechanisms: components, data representations, interfaces and runtime behaviour. A mechanism choice that changes the intended meaning or behaviour requires the relevant definition to be reconsidered.

The following examples use a crypto-options engine. The same separation applies wherever a short request hides substantial domain decisions.

Domain profile: establishing meaning

A domain profile establishes the concepts the system uses, what they mean, how they relate and which transformations preserve that meaning.

For an options engine, “price” is insufficient. A bid, a mark, a last trade and a settlement fixing serve different purposes. Each value needs the unit, basis, source and time required to interpret it.

A mark used to value a position does not become an executable bid. If a calculation permits substitution, the rule must be explicit and the value must retain its identity. Otherwise, an agent can connect two components through a field called price while changing the economic meaning of the calculation.

The profile also defines how operations compose. Values can be combined only when their meanings are compatible. Sensitivities require compatible factors, units and valuation contexts. Amounts in different currencies require an explicit conversion before they can form a monetary total.

Missing information needs its own meaning. If a required holding quantity is unknown, treating it as zero produces a determinate answer by discarding uncertainty. The profile must establish how that uncertainty affects the result.

Its structure follows those responsibilities:

PartWhat it establishes
Semantic boundaryThe meanings the profile owns and the authorities it relies on
Foundational vocabularyIdentity, quantities, units, time, provenance and availability
Domain objectsInstruments, holdings, obligations, market facts and analytic objects
Operations and lawsValid transformations, conditions for composition and preserved properties
State relationshipsHow accepted, pending and prospective states relate
Scope and extensionAdmitted markets, external bindings and the introduction of new meaning
VerificationExamples and laws that establish conformance

The profile leaves strategy choices to the intent: the profile establishes what a risk measure means, and the engine’s intent establishes which limits apply.

Invariants: establishing construction rules

Invariants state the properties every acceptable implementation must preserve. Here, the document owns engineering rules; domain laws remain in the profile.

For example, an exposure calculation can receive positions and prices as inputs. If it fetches prices from an exchange during the calculation, its result also depends on timing, connectivity and external state. An invariant requiring calculations to have no hidden external actions makes that boundary explicit.

Each rule needs a recognisable violation and a way to check it:

InvariantRequired behaviourEvidence
Each concept has one ownerRisk calculations use the canonical instrument definitionDependency and type review
Calculations have no hidden external actionsRequired market facts arrive as inputsBoundary checks and behavioural tests
Expected failures are explicitAn unavailable exchange response produces a failure outcomeTests of failure paths and their consequences
Inputs have no hidden defaultsMissing data cannot silently become a convenient valueTests with absent and incomplete inputs
Dependencies follow declared boundariesEngine logic reaches a venue through the declared capabilityImport checks and boundary review

A compact invariants document records authority, the construction model, permitted dependencies, individual laws, explicit exceptions and acceptance conditions. Each law states its property, scope, violation and the evidence that establishes it.

These rules let the agent choose implementation details without reopening ownership and boundary decisions on every task.

Loading the document does not establish compliance. Import checks can detect a forbidden dependency; they cannot prove that an exposure calculation is correct. Verification must match the property being claimed.

Intent: establishing required behaviour

Intent defines what the particular system should do. For a trading engine, it records the economic purpose, permitted activities, decision rules and required responses as conditions change.

“Build a crypto-options engine” leaves these choices open. An engine that evaluates opportunities, one that places live orders and one that manages existing positions have different mandates. If the purpose is evaluation, placing orders exceeds the intent even if the agent can implement execution.

The intent is developed jointly by a trading expert and an agent. The expert supplies or approves trading judgements. The agent helps expose ambiguity, test consistency and explore consequences. Unmade decisions remain explicit.

The document follows the engine’s economic responsibilities:

PartWhat must be decided
Purpose, hypothesis and mandateThe outcome pursued, its economic basis and permitted activities
Observations and measuresWhat the engine must know and how it interprets those observations
Opportunities, selection and sizingWhich alternatives it considers, how it compares them and how much exposure it may create
Structures and executionAcceptable terms, partial outcomes and unavailable execution
Position management and settlementHedging, adjustment, exit, expiry and remaining obligations
Risk and human authorityHard constraints, exceptional behaviour, conflicting decisions and human decision rights
Examples and readinessExpected decisions, prohibited behaviour and unresolved choices

Suppose required market data is missing. A candidate that fails its trading conditions differs from one that cannot be evaluated. The intent must state what the engine may do in each case, including its obligations toward existing positions.

Concrete examples make those distinctions checkable before implementation. An example records holdings and commitments, observations and known gaps, applicable rules, alternatives, the expected decision and prohibited behaviour.

If the written rules cannot explain the expected decision, something remains undefined. The example helps locate that gap. It does not replace a missing rule or establish that a strategy will be profitable.

The engineering specification chooses how to realise the behaviour. If a proposed mechanism would change a trading decision, that choice returns to the intent for resolution.

From definition to evidence

Defining the system before construction does not require us to supply the finished program. It separates the decisions the agent may make from the decisions that establish what the system is, and records which meanings and obligations implementation choices must preserve.

I use these documents as a basis for construction and review. Their value is judged by the software: whether it preserves the defined meaning and produces the required behaviour, and how much correction it needs. A complete document is useful only when its definitions govern the implementation.

Codebase architecture is the next concern: how to organise the software so that ownership, composition and dependencies reflect the system we have defined. Enforcement follows separately, through checks, hooks and an agent control layer that provide evidence that construction followed those definitions.