tool/endpoint: run_workflow / validate_workflow — plan.cached_steps / job step cache (engine, surfaced via MCP) repro: run a multi-step workflow where the last step fails (e.g. an invalid final argument). Upstream steps succeed and write their files. Then validate the same workflow again with the same seed. - observe: validate_workflow returns plan.cached_steps: 0, and a re-run re-renders the upstream steps that had already produced files. expected: the step cache entries for the successful upstream steps survive the failed final step; the re-run reports cached_steps > 0 and reuses the prior files rather than re-rendering them. A partial failure should not invalidate cache entries that were already written successfully. actual: cached_steps: 0 on the re-run; four takes re-rendered for nothing. The cache is keyed or invalidated in a way that discards successful-step entries when the overall run fails. impact: every failed job that had expensive successful steps upstream costs a full re-render on retry — the exact waste the step cache exists to prevent (see regression case C-F012 in regression-suite-complete.md).
tool/endpoint:
run_workflow/validate_workflow—plan.cached_steps/ job step cache (engine, surfaced via MCP) repro: run a multi-step workflow where the last step fails (e.g. an invalid final argument). Upstream steps succeed and write their files. Then validate the same workflow again with the sameseed. - observe:validate_workflowreturnsplan.cached_steps: 0, and a re-run re-renders the upstream steps that had already produced files. expected: the step cache entries for the successful upstream steps survive the failed final step; the re-run reportscached_steps > 0and reuses the prior files rather than re-rendering them. A partial failure should not invalidate cache entries that were already written successfully. actual:cached_steps: 0on the re-run; four takes re-rendered for nothing. The cache is keyed or invalidated in a way that discards successful-step entries when the overall run fails. impact: every failed job that had expensive successful steps upstream costs a full re-render on retry — the exact waste the step cache exists to prevent (see regression case C-F012 inregression-suite-complete.md).