A1.04 · Two layers · dive 1
The roadmap layer
The roadmap is the plan of delivery: an ordered list of rungs, each a one-line intent plus a definition of done. It answers what next, and in what order — and nothing more.
The roadmap points at the specs; it never defines behaviour. Because it carries no behaviour, re-ordering it costs nothing: promote a rung, drop one, split another, and not a single spec changes. That cheap re-planning is the whole reason the layer is kept separate. Re-order the plan on the right; watch the order move and no spec follow.
Re-order the roadmap · pick an ordering
What the roadmap layer is
The roadmap is the top of the two layers from A1.04: it answers how we deliver — the milestones, the iterations, the Author/Operator loop — as a coarse, ordered sequence of rungs. Each rung on the roadmap is a one-line intent plus a definition of done: “a branded id; done = it decodes to its type.” That is all. The behaviour — the contract, the fields, how it is proven — lives one layer down, in the spec, authored later when the rung is sharpened (A1.03.2).
So the roadmap points at the specs; it never holds them. A roadmap item says when and whether a rung is taken; the spec says what it does and how it is proven. Put behaviour into the roadmap and it stops being a plan: it becomes a frozen, up-front specification of everything at once — the big-bang spec (A1.01.2). The whole value of the layer is that it stays coarse.
- roadmap layer
- Answers how we deliver — a coarse, ordered sequence of rungs. Points at the spec layer; never defines behaviour.
- a rung
- A one-line intent plus a definition of done. Not a spec — the spec is authored later, when the rung is sharpened.
- re-planning
- Re-ordering the roadmap as value, risk, and dependencies become clearer. Cheap, because no behaviour is encoded in the order.
- the boundary
- Roadmap = when and whether; spec = what and how it is proven. Behaviour in the roadmap is the big-bang spec.
The layers split the same way the roles do: the roadmap is the order of work; the spec is the contract for one piece of it. Keep behaviour out of the order, and the order stays cheap to change.
A plan you can change
A roadmap holds no behaviour, so re-ordering it costs nothing. Promote a rung, drop one, split another, and not a single spec changes — because the specs are not in the order, they are pointed at by it. That is the point of the layer: delivery can adapt to what the loop learns without disturbing the definition of any rung. The moment the roadmap carries the behaviour itself, that cheap re-planning is gone.
The line is the granularity. A roadmap rung is coarse on purpose — one line and a tick — and a coarse rung is a pointer you can move. Cram the full behaviour spec into that same slot and the slot is no longer a plan you re-order; it is a contract you would have to re-negotiate to move. Switch the rendering below to see one rung at each granularity, and which one a roadmap is allowed to hold.
One roadmap item, two granularities · switch the rendering
A roadmap rung is coarse on purpose: hold the order, point at the behaviour — and the plan stays cheap to re-order.
The roadmap on the Portal
The Portal roadmap — the learning platform this course builds — is a sequence: a branded id, then storing one event, then one read model, then a Telegram command, then the dashboard. Each is one line plus a definition of done — “an id that decodes to its type” — not a spec. The id's behaviour lives in its spec, never in the order.
As the loop runs, the order is re-planned. If the dashboard rung turns out to depend on the read model, the read model is promoted ahead of it: the order changes, and no spec is touched. The plan adapts to what the Portal taught; the definitions of the rungs do not move with it.
# The Portal roadmap — order only; each rung is a line + a definition of done, never a spec. roadmap = [ "branded id", # done: decodes to its type "store one event", # done: appended & replayable "one read model", # done: projects the count "telegram command", # done: replies to /start "dashboard" # done: renders the model ] # Re-plan: promote a dependency. The order moves; not one spec does. roadmap = List.delete(roadmap, "one read model") |> List.insert_at(3, "one read model") # The behaviour of a rung is pointed at, not held: it lives in the spec layer. # id = Portal.ID.generate(:user) · Portal.ID.decode(id).type == :user (A1.04.2)
The principle
Plan delivery in a coarse, re-orderable layer that points at the specs — order and acceptance in the plan, behaviour in the contract it points at.
On the Portal
The rung sequence (id → event → read model → command → dashboard), re-ordered freely; each rung's behaviour lives in its spec, never in the order.
The roadmap is a plan you can change because it holds order, not behaviour — the cheap re-planning is the whole reason the layer is separate.
Recap — order, not behaviour
The roadmap layer answers how we deliver: a coarse, ordered sequence of rungs, each a one-line intent plus a definition of done. It points at the specs and never holds them, so re-ordering it is free — promote, drop, or split a rung and no spec moves. The one failure to avoid is behaviour creeping into the order, which turns the plan back into the big-bang spec. With the order settled, the next dive opens the layer below, where the behaviour of each rung is actually written.
Next in A1.04: A1.04.2 · The spec layer — the one place a rung's behaviour is defined and made provable, authored when the rung is sharpened.
References
Primary sources for ordered, re-plannable delivery, and where the roadmap layer connects in the course.
Sources
- Cohn, M. — Agile Estimating and Planning — release planning over an ordered product backlog.
- Schwaber, K. & Sutherland, J. — The Scrum Guide — the ordered product backlog and re-ordering as the plan is refined.
- Beck, K. — Extreme Programming Explained — the planning game: stories ordered by value and risk.
Related in this course
- A1.04 · Two layers — the module hub.
- A1.04.2 · The spec layer — the next dive: where behaviour is written.
- A1.04.3 · The single source of truth
- A1.01.2 · The big-bang spec — what behaviour in the roadmap becomes.
- A1.03.2 · One turn of the loop — where a rung is sharpened into its spec.
- A1 · Why an Agile Agent Workflow — the chapter.