flowchart LR
C["Canary
POST /pea/trigger"]:::start --> A["Al
validate + normalize"]:::start
A --> R{"Action route"}:::gate
R -->|build / mandate| B["build"]:::mapped
R -->|bug-reproduce| CB["confirm-bug"]:::mapped
R -->|feature-ideate| E["explore"]:::mapped
R -->|ideation profile| I["ideation"]:::mapped
R -->|audit| CA["codebase-audit"]:::mapped
R -->|ux audit| UA["ux-audit"]:::mapped
R -->|Airtable| AT["airtable-build"]:::mapped
R -->|release| RL["release"]:::mapped
R -->|innovation| IX["innovation
REFUSED: no source contract"]:::bad
B & CB & E & I & CA & UA & AT & RL --> D["flow-dispatch
job → source contract"]:::core
D --> G["flow-spawn
HEAD-byte gate"]:::core
G --> T["isolated worktree
tmux harness"]:::core
T --> P["seat-send
prose run flow contract"]:::core
NR["asm · component · user-guide"]:::orphan -. "source contracts exist;
no Al route" .-> D
classDef start fill:#0c2734,stroke:#5fd8ff,color:#f2f6fa,stroke-width:2px;
classDef gate fill:#2b2214,stroke:#ffc45c,color:#f2f6fa,stroke-width:2px;
classDef mapped fill:#11291f,stroke:#62d39a,color:#f2f6fa,stroke-width:2px;
classDef core fill:#101f31,stroke:#5fd8ff,color:#f2f6fa,stroke-width:2px;
classDef bad fill:#30171d,stroke:#ff7777,color:#f2f6fa,stroke-width:2px;
classDef orphan fill:#2b2214,stroke:#ffc45c,color:#f2f6fa,stroke-width:2px,stroke-dasharray:5 4;