Skip to content

Basket Line Lifecycle

Models the lifecycle of a single line item within a basket (cart). A basket line is created when a product is added, and follows a path through quantity/price updates, optional stock reservation, and eventual conversion to an order line or removal. This lifecycle is subordinate to the Basket Lifecycle.

Object: basket-line · States: 5 · Transitions: 8


State Diagram

flowchart LR

    %% ── classDef palette ─────────────────────────────────────
    classDef stInit  fill:#0d9488,stroke:#0f766e,color:#fff,font-weight:bold
    classDef stNorm  fill:#3b82f6,stroke:#2563eb,color:#fff
    classDef stOk    fill:#16a34a,stroke:#15803d,color:#fff,font-weight:bold
    classDef stFail  fill:#dc2626,stroke:#b91c1c,color:#fff,font-weight:bold
    classDef stHold  fill:#d97706,stroke:#b45309,color:#fff

    %% ── nodes ───────────────────────────────────────────────
    added(["Added"])
    updated["Updated"]
    reserved["Reserved"]
    confirmed[["Confirmed"]]
    removed[["Removed"]]

    %% ── transitions ─────────────────────────────────
    added -->|"basket-updated"| updated
    reserved -->|"basket-updated"| updated
    added -->|"inventory-reserved"| reserved
    updated -->|"inventory-reserved"| reserved
    added -->|"basket-checked-out"| confirmed
    reserved -->|"basket-checked-out"| confirmed
    added -->|"basket-updated"| removed
    reserved -->|"inventory-released"| removed

    %% ── class assignments ───────────────────────────
    class added stInit
    class updated,reserved stNorm
    class confirmed,removed stOk

States

State Label Description Initial Terminal
added Added Product added to basket. Price calculated. Stock not yet reserved.
updated Updated Quantity, variant, or promotion applied to the line. Price recalculated.
reserved Reserved Stock reserved for the line. Item held pending checkout.
confirmed Confirmed Basket checked out. Line converted to Order Line. Terminal state for the basket line.
removed Removed Line explicitly removed by customer or invalidated (e.g. product discontinued).

Transitions

From To Trigger Guards
added updated basket-updated Quantity > 0; Product still available
reserved updated basket-updated Previous reservation released before update
added reserved inventory-reserved Stock available at selected fulfillment location
updated reserved inventory-reserved Stock available for updated quantity/variant
added confirmed basket-checked-out Basket in locked state; Payment authorised
reserved confirmed basket-checked-out Basket in locked state; Payment authorised
added removed basket-updated Customer removes item OR quantity set to 0
reserved removed inventory-released Customer removes item; Stock reservation released