# Analysis row lifecycle A row is created before the plan is validated, so every attempt is visible in the rail. Status moves through `running` → `done` | `failed` | `partial` | `abandoned`. `partial` means some stages produced output before the run stopped. `abandoned` means the browser went away mid-run. Both surface as pills in the history rail rather than being hidden, and `/app/[id]` renders whatever exists with a "this run was interrupted before it finished" note. `/app/[id]` never redirects a `running` row. An earlier version did, which turned a row orphaned by a crashed process into an infinite self-redirect. Related: [[SSE stream]], [[SQLite schema]], [[History rail]].