Jump to a problem, path or page
Jump to a problem, path or page
Updates as you edit. Run the review to record it; passing every check completes the problem.
Not yet passed: Caller responsibility
Add Caller and define its responsibility.
Not yet passed: StateMachine responsibility
Add StateMachine and define its responsibility.
Not yet passed: Transition table responsibility
Add Transition table and define its responsibility.
Not yet passed: Guard evaluator responsibility
Add Guard evaluator and define its responsibility.
Not yet passed: State repository responsibility
Add State repository and define its responsibility.
Not yet passed: Effect outbox responsibility
Add Effect outbox and define its responsibility.
Not yet passed: Caller → StateMachine
A directed path must connect Caller to StateMachine. Arrows represent requests, dependencies, or event flow.
Not yet passed: StateMachine → Transition table
A directed path must connect StateMachine to Transition table. Arrows represent requests, dependencies, or event flow.
Not yet passed: StateMachine → Guard evaluator
A directed path must connect StateMachine to Guard evaluator. Arrows represent requests, dependencies, or event flow.
Not yet passed: StateMachine → State repository
A directed path must connect StateMachine to State repository. Arrows represent requests, dependencies, or event flow.
Not yet passed: State repository → Effect outbox
A directed path must connect State repository to Effect outbox. Arrows represent requests, dependencies, or event flow.
Not yet passed: Where should external side effects run?
Not yet passed: How are competing events serialized?
Not yet passed: What happens when two definitions match one state/event?
Not yet passed: Interfaces and invariants
Write at least 80 characters describing concrete operations, inputs, outputs, state and errors. This check measures completeness, not semantic correctness.
Not yet passed: Trade-offs and failure cases
Write at least 80 characters about alternatives, failure handling and edge cases. Review the reasoning yourself using the reference discussion.
Rule-based educational feedback. Notes are checked by length only; topology checks confirm directed reachability. These checks do not validate semantics, latency, reliability or every valid design.
Compile a validated versioned transition table and evaluate one pure guarded transition per event. Repository transactions atomically record new state, idempotency outcome and effect descriptors for later dispatch. Validate declared states, events, target states and uniqueness of each source/event pair. Pin the definition version to each machine instance. Under the repository transaction, check the event registry before expectedVersion so a successful retry can return its original result. Reject an event ID reused with different content. Find the transition, evaluate its pure bounded guard against immutable state and compute the reducer result. Reject absent transitions or failed guards without publishing mutations. Commit state version, event outcome and outbox intent together. Dispatch effects separately with destination idempotency; define upgrades and terminal states explicitly.
There is no single correct diagram. Explain where yours differs and which requirement justifies it.