Skip to content

Phases

Each kind of loop runs a fixed sequence of phases, and the evidence says which are complete. Nothing blocks: a phase that starts too early earns one warning line, and phases move back by themselves when evidence changes.

flowchart TD
  subgraph durable
    direction TB
    d1[decide] --> d2[grill] --> d3[spec] --> d4[read] --> d5[approve] --> d6[design] --> d7[anchor] --> d8[act] --> d9[verify] --> d10[review] --> d11[reflect] --> d12[close]
  end
  subgraph reviewed
    direction TB
    r1[anchor] --> r2[act] --> r3[verify] --> r4[review] --> r5[reflect] --> r6[close]
  end
  subgraph inline
    direction TB
    i1[anchor] --> i2[act] --> i3[verify] --> i4[reflect] --> i5[close]
  end
  subgraph quick
    direction TB
    q1[act] --> q2[check] --> q3[reflect] --> q4[close]
  end

quick runs act → check; inline runs anchor → act → verify; reviewed adds review; durable adds decide → grill → spec → read → approve → design before the anchor. Every kind ends with reflect → close.

The read-out, the widget, and when phases move

read shows <kind> · phase <current> ✓ → <next> (missing: …) · skipped: …. The next phase is fix when a check or review failed after the last change, else close.

A widget below the editor shows ⚓ <kind> · <current> ✓ → <next>, with · N friction while friction waits for a reflect. It updates after every tool call, on session_start, and when a Reality anchor: line is stated, and it clears when the loop closes. After a tool call it builds no working tree: it reads only the trees its event already built, and a settle builds each repo’s tree once.

A phase that starts before an earlier one is complete warns once, in one line. Phases regress when evidence changes (a diff after verify, a spec edited back to proposed) or on back.