> ## Documentation Index
> Fetch the complete documentation index at: https://docs.go.aiinsurance.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Lifecycle Walkthrough

> A step-by-step trace through 9 transactions showing how segments evolve

This page traces a realistic policy through its full lifecycle — creation, multiple endorsements, backdated corrections, cancellation, reinstatement, and transaction deletion. Each step shows the request payload and resulting segments.

If you haven't read the [Concepts](/api-reference/policies/concepts) page yet, start there for an introduction to transactions, deltas, and segments. The backdated corrections below (transactions 5 and 6) lean on the temporal model — for how `effectiveDate`, `transactionTimestamp`, and each delta's `startDate` relate, see [Effective Dates & the Policy Timeline](/api-reference/policies/effective-dates).

## Scenario

|             |                                           |
| ----------- | ----------------------------------------- |
| **Insured** | Greenfield Medical Center                 |
| **Line**    | Professional Liability — Medical Facility |
| **Term**    | January 1, 2025 – December 31, 2025       |

## Delta Actions Reference

| Action        | Description                            | Matching                                |
| ------------- | -------------------------------------- | --------------------------------------- |
| **Overwrite** | Replace a scalar or entire object      | N/A — overwrites                        |
| **Add**       | Append to a collection (set semantics) | Objects by `id`, primitives by equality |
| **Remove**    | Remove from a collection               | Objects by `id`, primitives by equality |

## Premiums and Billing

Policy financial data lives at two levels: **per-segment rating** and **full-term billing**.

### Per-Segment Rating

Each segment carries its own rating data — a per-segment `ratingResponse` on the policy and on each exposure. (These illustrative fields are tenant-configured per-segment fields, distinct from the reserved `crossSegmentRatingOutputs` container, which is invariant across its host's span.) They typically include:

* **`annualPremium`** — the premium as if that segment's state applied for the full policy year
* **`dailyProratedPremium`** — the daily premium rate for that segment's risk profile

Both values are **time-independent** — they describe the risk characteristics of the segment, not its duration. This means two segments with identical risk produce the same rating values regardless of how many days each covers, which is what allows segment merging to work.

### Full-Term Pricing

`fullTermPricingInfo` is a **cross-segment invariant** — it's identical across every segment in a version. It is the pricing contract for the entire policy term: `pricingComponents` plus five **server-computed, read-only rollups** (`premium`, `taxes`, `fees`, `brokerCommission`, `programCommission` — each the sum of its kind's components). You send the components:

```json theme={null}
"fullTermPricingInfo": {
  "pricingComponents": [
    { "label": "Policy Premium", "group": "Policy Invoice", "kind": "Premium", "value": 85000 },
    { "label": "Taxes", "group": "Policy Invoice", "kind": "Taxes", "value": 4250 },
    { "label": "Policy Fee", "group": "Policy Invoice", "kind": "Fees", "value": 500 }
  ]
}
```

Every endorsement that changes the price should include a `fullTermPricingInfo` channel (a whole object applied across the **full policy term**, not just the endorsement effective date). This keeps the pricing contract current.

<Note>
  **`fullTermPricingInfo` is not necessarily derivable from per-segment rates.** Full-term pricing can include flat premium minimums, surplus lines taxes, policy fees, or other adjustments that are independent of per-segment rating. The `fullTermPolicyRatingResult` (a separate policy-root container) captures these aggregate rating details.
</Note>

### Minimal vs Full Tracking

<Warning>
  Callers are not *required* to pass per-segment field changes. You could submit endorsements that only modify `fullTermPricingInfo` and leave per-segment data untouched. However, this reduces the system to **importing transaction bordereau** — you'd know the billing changed, but not what policy details produced the change.

  Per-segment deltas capture the *actual changing characteristics* of the policy over time: which exposures were added, which physicians changed, when beds were decommissioned. This is the difference between a ledger of billing events and a true temporal record of the policy.
</Warning>

### In This Walkthrough

Each transaction below includes structural per-segment deltas, per-segment `ratingResponse` rating on the policy and exposures, and the `fullTermPricingInfo` update. The segment tables include a **Policy Annualized Premium** column — notice that this per-segment rate typically does **not** match the `fullTermPricingInfo.premium` rollup shown below each table.

***

## Creation

<AccordionGroup>
  <Accordion title="Transaction 1 — NEW_BUSINESS" icon="circle-plus">
    **Effective:** Jan 1 · **Version:** 1

    Initial policy creation. One exposure (Main Campus), three named physicians.

    ```json Request theme={null}
    {
      "data": {
        "policyStatus": "active",
        "carrier": "National Indemnity Co",
        "deductible": 25000,
        "aggregateLimit": 5000000,
        "policyStartDate": { "year": 2025, "month": 1, "day": 1, "timezone": "America/New_York" },
        "policyEndDate": { "year": 2025, "month": 12, "day": 31, "timezone": "America/New_York" },
        "ratingResponse": {
          "annualPremium": 85000,
          "dailyProratedPremium": 233
        },
        "fullTermPricingInfo": {
          "pricingComponents": [
            { "label": "Policy Premium", "group": "Policy Invoice", "kind": "Premium", "value": 85000 },
            { "label": "Taxes", "group": "Policy Invoice", "kind": "Taxes", "value": 4250 },
            { "label": "Policy Fee", "group": "Policy Invoice", "kind": "Fees", "value": 500 }
          ]
        },
        "additionalExposures": [{
          "id": "exp-1",
          "exposureType": "MedicalFacility",
          "facilityName": "Greenfield Main Campus",
          "bedCount": 120,
          "coveredSpecialties": ["Cardiology", "Orthopedics", "General Surgery"],
          "namedPhysicians": ["Dr. Patel", "Dr. Nguyen", "Dr. Hoffman"],
          "ratingResponse": {
            "annualPremium": 85000,
            "dailyProratedPremium": 233
          }
        }]
      }
    }
    ```

    **Segments (1):**

    | # | Date Range     | Status | Exposures                            | Policy Annualized Premium |
    | - | -------------- | ------ | ------------------------------------ | ------------------------- |
    | 1 | Jan 1 – Dec 31 | active | Main Campus (120 beds, 3 physicians) | 85,000                    |

    **fullTermPricingInfo rollups:** Premium 85,000 · Taxes 4,250 · Fees 500 · Total 89,750

    With a single full-year segment, the annualized premium matches the billing premium. This won't last.
  </Accordion>
</AccordionGroup>

## Endorsements

<AccordionGroup>
  <Accordion title="Transaction 2 — ENDORSE: Add satellite clinic" icon="pen-to-square">
    **Effective:** Apr 1 · **Version:** 2

    A satellite clinic opens April 1. The new exposure is **Added** to the collection. The Apr–Dec segment gets updated rating reflecting the additional exposure. Jan–Mar rating is unchanged — the risk profile didn't change, only the segment's duration.

    ```json deltas theme={null}
    [
      {
        "startDate": "2025-04-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures",
        "action": "Add",
        "value": {
          "id": "exp-2",
          "exposureType": "OutpatientClinic",
          "facilityName": "Greenfield West Clinic",
          "bedCount": 0,
          "coveredSpecialties": ["Dermatology", "Family Medicine"],
          "namedPhysicians": ["Dr. Kim"],
          "ratingResponse": {
            "annualPremium": 19000,
            "dailyProratedPremium": 52
          }
        }
      },
      {
        "startDate": "2025-04-01", "endDate": "2025-12-31",
        "path": "policy.ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 104000, "dailyProratedPremium": 285 }
      }
    ]
    ```

    ```json fullTermPricingInfo theme={null}
    {
      "pricingComponents": [
        { "label": "Policy Premium", "group": "Policy Invoice", "kind": "Premium", "value": 98000 },
        { "label": "Taxes", "group": "Policy Invoice", "kind": "Taxes", "value": 4900 },
        { "label": "Policy Fee", "group": "Policy Invoice", "kind": "Fees", "value": 500 }
      ]
    }
    ```

    **Segments (2):** `+1`

    | # | Date Range     | Exposures                     | Policy Annualized Premium |
    | - | -------------- | ----------------------------- | ------------------------- |
    | 1 | Jan 1 – Mar 31 | Main Campus                   | 85,000                    |
    | 2 | Apr 1 – Dec 31 | Main Campus + **West Clinic** | 104,000                   |

    **fullTermPricingInfo rollups:** Premium 98,000 · Taxes 4,900 · Fees 500 · Total 103,400

    The annualized premiums are 85,000 and 104,000 — neither matches the billing premium of 98,000. The billing total reflects the blended cost across both periods plus a flat surplus lines assessment.
  </Accordion>

  <Accordion title="Transaction 3 — ENDORSE: Add physician + specialty" icon="pen-to-square">
    **Effective:** Jun 1 · **Version:** 3

    A new surgeon (Dr. Okafor) joins the main campus June 1. Neurology added as a covered specialty. Both deltas use **Add** on nested exposure fields. Rating updated for Jun–Dec where the risk profile changed; Apr–May is unchanged.

    ```json deltas theme={null}
    [
      {
        "startDate": "2025-06-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].namedPhysicians",
        "action": "Add",
        "value": "Dr. Okafor"
      },
      {
        "startDate": "2025-06-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].coveredSpecialties",
        "action": "Add",
        "value": "Neurology"
      },
      {
        "startDate": "2025-06-01", "endDate": "2025-12-31",
        "path": "policy.ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 118000, "dailyProratedPremium": 323 }
      },
      {
        "startDate": "2025-06-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 96000, "dailyProratedPremium": 263 }
      }
    ]
    ```

    ```json fullTermPricingInfo theme={null}
    {
      "pricingComponents": [
        { "label": "Policy Premium", "group": "Policy Invoice", "kind": "Premium", "value": 106000 },
        { "label": "Taxes", "group": "Policy Invoice", "kind": "Taxes", "value": 5300 },
        { "label": "Policy Fee", "group": "Policy Invoice", "kind": "Fees", "value": 500 }
      ]
    }
    ```

    **Segments (3):** `+1`

    | # | Date Range     | Physicians                         | Specialties                                     | Policy Annualized Premium |
    | - | -------------- | ---------------------------------- | ----------------------------------------------- | ------------------------- |
    | 1 | Jan 1 – Mar 31 | Patel, Nguyen, Hoffman             | Cardiology, Orthopedics, Surgery                | 85,000                    |
    | 2 | Apr 1 – May 31 | Patel, Nguyen, Hoffman             | Cardiology, Orthopedics, Surgery                | 104,000                   |
    | 3 | Jun 1 – Dec 31 | Patel, Nguyen, Hoffman, **Okafor** | Cardiology, Orthopedics, Surgery, **Neurology** | 118,000                   |

    **fullTermPricingInfo rollups:** Premium 106,000 · Taxes 5,300 · Fees 500 · Total 111,800

    The Apr–Dec segment from version 2 split at the June boundary. Three different annualized rates (85k, 104k, 118k) but a single billing premium of 106k.
  </Accordion>

  <Accordion title="Transaction 4 — ENDORSE: Remove physician, reduce beds" icon="pen-to-square">
    **Effective:** Jun 1 · **Version:** 4

    Dr. Nguyen leaves the practice effective June 1. 10 beds decommissioned. Uses **Remove** on a primitive collection and **Overwrite** on a scalar.

    ```json deltas theme={null}
    [
      {
        "startDate": "2025-06-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].namedPhysicians",
        "action": "Remove",
        "value": "Dr. Nguyen"
      },
      {
        "startDate": "2025-06-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].bedCount",
        "action": "Overwrite",
        "value": 110
      },
      {
        "startDate": "2025-06-01", "endDate": "2025-12-31",
        "path": "policy.ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 112000, "dailyProratedPremium": 307 }
      },
      {
        "startDate": "2025-06-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 93000, "dailyProratedPremium": 255 }
      }
    ]
    ```

    ```json fullTermPricingInfo theme={null}
    {
      "pricingComponents": [
        { "label": "Policy Premium", "group": "Policy Invoice", "kind": "Premium", "value": 101000 },
        { "label": "Taxes", "group": "Policy Invoice", "kind": "Taxes", "value": 5050 },
        { "label": "Policy Fee", "group": "Policy Invoice", "kind": "Fees", "value": 500 }
      ]
    }
    ```

    **Segments (3):** `unchanged`

    | # | Date Range     | Beds    | Physicians             | Policy Annualized Premium |
    | - | -------------- | ------- | ---------------------- | ------------------------- |
    | 1 | Jan 1 – Mar 31 | 120     | Patel, Nguyen, Hoffman | 85,000                    |
    | 2 | Apr 1 – May 31 | 120     | Patel, Nguyen, Hoffman | 104,000                   |
    | 3 | Jun 1 – Dec 31 | **110** | Patel, Hoffman, Okafor | 112,000                   |

    **fullTermPricingInfo rollups:** Premium 101,000 · Taxes 5,050 · Fees 500 · Total 106,550

    Same segment count — the boundaries didn't move, only the Jun–Dec data and rate changed. The annualized rate dropped from 118k to 112k reflecting fewer beds and one fewer physician.
  </Accordion>

  <Accordion title="Transaction 5 — ENDORSE: Backdate corrections to Apr 1" icon="pen-to-square">
    **Effective:** Apr 1 · **Version:** 5

    Internal audit reveals the bed decommissioning actually happened in April, not June. Dr. Nguyen's departure was also effective April 1. Dr. Okafor started in April too. Retroactive corrections applied.

    ```json deltas theme={null}
    [
      {
        "startDate": "2025-04-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].bedCount",
        "action": "Overwrite",
        "value": 110
      },
      {
        "startDate": "2025-04-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].namedPhysicians",
        "action": "Remove",
        "value": "Dr. Nguyen"
      },
      {
        "startDate": "2025-04-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].namedPhysicians",
        "action": "Add",
        "value": "Dr. Okafor"
      },
      {
        "startDate": "2025-04-01", "endDate": "2025-05-31",
        "path": "policy.ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 108000, "dailyProratedPremium": 296 }
      },
      {
        "startDate": "2025-04-01", "endDate": "2025-05-31",
        "path": "policy.additionalExposures[id = 'exp-1'].ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 89000, "dailyProratedPremium": 244 }
      }
    ]
    ```

    ```json fullTermPricingInfo theme={null}
    {
      "pricingComponents": [
        { "label": "Policy Premium", "group": "Policy Invoice", "kind": "Premium", "value": 100000 },
        { "label": "Taxes", "group": "Policy Invoice", "kind": "Taxes", "value": 5000 },
        { "label": "Policy Fee", "group": "Policy Invoice", "kind": "Fees", "value": 500 }
      ]
    }
    ```

    **Segments (3):** `unchanged`

    | # | Date Range     | Beds    | Physicians                 | Specialties                                 | Policy Annualized Premium |
    | - | -------------- | ------- | -------------------------- | ------------------------------------------- | ------------------------- |
    | 1 | Jan 1 – Mar 31 | 120     | Patel, Nguyen, Hoffman     | Cardiology, Orthopedics, Surgery            | 85,000                    |
    | 2 | Apr 1 – May 31 | **110** | Patel, Hoffman, **Okafor** | Cardiology, Orthopedics, Surgery            | 108,000                   |
    | 3 | Jun 1 – Dec 31 | 110     | Patel, Hoffman, Okafor     | Cardiology, Orthopedics, Surgery, Neurology | 112,000                   |

    **fullTermPricingInfo rollups:** Premium 100,000 · Taxes 5,000 · Fees 500 · Total 105,500

    The structural deltas span Apr 1 – Dec 31, but the Jun–Dec segment **already had** beds=110, Nguyen removed, and Okafor present — no-ops there. Only Apr–May changed. Segment 2's annualized rate is 108,000 (vs segment 3's 112,000) because it lacks Neurology.

    <Info>
      **Setup for what's next:** Segments 2 and 3 now share the same beds, physicians, and exposures. They differ only in whether Neurology is a covered specialty — which also produces different annualized rates (108k vs 112k). One more endorsement that adds Neurology to segment 2 will converge both the structural data and the rating.
    </Info>
  </Accordion>

  <Accordion title="Transaction 6 — ENDORSE: Retroactive Neurology → MERGE" icon="pen-to-square">
    **Effective:** Apr 1 · **Version:** 6

    Neurology coverage was contractually effective from the clinic opening date (April 1), not June 1 as originally recorded. Correction applied retroactively.

    ```json deltas theme={null}
    [
      {
        "startDate": "2025-04-01", "endDate": "2025-12-31",
        "path": "policy.additionalExposures[id = 'exp-1'].coveredSpecialties",
        "action": "Add",
        "value": "Neurology"
      },
      {
        "startDate": "2025-04-01", "endDate": "2025-05-31",
        "path": "policy.ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 112000, "dailyProratedPremium": 307 }
      },
      {
        "startDate": "2025-04-01", "endDate": "2025-05-31",
        "path": "policy.additionalExposures[id = 'exp-1'].ratingResponse",
        "action": "Overwrite",
        "value": { "annualPremium": 93000, "dailyProratedPremium": 255 }
      }
    ]
    ```

    ```json fullTermPricingInfo theme={null}
    {
      "pricingComponents": [
        { "label": "Policy Premium", "group": "Policy Invoice", "kind": "Premium", "value": 101000 },
        { "label": "Taxes", "group": "Policy Invoice", "kind": "Taxes", "value": 5050 },
        { "label": "Policy Fee", "group": "Policy Invoice", "kind": "Fees", "value": 500 }
      ]
    }
    ```

    The Neurology delta adds it to Apr–May. Jun–Dec already has Neurology — no-op. The rating delta updates Apr–May's annualized rate from 108,000 to 112,000 to match Jun–Dec.

    After applying, segments 2 and 3 have **identical per-segment state** — same structural data, same rating. The system merges them.

    **Segments (2):** `-1`

    | # | Date Range     | Exposures                 | Specialties                                     | Policy Annualized Premium |
    | - | -------------- | ------------------------- | ----------------------------------------------- | ------------------------- |
    | 1 | Jan 1 – Mar 31 | Main Campus               | Cardiology, Orthopedics, Surgery                | 85,000                    |
    | 2 | Apr 1 – Dec 31 | Main Campus + West Clinic | Cardiology, Orthopedics, Surgery, **Neurology** | 112,000                   |

    **fullTermPricingInfo rollups:** Premium 101,000 · Taxes 5,050 · Fees 500 · Total 106,550

    <Warning>
      **Key insight — endorsements can reduce segments.** This is not an undo. Six separate transactions produced only 2 segments. The Apr–May / Jun–Dec boundary was erased because corrections **converged both the structural data and the rating** on both sides. The annualized rates are 85k and 112k — the billing premium of 101k reflects neither.
    </Warning>
  </Accordion>
</AccordionGroup>

## Cancellation and Reinstatement

<AccordionGroup>
  <Accordion title="Transaction 7 — CANCEL" icon="circle-xmark">
    **Effective:** Sep 1 · **Version:** 7

    Greenfield is acquired by a hospital network with its own coverage. Policy cancelled effective September 1. The system expands the cancellation date into the per-segment `policyStatus` flip plus a single `cancellationEffectiveOnDate` internally — and it computes the money too, so the caller sends only the date.

    ```json Request theme={null}
    {
      "cancellationDate": "2025-09-01"
    }
    ```

    <Note>
      **A cancel never reprices — the pricing contract is derived.** Every charge keeps its `label`/`group`/`kind`/`earningBasis` and drops to what *it* had earned through September 1: `Policy Premium` to 72,000, `Taxes` to 3,600, and the non-refundable `Policy Fee` — fully earned at inception — untouched at 500. Send `fullTermPricingInfo` only to ADD a charge (a short-rate penalty, a cancellation fee), and an added charge must carry `earningBasis: "fully-earned-at-inception"`. To change an existing charge, endorse at the same effective date and then cancel: same-date transactions apply in booking order, so the cancellation floors against the corrected figures.

      Cancel and reinstate take no per-segment deltas — only a date plus the optional whole-object `fullTermPricingInfo` / `fullTermPolicyRatingResult` channels. The system handles the date ranges and the status change internally.
    </Note>

    **Segments (3):** `+1`

    | # | Date Range     | Status        | Exposures                 | Policy Annualized Premium |
    | - | -------------- | ------------- | ------------------------- | ------------------------- |
    | 1 | Jan 1 – Mar 31 | active        | Main Campus               | 85,000                    |
    | 2 | Apr 1 – Aug 31 | active        | Main Campus + West Clinic | 112,000                   |
    | 3 | Sep 1 – Dec 31 | **cancelled** | Main Campus + West Clinic | 112,000                   |

    **fullTermPricingInfo rollups:** Premium 72,000 · Taxes 3,600 · Fees 500 · Total 76,100

    The Apr–Dec segment split at September. The annualized rate stays 112,000 in both segments — the underlying risk profile didn't change, only the status. But the billing dropped to 72,000 reflecting the shortened coverage period.
  </Accordion>

  <Accordion title="Transaction 8 — REINSTATE → MERGE" icon="rotate-left">
    **Effective:** Sep 1 · **Version:** 8

    The acquisition falls through. Policy reinstated at the same effective date as the cancellation. A 250 reinstatement fee is added.

    A reinstate **restores** the pre-cancel contract — every charge, at the value and `earningBasis` it carried before the cancellation. So the request states only the ADDED fee; the three restored charges come back on their own. (Send them too if you like, but they must match the pre-cancel values exactly.)

    ```json Request theme={null}
    {
      "reinstatementDate": "2025-09-01",
      "fullTermPricingInfo": {
        "pricingComponents": [
          { "label": "Reinstatement Fee", "group": "Policy Invoice", "kind": "Fees", "earningBasis": "fully-earned-at-inception", "value": 250 }
        ]
      }
    }
    ```

    Segment 3 returns to `"active"` — now identical per-segment state to segment 2. They merge.

    **Segments (2):** `-1`

    | # | Date Range     | Status | Exposures                 | Policy Annualized Premium |
    | - | -------------- | ------ | ------------------------- | ------------------------- |
    | 1 | Jan 1 – Mar 31 | active | Main Campus               | 85,000                    |
    | 2 | Apr 1 – Dec 31 | active | Main Campus + West Clinic | 112,000                   |

    **fullTermPricingInfo rollups:** Premium 101,000 · Taxes 5,050 · Fees 750 (was 500) · Total 106,800

    <Info>
      **Cancel + Reinstate are invisible in the segments — and in the earned curve.** Both transactions are preserved in the audit trail, but the per-segment state is identical to version 6 (pre-cancellation) and every restored charge picks its schedule back up where it left off, so earned premium reads flat straight through the round trip. The only lasting change is the added `Reinstatement Fee`, which took fees from 500 to 750. This is the second type of segment reduction: **reversal**, where an action directly undoes a prior change's per-segment effects.
    </Info>
  </Accordion>
</AccordionGroup>

## Transaction Deletion

<AccordionGroup>
  <Accordion title="Transaction 9 — DELETE (undo reinstatement)" icon="trash-can">
    **Latest version after delete:** 7

    The acquisition is back on. The reinstatement was premature — delete it.

    Transaction deletion removes the most recent transaction (the REINSTATE) and its segments. No new version is created — version 7 (the CANCEL version) becomes current again via `MAX(policy_version)`. The deleted transaction is archived for audit purposes.

    **Segments (3):** `+1`

    | # | Date Range     | Status    | Exposures                 | Policy Annualized Premium |
    | - | -------------- | --------- | ------------------------- | ------------------------- |
    | 1 | Jan 1 – Mar 31 | active    | Main Campus               | 85,000                    |
    | 2 | Apr 1 – Aug 31 | active    | Main Campus + West Clinic | 112,000                   |
    | 3 | Sep 1 – Dec 31 | cancelled | Main Campus + West Clinic | 112,000                   |

    **fullTermPricingInfo rollups:** Premium 72,000 · Taxes 3,600 · Fees 500 · Total 76,100

    The deleted transaction still exists in the audit trail — it's archived, not erased. But the live policy state has reverted to the cancelled state, including the pre-reinstatement billing.
  </Accordion>
</AccordionGroup>

***

## Summary

### Segment Count Over Time

| Version | Transaction   | Description                                                       | Segments | Change |
| ------- | ------------- | ----------------------------------------------------------------- | -------- | ------ |
| 1       | NEW\_BUSINESS | Initial policy                                                    | 1        | —      |
| 2       | ENDORSE       | Add clinic                                                        | 2        | +1     |
| 3       | ENDORSE       | Add physician + specialty from Jun                                | 3        | +1     |
| 4       | ENDORSE       | Remove physician, reduce beds from Jun                            | 3        | —      |
| 5       | ENDORSE       | Backdate corrections to Apr                                       | 3        | —      |
| **6**   | **ENDORSE**   | **Retroactive Neurology to Apr**                                  | **2**    | **-1** |
| 7       | CANCEL        | Cancellation from Sep                                             | 3        | +1     |
| 8       | REINSTATE     | Reinstatement from Sep                                            | 2        | -1     |
| *(7)*   | DELETE        | Undo reinstatement — version 8 removed, version 7 becomes current | 3        | +1     |

### Two Types of Segment Reduction

<CardGroup cols={2}>
  <Card title="Convergence (Version 6)">
    Retroactive corrections made the Apr–May segment identical to the Jun–Dec segment — both structurally and in rating. Adjacent identical segments merged.

    Segments can reduce through **normal business operations** — corrections, reconciliations, and backdated adjustments that happen to converge per-segment state across a boundary.
  </Card>

  <Card title="Reversal (Version 8)">
    Reinstatement undid the cancellation, making Sep–Dec identical to Apr–Aug. Adjacent identical segments merged.

    An action that inverts a prior change can collapse the segments that action created — but the **audit trail preserves both transactions**.
  </Card>
</CardGroup>

### Key Takeaways

<Note>
  **Transactions** are authored. **Policy state** is derived. **Segments** are compressed representations of per-segment state.

  Segment count may increase, decrease, or stay the same with each transaction — independently of whether a change was added, corrected, or reversed. `fullTermPricingInfo` and other cross-segment invariants do not affect segment boundaries at all — only per-segment data (including per-segment rating) drives merging.
</Note>
