Skip to content

fix(runtime): persist tool failures and recover interrupted steps - #236

Merged
Emin017 merged 3 commits into
mainfrom
ekko/fix-tool-failure-state
Aug 25, 2026
Merged

fix(runtime): persist tool failures and recover interrupted steps#236
Emin017 merged 3 commits into
mainfrom
ekko/fix-tool-failure-state

Conversation

@KoEkko

@KoEkko KoEkko commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

What Changed

  • Contain tool exceptions and SystemExit inside the step execution boundary, persist Imcomplete, and preserve the original failure message in runtime events.
  • Persist schema-1 runtime operation markers and add an idempotent workspace.recover_interrupted RPC for interrupted steps.
  • Finalize subflow/checklist/observer state on terminal failures and update the ecc-dreamplace gitlink for catchable utilization failures.

Scope

Select the areas touched by this PR:

  • CLI - command behavior, Typer command surface, output formats, or workspace commands.
  • Flow/runtime - workspace lifecycle, EngineFlow, step execution, logs, metrics, or artifacts.
  • EDA integration - Yosys, ECC-Tools, DreamPlace, KLayout, PDKs, or native/runtime wrappers.
  • Build/package - Nix, PyInstaller, wheels, uv.lock, or release artifacts.
  • CI/release - GitHub Actions, version checks, changelog, or release automation.
  • Tests/docs only

Runtime And Packaging Impact

  • No runtime or packaging impact
  • CLI output or machine-readable contract changed
  • Workspace layout, flow state, or artifact paths changed
  • Native toolchain or wrapper behavior changed
  • ecc-tools or ecc-dreamplace dependency changed
  • PyInstaller, Nix, or release artifact changed

Notes:

  • Ongoing steps now store info.runtime_operation in workspace.flow.json; the marker is cleared on normal terminal completion.
  • workspace.recover_interrupted only transitions matching schema-1 interrupted steps to Imcomplete and does not rerun them.

Validation

List the commands you ran. Mark checks that are not applicable as N/A.

  • uv run pytest test/ --ignore=test/examples/test_soc.py -q
  • uv run ruff check chipcompiler test
  • uv run ruff format --check chipcompiler test
  • PyInstaller smoke: ecc --help, ecc --version, ecc version --json
  • Nix smoke: nix run .#cli -- --help
  • Manual flow smoke: verified DreamPlace failure persistence and rerun state through the GUI.
  • Other: bash .github/scripts/check-version.sh; git diff --check origin/main...HEAD

Skipped checks and reason:

  • PyInstaller bundle build was skipped because packaging files are unchanged; CI will run the bundle job.
  • Nix smoke was skipped because Nix files are unchanged.

Checklist

  • I kept the change scoped to ECC.
  • I updated docs or user-facing CLI text where behavior changed. (N/A: no public CLI text or documentation contract changed.)
  • I included lockfile or version metadata updates when dependencies changed.
  • I documented any submodule updates and why they are needed.
  • I did not include local caches, virtual environments, or generated build outputs.
  • I explained skipped validation and remaining risk.

@Emin017 Emin017 added bug Something isn't working enhancement New feature or request labels Aug 21, 2026
@Emin017 Emin017 added this to the 0.1.0-alpha.11 milestone Aug 21, 2026
@KoEkko
KoEkko marked this pull request as ready for review August 21, 2026 03:29
@Emin017
Emin017 merged commit 4e47409 into main Aug 25, 2026
5 checks passed
@Emin017
Emin017 deleted the ekko/fix-tool-failure-state branch August 25, 2026 09:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants