fix: enforce valid state machine transitions - #227
Open
Ayoubbelguellaoui wants to merge 2 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
Defined valid lifecycle transitions for all StateEnum states.
Reject illegal lifecycle transitions in set_state() with ValueError.
Prevent invalid shortcuts such as Unstart → Success.
Updated create_step_workspaces() to record Incomplete through set_state().
Kept batch reset operations such as clear_states() and _invalidate_suffix() outside lifecycle guards.
Updated formal state-machine and file-chaining models to match the guarded lifecycle.
Updated affected tests and execution mocks to follow the real Unstart → Ongoing → Success/Incomplete lifecycle.
Added regression coverage for valid and invalid transitions, idempotency, persistence, batch resets, and resume/rerun behavior.
Preserved the previous silent-failure remediation and failure-propagation behavior.
Scope
Select the areas touched by this PR:
uv.lock, or release artifacts.Runtime And Packaging Impact
ecc-toolsorecc-dreamplacedependency changedNotes:
The main behavioral change is that illegal lifecycle transitions are now rejected explicitly instead of being silently accepted. Batch reset operations remain intentionally outside the lifecycle guard mechanism.
Validation
List the commands you ran. Mark checks that are not applicable as N/A.
uv run pytest test/uv run ruff check chipcompiler testuv run ruff format --check chipcompiler testecc --help,ecc --version,ecc version --jsonnix run .#cli -- --helpSkipped checks and reason:
The remaining skipped/xfail tests are documented in the test output and are not caused by the transition-guard implementation.
Checklist