SupervisionEventKind Type
Which supervision transition a `SupervisionEvent` reports — the discriminator to branch on when consuming `SupervisionSession.EventsAsync`. A plain .NET enum on purpose: this taxonomy is meant to *grow*, and a new kind must not break a consumer that was written against an earlier version. Existing kinds are never renumbered, renamed, or repurposed; new ones are appended with the next free value. Both languages already force the habit that makes that safe — F# requires a wildcard branch when matching an enum, and a C# `switch` expression needs a discard arm — so treat an unrecognized kind as "something newer happened" (the event's `Name` still identifies it) rather than as an error.
Record fields
| Record Field |
Description
|
|
The consumer fell behind the bounded buffer and `DroppedEvents` older events were discarded to make room. Synthesized on the reading side immediately before the oldest event that survived, so a gap is always explicit — never a silent loss. See `SupervisionSession.DroppedEventCount` for the lifetime total.
|
|
The `GiveUpWhen` classifier declared `Attempt`'s failure permanent, so supervision stops instead of restarting it.
|
|
A liveness/health probe ended the current incarnation: `Attempt` is that incarnation, and `IsTerminal` is `false` when the unhealthy streak tripped (the ordinary restart path decides what happens next) or `true` when the probe itself failed fatally and supervision will end. Reported once per decision, not once per failed attempt.
|
|
An incarnation ended without producing a `ProcessResult` at all — it never started, or its capture failed. `Attempt` and the coarse `FailureKind` say which incarnation and what class of failure; the failure's message and any captured output are deliberately not carried.
|
|
An incarnation produced a `ProcessResult`: `Attempt`, `Outcome`, `Duration`, and `IsSuccess` (the command's `OkCodes` verdict, not merely "exit 0").
|
|
An incarnation was launched: `Attempt` is its 1-based number, `Pid` the live child's process id (`None` for a capture-only runner, which exposes no live handle).
|
|
A restart was scheduled: `Restart` is its 1-based lifetime number, `Delay` the (jittered) backoff about to be slept out, and `Cause` distinguishes an ordinary exit restart from one a liveness probe forced. Reported before the delay, exactly like the `OnRestart` callback.
|
|
Supervision ended with a `SupervisionOutcome`; `Reason` is that outcome's `StopReason`. The last event of a successful supervision.
|
|
The failure-storm guard paused restarts: `StormPause` is its 1-based number and `Delay` the (jittered) pause about to be slept out. Reported before the pause, like `OnStormPause`.
|
|
Supervision ended with a terminal error instead of an outcome; `FailureKind` is that error's coarse class. The last event of a failed supervision.
|
ProcessKit API Reference