A coding agent can implement a rule you never agreed on. The result may compile beautifully and still do the wrong thing. Before asking for another feature, write down one decision the software must make, the words it uses and the examples that prove you mean the same thing.

A potato engineer points a robot to a What should happen board with three blank example cards.
Agree on expected behavior before generating its implementation. AI-generated conceptual illustration.

Why this is worth doing now

In an August 20, 2026 essay surfaced by GeekNews this week, Miłosz Smółka argues that domain understanding and shared language remain important when AI writes code. He also cautions against applying advanced domain-driven design patterns to simple projects. That is an argument from a practitioner, not a benchmark proving that one architecture wins. Read the original Three Dots Labs essay.

The practical response here is deliberately smaller than an architecture migration: a one-rule brief. Use it when people disagree about what a status means, when an agent invents an exception, or when a passing test seems to validate the wrong behavior. It complements a coding handoff record: the handoff says where work stopped; this brief says what one piece of behavior is supposed to mean.

Choose one decision, not an entire product

Start with a sentence that has an actor, an action and a limit. “Build booking management” is too broad. “A booking owner may cancel a confirmed room booking before its start time” is small enough to interrogate. The example below is fictional product policy, not a recommendation for a real venue.

For the first slice, explicitly exclude refunds, recurring bookings, staff overrides and notification delivery. Those may matter later. Naming them now prevents an agent from quietly designing all four while you are trying to settle one boundary.

Give the important words a local meaning

A potato points at a blank glossary with Term, Meaning and Not this columns.
Use the glossary to separate a local meaning from a misleading interpretation. AI-generated conceptual illustration.
TermMeaning in this featureDoes not mean
Booking ownerThe authenticated person who owns this bookingAny signed-in person
Confirmed bookingA booking whose current stored status is confirmedA draft or an expired hold
Before startThe trusted current instant is strictly earlier than the stored start instantEarlier than or equal to start
CancelledThe booking is no longer active, with its cancellation recordedA deleted history record

These definitions belong to this example. Do not automatically rename a “customer” in billing to match a “member” in booking. First ask whether the two words refer to the same concept and who owns the translation. A glossary should clarify a boundary, not erase one.

Write examples that could disagree with the implementation

Cucumber's original Example Mapping article distinguishes a story, rules, concrete examples and unanswered questions. It describes a collaborative discovery technique rather than a requirement to write formal test syntax in the meeting. Use that distinction here: if you cannot name the expected result, record a question instead of pretending you have a test. See Matt Wynne's December 8, 2015 explanation.

Before, At and After cards show circular markers, with a potato examining the center marker.
Three boundary cases to investigate; colors do not encode permitted or rejected outcomes. AI-generated conceptual illustration.

For this fictional rule, let the booking start at 10:00:00 UTC. Fix the clock in the test rather than relying on the time at which the test happens to run. All examples use the same date and a confirmed booking unless stated otherwise.

CaseGivenExpected result for this policy
Ordinary successOwner; confirmed; current instant 09:30:00 UTCCancellation succeeds; the booking is retained as cancelled
Just beforeOwner; confirmed; 09:59:59 UTCCancellation succeeds
Exact boundaryOwner; confirmed; 10:00:00 UTCRequest is rejected; stored booking stays confirmed
Too lateOwner; confirmed; 10:00:01 UTCRequest is rejected; stored booking stays confirmed
Wrong personA different signed-in member; 09:30:00 UTCNo cancellation and no disclosure of the booking's private details
Repeated requestOwner; booking already cancelledUnresolved until the product owner chooses the retry behavior

The table intentionally leaves one case open. Decide whether the second request should return the existing outcome or a specific error, and what an audit entry should do. A model choosing the friendliest message is not the same as the team choosing a policy. Also settle where the trusted clock is evaluated and how simultaneous requests affect stored state; a client-side disabled button alone does not enforce this rule.

Keep unknowns visible and assign an owner

Two potato colleagues consider a Question card beside a closed toolbox labeled Later.
Keep unresolved decisions visible and defer the affected implementation. AI-generated conceptual illustration.

Put each unresolved question beside the decision it blocks. “What about time zones?” is vague. “Which instant does the server compare, and how is a user's local start time converted?” gives someone a concrete investigation. Write an owner and the evidence needed to close it. Do not include real customer records or credentials in a prompt when a made-up example will do.

An agent can propose options and enumerate edge cases. Ask it to mark assumptions, not promote them into requirements. If a question changes the permitted action or the data kept, resolve that question before shipping the affected behavior.

Copy this one-rule brief

Feature / rule:
Decision owner:
Terms and their local meanings:
Allowed actor and action:
Required starting state:
Exact time / quantity / status boundary:
Expected resulting state:
Forbidden changes or side effects:
Success example:
Boundary example:
Rejected example:
Repeated or simultaneous request behavior:
Unanswered questions and owners:
Explicitly excluded work:
Evidence required before merge:

Then give the agent a bounded instruction: “Restate this rule and list contradictions or missing outcomes first. Do not implement unresolved policy. Once the brief is agreed, propose the smallest change and tests that cover each decided example. Preserve unrelated behavior. Report which checks actually ran and which remain untested.” This is a suggested prompt, not a guarantee that an agent will follow it.

Review the rule, the change and the proof separately

An empty Rule Review checklist lists Words, Examples, Boundary, Owner and Evidence.
Check the agreed rule separately from the code and the evidence that it works. AI-generated conceptual illustration.
  1. Words: Do the brief, function names and test names describe the same concept?
  2. Examples: Does each decided row have an assertion about the resulting state, not only a success message?
  3. Boundary: Is the equality case tested explicitly? Are units and time references consistent?
  4. Owner: Did a responsible person settle policy questions rather than leave generated assumptions in place?
  5. Evidence: Which test command ran, against which revision, and what was skipped?

For the booking example, a green ordinary-success test is not enough if the exact-start test is missing. Equally, a complete brief does not prove that storage failures, authorization or concurrency are safe. Review those implementation concerns in the actual system and keep untested areas visible.

The useful stopping point is modest: one small decision is understood, its important examples have agreed outcomes, and the code can be checked against them. You do not need a cathedral of diagrams to stop a robot from enthusiastically building the wrong cupboard.