This document describes runtime behavior and operator recovery for the native SSE ExEd Studio Control desktop runtime.
- The Qt shell starts first.
- The shell validates runtime paths and bundled assets, then launches the bundled Rust engine.
- The shell waits for
engine.ready,health.snapshot,app.snapshot, and the relevant domain snapshots before routing into commissioning or the dashboard.
- Closing the main window asks for confirmation before the app fully quits.
- The engine remains the owner of persisted state, recovery details, and device-facing safety behavior.
- Logs and support diagnostics stay available from the native recovery and support surfaces.
- Closing the native shell is a full workstation-control shutdown, not a browser-tab close.
- Native updates are delivered through offline installers and maintenance-tool update repositories, not through background Electron-style auto-update polling.
- Apply updates deliberately during a safe workstation window and preserve the app-data directory unless you are intentionally resetting the machine.
- Restart routing is driven from the engine snapshot.
- Machines with completed commissioning route back to
dashboard. - Clean-start or reset machines route back to
commissioning. - Corrupt storage, runtime-path failures, and protocol mismatches surface recovery details through the native health and support snapshots.
- Open the Lighting workspace.
- Review the native health and lighting summaries.
- Re-run the lighting commissioning probe if needed.
- If the bridge is still unavailable, restart the app and confirm the same issue reproduces before changing hardware state.
- Open the Audio workspace.
- Review the native health and audio summaries.
- Re-run the audio commissioning probe if needed.
- If the console is still unavailable, restart the app and confirm the failure is not limited to one session.
- Open Setup or Support and verify the control-surface base URL is present in native diagnostics.
- If the bridge is unavailable, restart the app before changing deck mappings or network assumptions.
- If the problem persists, collect diagnostics and confirm the host can still bind
127.0.0.1on the configured control-surface port. - Reinstall the latest known-good native build only after preserving the app-data directory and the latest support backup.
- Export a native support backup immediately if the app is still responsive.
- Use native restore with the latest known-good support backup or a legacy
db.jsonexport. - Confirm the recovery surface reports the rollback backup path created before restore.
- Open the recovery surface.
- Export diagnostics and note the engine log path.
- If storage is corrupt, restore from the latest support backup.
- If startup still fails, reinstall the latest known-good native build without deleting the app-data directory.
- Primary store: native SQLite database
- Backup/export path: native support backup archives written under the app-data backup directory
- Restore path: native support restore from a support archive or legacy
db.json - Rollback safety: restore creates a pre-restore backup before applying changes
health.snapshotapp.snapshotcommissioning.snapshotlighting.snapshotaudio.snapshotsupport.snapshot
- startup target and current workspace
- commissioning readiness and hardware profile
- lighting readiness, last scene recall, and fixture inventory summary
- audio readiness, last sync or recall state, and channel inventory summary
- support backup count, restore guidance, and recovery details
- Launch the packaged native app and confirm it reaches the expected target surface.
- Confirm lighting, audio, and support summaries show the expected ready state.
- Trigger a test light scene recall if lighting is in scope.
- Trigger an audio sync or snapshot recall if audio is in scope.
- Export a manual support backup before the session starts.
Release validation must prove the local control-surface bridge can bind, listen, and serve real HTTP requests on 127.0.0.1.
npm run native:bridge:mac:verifynpm run native:bridge:win:verify
Those lanes start the packaged engine on a dedicated localhost port, then verify /api/deck/context, /api/deck/lcd, /api/deck/action, /api/deck/light-action, and /api/deck/audio-action against the live bridge. Treat a bind failure as a release blocker, not as an acceptable warning.
For the current handoff state, use docs/HANDOFF.md. The historical parity appendix is preserved at docs/archive/NATIVE_PARITY_HANDOFF.md for reference only.