User Flow Diagrams

August 12, 2026 · View on GitHub

Visual maps of the Fab workflow — how commands connect and what each flow looks like in practice.


1. How Development Works Today

The stages every developer already follows — define what to build (intake), capture requirements + plan + code it (apply), review it, close it. Fab doesn't invent new stages; it gives each one a name and a place. Human judgment is frontloaded to intake; everything after runs unattended.

flowchart TD
    B[intake] -->|"capture requirements + plan + write code"| A[apply]
    A -->|"validate"| R[review]
    R -->|"document learnings"| H[hydrate]
    H -->|"commit & push"| SH[ship]
    SH -->|"process feedback"| RP[review-pr]
    RP -->|"close"| AR[archive]

    %% Rework
    R -.->|"fix issues"| A
    R -.->|"rethink approach"| REWORK["plan ## Requirements"]

    %% Styles
    style B fill:#e8f4f8,stroke:#2196F3
    style A fill:#fff3e0,stroke:#FF9800
    style R fill:#fff3e0,stroke:#FF9800
    style H fill:#fff3e0,stroke:#FF9800
    style SH fill:#e8f5e9,stroke:#4CAF50
    style RP fill:#e8f5e9,stroke:#4CAF50
    style AR fill:#f0f0f0,stroke:#999

2. The Same Flow, With Fab

Each transition is now a /fab-* command. /fab-ff fast-forwards from intake through hydrate; /fab-fff fast-forwards further through ship and PR review. /fab-archive is a separate housekeeping step after the pipeline completes. /fab-adopt is the alternate entry point for work that bypassed the pipeline: a branch authored without fab (with an OPEN or not-yet-created PR) enters late — intake is reconstructed from the diff, apply is skipped, and review (diff-only) → hydrate → ship → review-pr run for real. /fab-issue is an optional side step — it links the change to a Linear issue (find-or-create) any time before ship so /git-pr renders the issue ID into the PR title; /fab-fff runs it automatically as its pre-ship Step 3.5.

flowchart TD
    WT[new worktree] -->|"/fab-discuss"| IDEA[idea]
    IDEA -->|"/fab-new"| B[intake]
    B -->|"/fab-continue"| A[apply]
    A -->|"/fab-continue"| R[review]
    R -->|"/fab-continue"| H[hydrate]
    H -->|"/git-pr"| SH[ship]
    SH -->|"/git-pr-review"| RP[review-pr]

    %% Optional Linear linking (any time before ship; automatic in /fab-fff Step 3.5)
    H -.->|"/fab-issue
    (optional — find-or-create Linear issue)"| SH

    %% Post-pipeline housekeeping
    RP -->|"/fab-archive"| AR[archive]

    %% Shortcuts
    B -->|"/fab-ff
    (fast-forward, confidence-gated)"| H
    B -->|"/fab-fff
    (fast-forward-further, confidence-gated)"| RP
    IDEA -->|"/fab-proceed"| RP

    %% Adoption — alternate entry for off-pipeline work (apply skipped)
    OFF[off-pipeline branch
    + OPEN/no PR] -->|"/fab-adopt
    (reconstruct intake from diff,
    apply skipped, diff-only review)"| R
    style OFF fill:#f3e5f5,stroke:#9C27B0

    %% Apply-review loop (sub-agent review with auto-rework)
    R -.->|"sub-agent review
    auto-rework (fab-ff, fab-fff)"| A

    %% Rework (reset to any earlier stage)
    H -.->|"Revise anytime using
    /fab-continue <stage>"| REWORK["apply / review"]

    %% Styles
    style WT fill:#f0f0f0,stroke:#999
    style IDEA fill:#f0f0f0,stroke:#999
    style B fill:#e8f4f8,stroke:#2196F3
    style A fill:#fff3e0,stroke:#FF9800
    style R fill:#fff3e0,stroke:#FF9800
    style H fill:#fff3e0,stroke:#FF9800
    style SH fill:#e8f5e9,stroke:#4CAF50
    style RP fill:#e8f5e9,stroke:#4CAF50
    style AR fill:#f0f0f0,stroke:#999

3. Change State Diagram

The complete state machine showing how a change progresses through all stages. Each stage can be in one of six states: pending, active, ready, done, skipped, or failed (review and review-pr only). The diagram shows normal forward flow, shortcuts, rework paths, and the commands that cause each transition.

stateDiagram-v2
    direction TB

    [*] --> intake: /fab-new
    [*] --> review: /fab-adopt (adopt off-pipeline change; intake reconstructed, apply skipped)

    intake --> apply: /fab-continue (co-generates plan.md, runs tasks)
    intake --> hydrate: /fab-ff (fast-forward, intake-gated)
    intake --> review_pr: /fab-fff (fast-forward-further, intake-gated)

    apply --> review: /fab-continue

    review --> hydrate: pass (all checks ✓)
    review --> apply: auto-rework (fab-ff/fab-fff — sub-agent in full lane, inline in light lane)
    review --> earlier_stage: /fab-continue apply (manual)

    state "apply (revise requirements)" as earlier_stage

    hydrate --> ship: /git-pr
    ship --> review_pr: /git-pr-review
    review_pr --> [*]: /fab-archive

    state "review-pr" as review_pr

    note right of intake
        Created by /fab-new.
        Contains: goals, constraints.
        Confidence score calculated;
        /fab-clarify to improve.
        The single gate lives here.
    end note

    note right of apply
        Entry sub-step: co-generates plan.md
        (## Requirements from intake.md +
        ## Tasks + ## Acceptance).
        Tasks run in order;
        tests after each task;
        resumable (plan.md persists,
        markdown ✓ tracks progress).
    end note

    note right of review
        Sub-agent review:
        prioritized findings
        (must-fix / should-fix /
        nice-to-have).
        Auto-rework loop in
        fab-ff and fab-fff.
    end note

    note right of ship
        Commit, push, create PR
    end note

    %% Styles
    classDef planning fill:#e8f4f8,stroke:#2196F3,stroke-width:2px
    classDef execution fill:#fff3e0,stroke:#FF9800,stroke-width:2px
    classDef shipping fill:#e8f5e9,stroke:#4CAF50,stroke-width:2px
    classDef input fill:#f3e5f5,stroke:#9C27B0,stroke-width:2px

    class intake input
    class apply,review,hydrate execution
    class ship,review_pr shipping

4. Per-Stage State Machine

Section 3 shows which stage a change is at. This section shows how each individual stage transitions between states. Every stage tracks its own progress as one of: pending, active, ready, done, skipped (and failed for review and review-pr; ready is not an allowed state for ship or review-pr — advance is rejected there). The events that drive transitions are issued by fab status.

stateDiagram-v2
    direction LR

    [*] --> pending
    pending --> active: start
    pending --> skipped: skip ²

    active --> ready: advance
    active --> done: finish
    active --> skipped: skip ²
    active --> failed: fail ¹

    failed --> active: start ¹

    ready --> done: finish
    ready --> active: reset

    done --> active: reset
    done --> [*]

    skipped --> active: reset
    skipped --> [*]

    note right of failed
        ¹ Review and review-pr
           stages only
    end note

    note right of skipped
        ² Cascades downstream.
           Not available for intake.
    end note

Side-effects

EventSide-effect
finishIf the next stage in the pipeline is pending, it is automatically set to active
resetAll downstream stages are cascaded to pending
skipAll downstream pending stages are cascaded to skipped

Source of truth: the Go state machine — transitions and side-effects in src/go/fab/internal/status, stage order and progress schema in src/go/fab/internal/statusfile. (The former declarative src/kit/schemas/workflow.yaml was retired in 260612-c5tr — it had drifted to the pre-1.10.0 7-stage pipeline and nothing consumed it.)


5. Stage Coverage by Command

See Stage Coverage by Command in the README.