Appearance
Launch lifecycle
A launch has three independent dimensions. They look like overlapping concepts but they aren't.
1. Execution state
How the run is doing physically.
IN_PROGRESS— results are still streaming in.FINISHED— the SDK calledfinishand all expected results arrived.STOPPED— a user (or admin) stopped the run early.INTERRUPTED— the run died unexpectedly (process kill, network).
2. Outcome
PASSED or FAILED. Set when execution state moves to FINISHED. Computed from the test results.
TIP
The outcome is no longer surfaced in Sulu's UI — manual triage may flip individual results after a launch finishes, making the recorded outcome stale. The progress bar's per-status counts are the source of truth users care about.
3. Closed
A boolean read-only freeze. When closed=true:
- The launch can no longer be modified — no triage, no defect link, no editing tags.
- It contributes to dashboards and audit history.
- It can no longer be reopened (in v1).
Closing happens manually (the Close launch button in the header) or automatically via project-level auto-close policy.
Why three dimensions
Real-world flows mix them: a launch might be FINISHED, FAILED, not closed (run is done, has failures, you're still triaging). After triage you flip closed=true and the dashboard moves on.