Cost Line
Identifier for a single line item produced by a CostFormulation. Used as a key in CostCalculator.lineResponses and as the index into CostFormulation.byLineResponse for per-line rollup queries.
The complete list of v1 line items is exposed via all so formulations can iterate over every line when building rollup aggregates.
Every line declares its CostBasis. The constructor requires it, so a line cannot be added without saying whether it is a rate or a per-replication total — which is what keeps a rollup from silently summing the two. See CostBasis for why the distinction matters.
v2 line items (introduced by Phase 5 — backorder, stockout, lost-sale, unit-shortage) are included here from the start so the formulation infrastructure does not need to grow as those calculators land.