Part of #7640. One answer replaces reading source across files to find why nothing ran.
Done when:
[ ] flow takes { repo?, issue?, pull? } and answers the first gate that holds it from one shared list of causes (flow only, governor ceiling, hot file, blocked by, later gate, no builder, no headroom, red check, waiting review), each with a sentence and the action that clears it
[ ] The list lives in one module the throughput keeper (#7645) can share
[ ] Tests: one case per cause, each answering its gate
Part of #7640. One answer replaces reading source across files to find why nothing ran.
Done when:
flowtakes{ repo?, issue?, pull? }and answers the first gate that holds it from one shared list of causes (flow only, governor ceiling, hot file, blocked by, later gate, no builder, no headroom, red check, waiting review), each with a sentence and the action that clears itbun test test/mcp-size.test.tspassesFiles: src/flow/why.ts, src/http/mcp/tools/flow.ts, test/mcp-flow-why.test.ts
Risks: Keep
flowwith no arguments as it is today for admins.Fits: a builder