Skip to content

Conversation

@johnnyt
Copy link
Member

@johnnyt johnnyt commented Sep 1, 2025

  • Adds type field to Transition struct supporting "internal" | "external" | nil
  • Updates parser to extract type="internal" attribute from XML transitions
  • Implements internal transition logic that executes actions without
    exiting/re-entering source state, per SCXML specification
  • Updates feature detector to recognize and mark internal_transitions as supported
  • Add comprehensive internal transition configuration update logic

Internal transitions now correctly:

  • Executes transition actions without source state exit/entry
  • Updates configuration from source descendants to target states
  • Preserves source state (no onexit/onentry execution)
  • Follows W3C SCXML semantics for internal vs external transitions

johnnyt and others added 4 commits September 1, 2025 05:05
- Adds type field to Transition struct supporting "internal" | "external" | nil
- Updates parser to extract type="internal" attribute from XML transitions
- Implements internal transition logic that executes actions without
  exiting/re-entering source state, per SCXML specification
- Fixes initialization to execute onentry actions for all entered states
  (including ancestors) in proper depth order per W3C spec
- Updates feature detector to recognize and mark internal_transitions as supported
- Add comprehensive internal transition configuration update logic

Internal transitions now correctly:
- Executes transition actions without source state exit/entry
- Updates configuration from source descendants to target states
- Preserves source state (no onexit/onentry execution)
- Follows W3C SCXML semantics for internal vs external transitions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Reverts ancestor onentry execution during initialization that was causing
event processing order changes breaking 2 regression tests (test403a, test411).
Internal transitions work correctly without this initialization change.

Maintains full internal transition functionality per W3C SCXML specification
while ensuring all 145 regression tests pass.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@johnnyt johnnyt force-pushed the internal-transitions branch from efdce18 to 2cb9f32 Compare September 1, 2025 11:22
@codecov
Copy link

codecov bot commented Sep 1, 2025

Codecov Report

❌ Patch coverage is 92.00000% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
lib/statifier/feature_detector.ex 0.00% 1 Missing ⚠️
lib/statifier/interpreter.ex 95.83% 1 Missing ⚠️
Files with missing lines Coverage Δ
lib/statifier/parser/scxml/element_builder.ex 100.00% <ø> (ø)
lib/statifier/feature_detector.ex 94.02% <0.00%> (-1.43%) ⬇️
lib/statifier/interpreter.ex 90.85% <95.83%> (+4.58%) ⬆️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@johnnyt johnnyt force-pushed the internal-transitions branch from a2c2239 to 167a883 Compare September 1, 2025 11:30
@johnnyt johnnyt merged commit 72d0105 into main Sep 1, 2025
10 checks passed
@johnnyt johnnyt deleted the internal-transitions branch September 1, 2025 11:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants