# Occurrence list

> The Occurrences card of a unit panel, the active and recent occurrence episodes of the unit.

The **Occurrence list** shows the active and recent occurrence episodes of a unit (see
[Occurrences](process-occurrences) for what an occurrence is). It is a reading, not a
command surface: nothing on it writes.

It is the Occurrences card of the [unit panel](view-unit-panels), not a component: the
panel draws it for its own unit wherever the model's [Panels](process-panels) keep that
card on. It is never placed on a screen, and the dashboard's Add palette does not offer it.
There is nothing to configure: the list draws at most five episodes, the active ones first
and the most recent after them, so the cap drops the oldest of what is over.

## What a row shows {#what-a-row-shows}

Each episode row carries:

- the occurrence's name and its status word,
- the **Active** clock: how long the condition has been (or was) in force,
- when the episode ever lost its signal, a separate **Signal loss** clock (or
  **Signal unavailable** while the signal is still gone),
- the episode's message, when it has one, with the full text in the row's tooltip.

While an episode is active, a band on the row's leading edge and its status word take the
tone of the occurrence's severity, the same tone its dot has on the
[Occurrences](events-occurrences) timeline of Events: critical for Critical, caution for
Warning, neutral for Info. A cleared episode is drawn plain, whatever its severity.

The two clocks are deliberately separate: an unavailable signal never makes an active
occurrence look cleared.

## States and refresh {#states-and-refresh}

The header says what the list is reading, and on the unit panel it is the card's own head:
`Occurrences` during a run, `Occurrences · 2 active` while episodes are active,
`Occurrences · outside run` while the unit has no run (the list then reads the episodes
raised outside one), and `Occurrences · unavailable` where the episode reader is not
running. The list refreshes about every two seconds. A failed refresh keeps the previous rows and
marks the header `· stale` while the automatic retry is pending, rather than clearing a
list the operator may be reading.
