Investigation Map

Intent

Plan work that is bigger than one session and wrapped in fog — the idea exists, the way isn't visible — as a shared map of investigation tickets on the issue tracker. The agent closes one ticket per session, each answer clears a patch of fog — until the way to the destination is clear. The map produces decisions, not code: it is done when nothing is left to decide.

Also known as

Wayfinder, wayfinding; the /wayfinder skill from Matt Pocock's pack.

Problem

A big, loose idea has arrived: "we're moving to a new payment platform", "we're doing an enterprise tier". It is clearly bigger than one session — and, worse, the way isn't visible: it's not even known which decisions lie ahead.

  • Writing a specification right away is premature specification at full size: half of the pinned-down "requirements" will turn out to be guesses.
  • The Feature List doesn't fit: it works from a known end state, and here it isn't known what exactly to build.
  • Sorting it out in one long conversation — the knowledge dies with the session, and a second person or a second agent can't join in parallel.
  • Keeping the questions in your head means re-remembering every time what has been decided, what is blocked, and what is even left.

Solution

Three moves: name the destination, chart the map, walk it one ticket at a time.

The destination. The first act is fixing what the end of the road looks like: a specification ready to hand into the pipeline; a decision made; a change completed. The destination fixes the scope — whatever lies beyond it doesn't get onto the map.

The map. One tracker issue with the map label — an index, not a store:

  • the destination — one or two lines every session orients to;
  • decisions — one line per closed ticket with a link: the gist on the map, the detail in the ticket;
  • not yet specified — the fog of war: questions that can be felt but not yet stated precisely;
  • out of scope — what has been consciously cut: the frontier doesn't go past the destination.

The tickets. Child issues of the map, each one question sized to a session. A ticket has a type: research — the agent reads documentation and brings back a summary; prototype — a cheap artifact to argue over (see the Throwaway Prototype); grilling — a conversation with the developer, one question at a time; task — manual work without which a decision can't be made (set up a sandbox, provision access). Blocking uses the tracker's native relationships: the frontier — open, unblocked, unclaimed tickets — is visible right in the tracker's UI.

The work. A session loads the map at low resolution, takes the first frontier ticket, claims it (the assignment is the claim — parallel sessions skip it), resolves it, records the answer as a comment, closes it — and adds a line to the decisions. The answer usually clears some fog: whatever can now be stated precisely graduates into new tickets. One ticket per session — strictly.

The discipline rule: decide, don't do. A ticket produces a decision, not a deliverable; the pull to "just build it already" is the signal that the map has ended and it's time to hand the work into execution.

Structure

cleared became a ticketthe decision a line in theindexThe map one tracker issuethe destination what countsas the enddecisions: an index with links totickets'not yet specified' the fog ofwar'out of scope' beyond thedestinationThe fogquestions that can't yetbe stated precisely closedthe answer in a commentThe frontieropen · unblockedblockedwaiting on decisionsA session one ticket at a timeclaim resolve closerecordthe map is done when nothing is left to decide

At the top, the map — the index of the whole journey: the destination, the accumulated decisions with links, the fog, and what was cut from scope. Beneath it, the tickets in three states: closed with answers, the frontier — open and takeable, and the blocked ones waiting on others' decisions. The session at the bottom takes exactly one ticket from the frontier; its answer goes as a line into the map's index, and the cleared fog on the right graduates new tickets onto the frontier. The cycle repeats until no tickets remain.

Participants / Components

  • The map — the index issue: destination, decisions, fog, out of scope.
  • The destination — the definition of the road's end; it fixes the scope.
  • A ticket — one session-sized question, with a type and blocking edges; the answer lives in it, the map only links.
  • The frontier — open, unblocked, unclaimed tickets: the edge of the known.
  • The fog — questions that can't yet be stated precisely; the map's legalized incompleteness.
  • Agent and developer — the agent drives research and task tickets alone; grilling and prototype need the human; sessions may run in parallel.

When to use

  • The work is bigger than a session and the way isn't visible: a loose idea with a dozen unresolved questions behind it.
  • Several people or several parallel sessions work the investigation — the map and the frontier in the tracker keep everyone in sync.
  • The decisions matter enough to keep: every closed ticket is a recorded answer with a link, not a remark in a dead conversation.

Not needed when the way is clear: if the idea turns directly into a specification and tasks, that's the SDD pipeline without an investigation. And it's overkill when the whole investigation fits in one session.

Consequences and trade-offs

  • ➕ The knowledge lives in the tracker: decisions, their reasons, and their links outlive any session and any participant.
  • ➕ Parallelism for free: the frontier is visible in the tracker's UI, and any session can take a free ticket.
  • ➕ The fog is legalized: no need to pretend everything is visible — the unclear sits honestly in "not yet specified" and ripens.
  • ➕ A cutoff is cheap: a session is one ticket; if it dies, at most that ticket is lost.
  • ➖ Tracker overhead: the map, child tickets, blocking edges — for an idea with three questions this is bureaucracy.
  • ➖ The "decide, don't do" discipline is counterintuitive: the map doesn't produce product, and you have to stop in time and hand off to execution.
  • ➖ The map's quality is bounded by the questions' quality: blurry tickets yield blurry decisions.

Implementation

  1. Charting is its own session. First, an interview down to the destination: what exactly are we finding — a spec, a decision, a change. Then a second interview breadth-first, not depth-first: fan out across the whole space of questions. If no fog surfaces — no map is needed, the way is already clear.
  2. Create the map and the tickets that can already be stated precisely; wire the blocking edges in a second pass. The unstated goes into the fog, not into tickets: the test is "can I phrase the question precisely now", not "can I answer it".
  3. A working session: load the map, take the first frontier ticket, claim it, resolve it — pulling in skills by ticket type — record the answer, close it, add the line to the decisions.
  4. After every answer, revisit the fog: graduate what has ripened into tickets, delete what has been devalued, move what fell beyond the destination into "out of scope" with a one-line why.
  5. One ticket per session — the same rule as One Feature at a Time, in the world of decisions.
  6. In anything a human reads, call tickets by their names, not numbers: a wall of #42, #47, #51 is illegible.
  7. When no tickets remain — the way is clear: hand off into execution, usually the SDD pipeline, with a link to the map as the decision log.

Example

The idea: "we're moving billing to the PayFlow payment platform." The charting session interviews the developer and fixes the destination: an approved migration specification — the chosen data model and a transition plan with no interruption to charging. The first tickets:

  • research: "compare the subscription APIs of PayFlow and the current provider — what doesn't map" (the agent alone);
  • task: "set up a PayFlow sandbox account" — blocks the research;
  • grilling: "what happens to active subscriptions during the transition";
  • fog: "the refund model", "migrating saved cards" — felt, but hanging on the answers above.

Sessions close the tickets one at a time. The transition-period answer ("double-entry, a gateway facade for a month") graduates two new tickets from the fog — a facade prototype and webhook research. The "payments account page redesign" that surfaced along the way goes into "out of scope" as one line. Nine tickets later the frontier is empty: every decision is made and recorded — the specification is assembled from the map's index, and the work is handed into the pipeline.

Anti-patterns and common mistakes

  • Doing instead of deciding. A ticket ended in a shipped feature — the map has turned into an execution backlog. A deliverable is the sign it's time to hand off, not to widen the map.
  • Ticketing the fog. Slicing the unstated into tickets "for later" yields hollow questions that will have to be rewritten. The fog ripens in its own section.
  • Several tickets per session. The same breadth trap: three "almost decided" questions instead of one closed.
  • A map-as-store. Full answers in the map's body instead of links — the map bloats, stops being readable in a minute, and drifts from the tickets.
  • Numbers instead of names. "#42 blocks #47" is illegible to a human; a name with the link inside reads at a glance.
  • A frontier without blocking. With no edges wired, everything is "takeable" at once — and sessions grab questions whose answers hang on decisions not yet made.

Known uses

  • Matt Pocock's skills/wayfinder: the pattern's primary source — the labeled map on the tracker, four ticket types, the fog of war, the frontier through native blocking, and the "decide, don't do" rule.
  • Dual-track agile — the pre-agent kin: a discovery track running ahead of the delivery track, producing decisions rather than product increments.
  • Spike hierarchies in XP — investigation tasks carved out of a large unknown; the map adds a shared index and the fog on top.
  • Feature List — the mirror neighbor: the list drives toward a known end state, the map finds the way to one not yet known; the map often ends where the list begins.
  • One Feature at a Time — the same pass discipline: one ticket per session, carried to a recorded decision.
  • Throwaway Prototype — a ticket type on the map: a question answered by an artifact rather than a conversation.
  • Spec-Driven Development — the receiver of the result: when the way is clear, the map's decisions fold into a specification and go into the pipeline.
  • Session Handoff — the mechanics of moving between the map's sessions and into execution: an extract for the goal instead of the conversation's tail.

results matching ""

    No results matching ""