# How Kanban flow works

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0kq2ep0022jv06cc7iuoo8
> It describes who does what, in what order, and with which technology. Read the plain-language sections first; the JSON at the end is the exact, complete data.

## Summary

- 14 steps across 1 layer
- Persona: Customer, The team, Team lead
- Technology / systems: The Kanban board

## Pain points

Where this process hurts, worst first:

- **Flag it and swarm to unblock it** (How Kanban flow works; painful): Blocked work silently kills flow

## How to read this file

- A process is made of **layers**. The main layer is the top level; any step of kind `subprocess` opens a detail layer with its own lanes and steps.
- **Lanes** are either persona (people/roles) or technology (systems). Each step belongs to one lane; `using` lists tools a person uses for that step.
- Step kinds: `start`, `task`, `decision` (its arrows carry the answer as a label), `subprocess`, `end`.

## How Kanban flow works

Lanes:
- Customer: person / role (id `cust`)
- The Kanban board: technology / system (id `board`)
- The team: person / role (id `team`)
- Team lead: person / role (id `lead`)

Steps, in the order they run:

1. **A new request arrives** [start; Customer; id `k1`]
   - then It goes into the backlog
2. **It goes into the backlog** [task; The Kanban board; id `k2`]
   - then Is there room in "In progress" (the WIP limit)?
3. **Is there room in "In progress" (the WIP limit)?** [decision; The team; id `k3`]
   - if "Yes" go to Pull the next card; if "No" go to Finish something first: stop starting, start finishing
4. **Pull the next card** [task; The team; id `k4`]
   - then Work on it
5. **Work on it** [task; The team; id `k5`]
   - then Is it blocked?
6. **Is it blocked?** [decision; The team; id `k6`]
   - if "Yes" go to Flag it and swarm to unblock it; if "No" go to Move it to review
7. **Flag it and swarm to unblock it** [task; Team lead; id `k7`] ⚠ PAIN POINT (painful): Blocked work silently kills flow
   - then Move it to review
8. **Move it to review** [task; The team; id `k8`]
   - then Did review pass?
9. **Did review pass?** [decision; The team; id `k9`]
   - if "Yes" go to Done and delivered; if "No" go to Back to in progress
10. **Done and delivered** [task; Customer; id `k10`]
   - then Measure cycle time and look for the bottleneck
11. **Measure cycle time and look for the bottleneck** [end; Team lead; id `k11`]
12. **Back to in progress** [task; The team; id `k8a`]
   - then Work on it
13. **Finish something first: stop starting, start finishing** [task; The team; id `k3a`]
   - then Help clear a blocked card
14. **Help clear a blocked card** [task; The team; id `k3b`]
   - then Is there room in "In progress" (the WIP limit)?

```mermaid
flowchart LR
  subgraph l_cust["Customer"]
    n_k1(["A new request arrives"])
    n_k10["Done and delivered"]
  end
  subgraph l_board["The Kanban board"]
    n_k2["It goes into the backlog"]
  end
  subgraph l_team["The team"]
    n_k3{"Is there room in 'In progress' (the WIP limit)?"}
    n_k3a["Finish something first: stop starting, start finishing"]
    n_k3b["Help clear a blocked card"]
    n_k4["Pull the next card"]
    n_k5["Work on it"]
    n_k6{"Is it blocked?"}
    n_k8["Move it to review"]
    n_k9{"Did review pass?"}
    n_k8a["Back to in progress"]
  end
  subgraph l_lead["Team lead"]
    n_k7["Flag it and swarm to unblock it"]
    n_k11(["Measure cycle time and look for the bottleneck"])
  end
  n_k1 --> n_k2
  n_k2 --> n_k3
  n_k3 -->|"Yes"| n_k4
  n_k3 -->|"No"| n_k3a
  n_k3a --> n_k3b
  n_k3b --> n_k3
  n_k4 --> n_k5
  n_k5 --> n_k6
  n_k6 -->|"Yes"| n_k7
  n_k6 -->|"No"| n_k8
  n_k7 --> n_k8
  n_k8 --> n_k9
  n_k9 -->|"Yes"| n_k10
  n_k9 -->|"No"| n_k8a
  n_k8a --> n_k5
  n_k10 --> n_k11
```

## Full data (JSON)

```json
{
  "title": "How Kanban flow works",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "cust",
          "name": "Customer",
          "type": "person"
        },
        {
          "id": "board",
          "name": "The Kanban board",
          "type": "system"
        },
        {
          "id": "team",
          "name": "The team",
          "type": "person"
        },
        {
          "id": "lead",
          "name": "Team lead",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "k1",
          "kind": "start",
          "lane": "cust",
          "next": [
            {
              "to": "k2"
            }
          ],
          "uses": [],
          "label": "A new request arrives"
        },
        {
          "id": "k2",
          "kind": "task",
          "lane": "board",
          "next": [
            {
              "to": "k3"
            }
          ],
          "uses": [],
          "label": "It goes into the backlog"
        },
        {
          "id": "k3",
          "kind": "decision",
          "lane": "team",
          "next": [
            {
              "to": "k4",
              "label": "Yes"
            },
            {
              "to": "k3a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Is there room in \"In progress\" (the WIP limit)?"
        },
        {
          "id": "k3a",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "k3b"
            }
          ],
          "uses": [],
          "label": "Finish something first: stop starting, start finishing"
        },
        {
          "id": "k3b",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "k3"
            }
          ],
          "uses": [],
          "label": "Help clear a blocked card"
        },
        {
          "id": "k4",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "k5"
            }
          ],
          "uses": [],
          "label": "Pull the next card"
        },
        {
          "id": "k5",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "k6"
            }
          ],
          "uses": [],
          "label": "Work on it"
        },
        {
          "id": "k6",
          "kind": "decision",
          "lane": "team",
          "next": [
            {
              "to": "k7",
              "label": "Yes"
            },
            {
              "to": "k8",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Is it blocked?"
        },
        {
          "id": "k7",
          "kind": "task",
          "lane": "lead",
          "next": [
            {
              "to": "k8"
            }
          ],
          "pain": {
            "note": "Blocked work silently kills flow",
            "level": 2
          },
          "uses": [],
          "label": "Flag it and swarm to unblock it"
        },
        {
          "id": "k8",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "k9"
            }
          ],
          "uses": [],
          "label": "Move it to review"
        },
        {
          "id": "k9",
          "kind": "decision",
          "lane": "team",
          "next": [
            {
              "to": "k10",
              "label": "Yes"
            },
            {
              "to": "k8a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Did review pass?"
        },
        {
          "id": "k8a",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "k5"
            }
          ],
          "uses": [],
          "label": "Back to in progress"
        },
        {
          "id": "k10",
          "kind": "task",
          "lane": "cust",
          "next": [
            {
              "to": "k11"
            }
          ],
          "uses": [],
          "label": "Done and delivered"
        },
        {
          "id": "k11",
          "kind": "end",
          "lane": "lead",
          "next": [],
          "uses": [],
          "label": "Measure cycle time and look for the bottleneck"
        }
      ],
      "title": "How Kanban flow works",
      "parent": null
    }
  }
}
```
