Skip to main content

Type Alias: ActivityOutcome

ActivityOutcome = typeof ActivityOutcome[keyof typeof ActivityOutcome]

Defined in: packages/sdk/src/types/generated/family.ts:88

Whether anybody has to do something about an occurrence.

The second axis of the row, and the one that carries the colour. It is orthogonal to the family — a family says what kind of thing happened, an outcome says whether it went fine — so a summary row can show a family's counts split three ways without inventing a glyph per event type.

  • OK — it happened and it is done. Nothing is owed.
  • ATTENTION — a person is expected to follow up. These are exactly the facts the priority lane is built out of, which is why an ATTENTION count links into that lane, filtered, rather than into the feed: the feed would show you the event, and what you want is the item.
  • FAILED — the system tried and did not succeed.

The honest limit of this axis

An outcome is a property of the event type, not of the occurrence, and it has to be: the rollup materializes (hour, scope, event_type) and carries no detail, so a count can only be split by something the type already decides. That is a real ceiling. import.completed carries a failed_count and assignment.concluded carries a SYSTEM_ERROR conclusion, and neither can colour its own row here, because the aggregate that counted them never saw the payload.

Splitting those would mean either a second rollup keyed on an outcome column — a second materialized grain, which § "Aggregation" rules out — or promoting the distinction into the vocabulary as its own type (import.failed), which is a review-gated change with an emitter behind it and the right way to do it when a specific failure earns a row. So this axis is exactly as rich as the type vocabulary is, and no richer. It is not a severity model; it is a reading of one.