The bug was found in D5678. It was because Dagit disables the step selection button based on ExecutionPlan.artifactsPersisted https://sourcegraph.com/github.com/dagster-io/dagster/-/blob/js_modules/dagit/src/runs/RunActionButtons.tsx#L139:7 which was derived from intermediate_storage_def.is_persistent
So this diff does:
- clean up the memoization check a bit: it moves the persistence check into execution plan because it actually doesn't depend on pipeline_context, i.e. we can determine the check before executing the pipeline.
- drop artifacts_persisted from ExecutionPlan's args: again, it doesn't need to be passed in, because execution plan already has enough info to determine it.
- artifacts_persisted now is a property on ExecutionPlan which checks both "if intermediate storage is persistent" and "if the current run has corresponding non-in-memory object managers to support reexecution"