Skip to main content

Partial statuses are compound in the canonical layer; the FE collapses them to "Partially matched"

The canonical status (getCanonicalStatus output) encodes the terminal remainder disposition in the status name for partially-matched orders, rather than a single partially_matched + a separate breakdown object. The FE then collapses every partially_matched* to one "Partially matched" headline plus the lossless breakdown detail.

Canonical match-axis statuses

  • partially_matched — some matched; remainder still working or awaited (non-terminal; deficit > 0 counts as awaited)
  • partially_matched_lapsed — some matched; remainder fully lapsed
  • partially_matched_cancelled — some matched; remainder fully user-cancelled
  • partially_matched_cancelled_lapsed — some matched; remainder split cancel + lapse

Mirror set for fully-unmatched terminals: fully_lapsed, fully_cancelled, fully_cancelled_lapsed.

Compound-split suffix order is normalized to cancelled_lapsed (cancelled first) across both the partial and fully families, for one consistent convention (supersedes the earlier fully_lapsed_cancelled ordering).

Frontend collapse

All partially_matched* values render as a single "Partially matched" headline + the respective detail from the lossless RemainderBreakdown (e.g. "25 lapsed · 15 cancelled"). The user never sees the compound machine name.

Rationale

The canonical status stays machine-precise — reports, admin filters, reconciliation, and debugging can distinguish disposition without parsing the breakdown — while the user sees one friendly label. The RemainderBreakdown still carries the exact amounts (ADR-0003), so nothing is lost. Supersedes the single-partially_matched display framing noted in ADR-0004.