A browser-native digital twin wired to the MVP state model:
order → precheck → brew → dispense → clean.
Full sequence
Auto runs the full MVP sequence. Step command advances one adapter command at a time so you can inspect state, telemetry, and motion.
Manual jog is visual-only maintainer dry-run. It logs intent but never arms hardware.
Request-to-cup command flow for the simulator MVP. No real hardware at any layer.
Drives the state machine through brew steps. Emits commands: move_to_portafilter, start_extraction, wait_extraction_done, dispense_water, clean.
Gate before every motion. Checks cup, human presence, overheat, and E-stop. Blocks execution and holds DEFAULT DENY until all gates pass.
Abstract interface for robot arm, brewer, water dispenser. In this MVP always backed by SimulatorAdapter. No real SDK calls.
In-process mock. Logs commands, advances state, emits telemetry. Zero serial / socket / camera code. All actuation is visual-only.
This system is simulator-only. The following capabilities are not present in this codebase and will not be added without a separate hardware milestone.
Remaining approval gates before any hardware path: SDK integration review, physical safety certification, food-service compliance review, hardware adapter implementation and sign-off.
Simulator MVP as of M3 milestone. All checks are static — no CI integration or live hardware required.
This portfolio page is suitable for static hosting. Run python3 -m http.server 8765 and open /web/digital-twin.html, then call window.runBrowserSmoke() in the console to verify the contract.