Problem
When a step fails in a long flow (e.g., step 27 of 40), debugging requires:
- Re-running the entire flow from step 1
- Reading through all step logs to reconstruct intermediate state
- Guessing at what the resolved interpolations looked like at runtime
There's no way to:
- Stop execution at a specific step
- Inspect the resolved value of
$.steps.X.output at any point
- Dry-run a flow to see what interpolations resolve to without executing
Proposal
Three complementary capabilities:
1. Stop-at flag:
one flow execute my-flow --stop-after=step15
Executes steps 1-15, prints step 15's output, and exits. Useful for isolating where things break.
2. Inspect resolved interpolations:
one flow execute my-flow --dry-run
Resolves all {{$.steps.X.output.Y}} and $.input.Z references, prints the resolved values per step, but doesn't execute any steps. Catches wiring bugs (wrong field names, missing null guards) without burning API credits.
3. Step output dump:
one flow execute my-flow --dump-steps=/tmp/flow-debug.json
Writes all step outputs to a file during normal execution. Enables post-mortem debugging without re-running.
Why this matters
Flow debugging time scales linearly with flow length. A 40-step flow with a bug at step 30 currently costs the full execution time of steps 1-29 on every debug attempt. These features would reduce that to near-zero for wiring bugs (dry-run) and one-shot for runtime bugs (stop-at + dump).
Problem
When a step fails in a long flow (e.g., step 27 of 40), debugging requires:
There's no way to:
$.steps.X.outputat any pointProposal
Three complementary capabilities:
1. Stop-at flag:
Executes steps 1-15, prints step 15's output, and exits. Useful for isolating where things break.
2. Inspect resolved interpolations:
Resolves all
{{$.steps.X.output.Y}}and$.input.Zreferences, prints the resolved values per step, but doesn't execute any steps. Catches wiring bugs (wrong field names, missing null guards) without burning API credits.3. Step output dump:
Writes all step outputs to a file during normal execution. Enables post-mortem debugging without re-running.
Why this matters
Flow debugging time scales linearly with flow length. A 40-step flow with a bug at step 30 currently costs the full execution time of steps 1-29 on every debug attempt. These features would reduce that to near-zero for wiring bugs (dry-run) and one-shot for runtime bugs (stop-at + dump).