Back to selected work

Product Systems Lab | Interactive state models

See what the system does when the happy path stops being enough.

Step through two small, deterministic simulations about local-first recovery and trusted shared state. Each action exposes the rule, state change, and evidence trail behind the interface.

Open the simulators
Models
Two public-safe product workflows.
Engine
Deterministic, local, and dependency-free.
State
Phase, facts, actions, and history stay visible.
Boundary
No accounts, production data, tracking, or network writes.

A product system becomes clearer when its rules can be operated.

These models translate the public TrailScope and Poolhouse case studies into inspectable behavior. They are illustrative state models, not replicas of production code or live product data. Nothing leaves this page.

  • Accepted actions advance to one predictable state.
  • Blocked actions explain the rule and preserve the accepted state.
  • Reset returns the model to the same initial conditions.

Two systems, two kinds of trust.

Try the blocked action when it appears; the event log will show what the system protected.

Model 01 | Local-first recovery

TrailScope route to resilient export

Prepare a route, move it to the watch, continue recording offline, recover the completed workout, and export a reconciled record.

Read TrailScope case study

Approved scenarios

Load a recovery path or inject a named fault.

Presets are fixed, public-safe transition sequences. A shared link identifies only the model and preset; it stores no visitor data.

Choose a preset to inspect its fixed transition plan.

Current state Step 0

Route draft

Ready

A route exists outside the active workout flow.

Route
Not imported
Watch
Not synced
Workout
Not started
Network
Online
Export
Unavailable

The route has not entered the workout system yet.

Available actions

Deterministic playback

Manual run

0 of 0 transitions
  1. Load a preset or build a plan to enable playback.

Event log

Newest event last
  1. No actions yet. The initial state is ready.
Build a constrained TrailScope scenario

Assemble up to ten transitions. The builder exposes only actions available from the projected state, including named faults that preserve accepted state.

The plan is empty. Add an available transition to begin.

Planned transitions

0 of 10
  1. No transitions planned.
Read the complete TrailScope sequence
  1. Route draft: export is blocked because no completed record exists.
  2. Route ready: the phone has a local route and the watch still needs confirmation.
  3. Watch ready: both devices agree on the route before recording.
  4. Recording offline: loss of connectivity does not end the workout.
  5. Saved locally: the completed workout remains recoverable on the device.
  6. Recovery ready: restored connectivity exposes a deliberate reconciliation step.
  7. Exported: GPX or FIT output follows a complete, reconciled record.

Model 02 | Trusted shared state

Poolhouse pick to final standings

Validate a pick, preserve the deadline, reject a late replacement, review a score update, and finalize standings from an inspectable chain of state.

Read Poolhouse case study

Approved scenarios

Load a trusted path or inject a named fault.

Presets are fixed, public-safe transition sequences. A shared link identifies only the model and preset; it stores no visitor data.

Choose a preset to inspect its fixed transition plan.

Current state Step 0

Pool setup

Ready

Rules are being prepared before members can submit picks.

Window
Closed
Pick
None
Validation
Not run
Scoring
Not started
Standings
Provisional

The pool rules exist, but the pick window is not open.

Available actions

Deterministic playback

Manual run

0 of 0 transitions
  1. Load a preset or build a plan to enable playback.

Event log

Newest event last
  1. No actions yet. The initial state is ready.
Build a constrained Poolhouse scenario

Assemble up to ten transitions. The builder exposes only actions available from the projected state, including named faults that preserve accepted state.

The plan is empty. Add an available transition to begin.

Planned transitions

0 of 10
  1. No transitions planned.
Read the complete Poolhouse sequence
  1. Pool setup: picks are blocked until the active rules and window exist.
  2. Picks open: an incomplete pick fails validation before it can change accepted state.
  3. Pick saved: the accepted pick remains visible before the deadline.
  4. Picks locked: a late replacement is rejected and the accepted pick stays intact.
  5. Score review: a received update is visible without immediately making standings final.
  6. Score confirmed: review completes before the update is finalized.
  7. Standings final: the round closes with its validation and scoring trail intact.

The model is the evidence; private implementation detail stays private.

The simulations use public product concepts already described on this site. They do not expose production architecture, telemetry, member data, customer data, or live application state.