| name | roadmap |
| description | Use when work spans weeks and the reasoning behind it is piling up โ returning to a project after time away, "why did we decide X?", "where did we land on this?", "what's still open?", onboarding someone onto a long-running build, or a choice everyone remembers making and nobody can find. Not one session's state (that's `handoff`), not scoping one feature (that's `spec`). |
MasterMind โ Map
Long work loses its reasoning long before it loses its code. Six sessions in, the why behind a choice
is gone, and the seventh session relitigates it โ or silently undoes it. This is the one artifact that
outlives the sessions: a decision map the project owns and appends to for the life of the work.
The file โ five sections
.mastermind/MAP.md, one per project. Nothing that isn't one of these five belongs in it.
- Destination โ what done looks like, in two or three lines. What every decision is measured against.
- Decisions so far โ dated, one line each, each with its why. Append-only.
- Open questions โ what you can state precisely and cannot answer yet.
- Not yet specified โ known unknowns, deliberately unplanned.
- Out of scope โ and what it would take to change that.
A decision entry, and the reversal of one, look like this:
2026-03-04 ยท Sessions live in Postgres, not Redis โ one datastore to operate, and
nothing needed sub-millisecond reads. โ specs/auth.md
2026-05-19 ยท REVERSES 2026-03-04 โ sessions move to Redis. The read path became the
p99 at 340ms once org switching landed. The original reason still held;
the traffic changed. โ PR #412
Only section 2 is append-only. The other four describe the present and get rewritten freely โ a
resolved question leaves "Open questions" the moment it becomes a decision.
Fog of war โ don't chart what you can't see
The test for "Open questions" is whether you can state the question precisely today โ not whether
you can answer it. "Which queue runs the nightly export?" is an open question. "How does billing
work?" isn't a question yet; it's a region of fog.
Write the fog as one line naming the unknown and what will lift it: "Billing model โ unspecified until
the pilot returns pricing feedback." That line is the whole entry. A map carrying a plausible plan for
month three reads as decided, and the next session builds against something nobody ever chose.
Decisions are append-only
Never edit or delete a decision entry. A reversal is a new dated entry naming the one it reverses
and what changed. The excuse to catch in yourself: "the old line is wrong now, so leaving it is
misleading." It was true when it was written, and when it stopped being true is the information โ
the map exists to answer "why is it like this?" nine months later, and an edited history cannot.
An index, not a store
Each entry is one line plus a pointer โ to the spec, the PR, the file, the issue. Detail stays where
it already lives and stays current there. A map that reproduces content becomes a second source of
truth, and the copy is the one that goes stale (~/.mastermind/engineering/core/rigor.md refuse-list).
One open question per session
Resolve one open question per session. A session that closes five has been guessing at four. A
question leaves "Open" only when something outside the map settled it โ a measurement, a call from the
user, code that now exists โ and the entry that replaces it says which.
When it gets written
An entry is earned at the same moment the journal line is: the verdict closing a non-trivial task
(~/.mastermind/engineering/core/rigor.md). The journal records what happened; the map carries only
the decisions still shaping the work. Promote from the journal โ never copy it across.
Map vs. handoff vs. spec
Three horizons, and the boundary is what each one outlives.
spec โ one ask, decided before it's built. Retired when that thing ships.
handoff โ one session's live state, so a reset doesn't cost the thread. Thrown away on resume.
roadmap โ the project's decision history, kept for the project's life. It points at specs and
handoffs; it never absorbs them.
Gotchas
- Open it before planning, not after. Coming back cold, the reflex is to re-derive the state from
the code โ which reads the what and misses every why, and reopens settled ground.
- Out-of-scope work never quietly graduates back in. Scope discipline is
rigor.md; the part that's
the map's job is that moving an item out of "Out of scope" is itself a dated decision entry โ who
asked, and why now.
- Write it for someone who wasn't there. A line that only makes sense to whoever was in the session
fails at the two moments the map is for: the return after weeks away, and the new person.