Pallets.
A pallet is a logistic unit with an SSCC. Aggregation events bind the cases on it; a later disaggregation records the split. Append-only storage keeps both, so the unit's history is the sequence of events, not a mutable current state.
epcListquantityList
The SSCC nesting, drawn as it is stored.
sscc:109520123456788120 // the pallet
├─ sscc:109520123456788137 // case 1 of 40
│ ├─ sgtin:09506000134352.21.A1-1
│ └─ … 23 more eaches
├─ sscc:109520123456788144 // case 2 of 40
└─ …
AggregationEvent ADD ×41 → the tree above
AggregationEvent DELETE ×1 → the split at the DC, appended, not edited
Illustrative: one pallet's containment tree at pack-out. Each level is an AggregationEvent that validated against the official schema; the tree is derived from the events, never stored as a mutable structure.
For the engineer who reconciles at the dock.
When a case goes missing between two docks, the question is which nesting it was last inside and who says so. The containment tree at any moment is a fold over appended events — so the answer is computable for any past moment, not just the current one.
Proof, not adjectives. The gateway's conformance tests pass against GS1's normative artifacts. See What for the dimension, and What ships today for the dated ledger.