Deciding what travels with every request, and what gets looked up
Twelve steps, four parts, three runnable labs — sixty-four arrangements each.
- All 12 steps, read online
- Runnable labs to download (plain Python, runs offline)
- Free updates whenever it's revised
- 14-day refund (conditions)
Introduction
You have five or ten pieces of context — a style guide, a runbook, an API reference, an escalation policy — and no principle for which of them travel with every request and which get looked up. So they all travel, or none do, and both are wrong.
Why this is not a prompt problem
A language model is stateless. It retains nothing between calls, cannot read your filesystem, and knows nothing about your product. It receives one block of text and returns one block of text, and your program builds that whole input on every call.
So the question is not how to word the instruction. It is which of your material is in the block at all — and that is a design decision made per piece, not a setting.
What context engineering is
Context engineering is the practice of deciding, deliberately and measurably, what text goes into each model request.
Every piece of context has exactly one placement. It is carried — attached to every request whether or not this one needs it — or it is fetched, looked up on the requests where something triggers it. There is no third option, and the two fail in opposite directions.
| placement | in the block | how it fails |
|---|---|---|
| carried | every request | waste — paid for on requests that did not need it |
| fetched | only when its trigger fires | absence — needed on a request the trigger missed, and nothing reports it |
Those two failures are the whole subject. Reduce one and you increase the other, which is why neither “carry less” nor “fetch more” is a strategy.
Is this for you?
It depends on how much material you have and how unevenly it is needed.
| if… | then |
|---|---|
| everything you have fits in the window with room to spare | carry it all and stop — you do not need this volume |
| one piece is a large share of everything you have | you have a real decision, and step 9 is the one to read |
| some material is needed rarely and is expensive to be without | you have a real decision, and step 10 is the one to read |
| you cannot say which of your pieces are reliably fetchable | start at step 5 — on one job here that single property decides everything |
What you will get
A procedure of eight questions with a real exit at the third, a one-line rule you can apply without running anything, and the boundary where that rule stops working. Three runnable labs carry it: thirty turns each, six pieces of context each, and all sixty-four ways of arranging those pieces run in full — so the best arrangement here was found rather than argued for.
How to read the source labels
Every step is labeled with where its content comes from, so you always know whether you are being told something or shown a measurement.
| label | means |
|---|---|
| concept | argued from first principles, quotes nothing from a lab |
| measured | a lab compares arrangements and reports the difference |
| hands-on | you run it on your own material |