- scope the run-outcome listener to the Run step so stray execution
events on earlier steps can't fire lifecycle telemetry out of order
- share isUpgradeModalOpen from the store instead of duplicating the
UPGRADE_DIALOG_KEYS check in the nudge and controller
- catch loadWorkflowTemplates rejections on the Getting Started screen
- make CuratedTemplateId the canonical union in roleResolver and reuse
it across the fixtures and the Getting Started screen
- cover the execution_interrupted run outcome
- clean up manually appended DOM in overlay tests via try/finally