Compass Method Figure It Out

Table of Contents

1. When to use this skill

The work does not match a method, or matches several. It is large, cross-cutting, novel, or the operator will be away while it runs. The failure this prevents is drift: doing large work by improvising each next step, which produces motion that cannot be reviewed and cannot be resumed.

Use it also when a narrower method fits the parts but not the whole. A migration across many call sites is a series of refactors, and the series needs a shape of its own.

2. How to use this skill

2.1. 1. Match first, and say why nothing fits

Before designing anything, check the methods that exist and state which you rejected and why. Most work that feels novel is a feature with an unfamiliar subject, and reaching here by default wastes the phases someone already wrote.

If one fits, use it. If two fit different parts, this method sequences them rather than replacing them.

2.2. 2. Ground the whole scope

Resolve the concepts across the whole of the work, not the first part of it (Grounding). Large work fails at the seams between its parts, and the seams are where the unresolved concepts hide.

2.3. 3. Write the phases, with a check for each

Design the method this work needs: the phases in order, what each produces, and how each will be shown to have worked. A phase with no check is a phase that will be declared done by feel (principle-sequence-verifiable-units).

Say what would make you stop or change course. Work driven to completion without a stopping condition runs past the point where the plan stopped being right.

2.4. 4. Decide what is delegated, and what it is told

Where parts are independent, they can run separately, but a delegate inherits none of the grounding the session did. Each one is spawned as a named System, told what to read first and what it may do (Systems and levels).

Keep the shared state separable (principle-separate-before-serializing-shared-state). Two agents writing the same file, branch or lock is a coordination problem that should have been a partition.

2.5. 5. Run the phases, and keep the trail

Work the phases in order, recording as you go: what was decided, what was observed, what changed course. For anything the operator will review later rather than watch, that trail is the deliverable alongside the code (compass-principle-never-block-on-the-human).

Re-check the plan at each phase boundary. A plan that survives contact unchanged for many phases is usually not being read.

2.6. 6. Close the loop

When it is done, the method you designed is itself a finding. If the same shape of work will recur, it becomes a real method (principle-encode-lessons-in-structure); if it will not, say so, so the next reader does not mine it for a pattern that was never intended.

3. When this method is the wrong one

Re-match downward as soon as the work turns out to be ordinary. Using this for something a narrower method covers adds a planning phase to work that did not need one, which is its own kind of waste.

4. Recipes

5. Reference

Emacs 29.3 (Org mode 9.6.15)