Skip to content

feat: modularize FSM core and add transactional Spring Boot example - #6

Open
NGirchev wants to merge 14 commits into
masterfrom
wip/unpushed-master-2026-07-01
Open

NGirchev wants to merge 14 commits into
masterfrom
wip/unpushed-master-2026-07-01

Conversation

@NGirchev

@NGirchev NGirchev commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • Split the reusable library into fsm-core; keep the transactional Spring Boot/Envers example isolated from publishing.
  • Support per-transition immediate/deferred auto scheduling, serialization and bounded immediate auto-transition chains.
  • Preserve @Version, synchronize detached versions after saves, and serialize workflow starts before invoking the external service.
  • Fix review findings: copied transition/DTO scheduling metadata, cross-package non-public compatibility implementations, and the original Java/JVM builder overload.
  • Keep the concurrent-start regression test compatible with Java 17 and enforce the Java 17 API at compilation, including when building on newer JDKs.
  • Update vulnerable runtime/build/editor dependencies.

Verification

  • Independent subagent review against master, with focused regression tests for the API fixes.
  • ./gradlew check (core tests, quality/coverage gates and transactional example).
  • Editor: npm test -- --run (59 tests), npm run build, npm audit --audit-level=moderate (0 vulnerabilities).
  • GitHub CI passed on the current commit, including Java 17 compilation/tests, Detekt and coverage gates: https://github.com/NGirchev/fsm/actions/runs/35380521884.

Branch relationship

Related: #5 (feature/spring-boot-example), a separate PostgreSQL/versioned-flow example.
Neither branch contains the other; both started from the same master commit. This PR does not replace #5. Core layout/runtime and dependency changes overlap, so the second PR will need reconciliation after the first is merged.

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.

1 participant