Overview · the whole landscape, unfiltered
Two different failures, and they do not look alike
Realized gross margin over time on a shared scale, each panel carrying the other eleven as grey context lines. Leakage is a compliance problem — the agreement was not quoted. Erosion is not: the agreement was honoured on every line and still delivered less margin, because standard cost stepped up underneath a locked price. The same model finds both, and the page keeps them apart.
Selected below Full compliance, falling margin Grey band = range across the other panels Breaks in a line = months with no quotes
Now pick one
One customer, over a period
The fifth thing asked for, and the reason design point six matters: understanding how a customer's pricing and standard margin have behaved over a period should not be an ad-hoc analysis every time. It is the same dataset and the same matching rule as the exception page — no separate build.
Relationship: change over time
Relationship: change over time
Relationship: ranking
Relationship: change over time
Data & method
Leakage and erosion are different failures
Leakage is a control failure. The agreement existed, it was enforceable, and the quote did not use it — so the negotiated premium was never collected. It shows up as compliance below 100% and it is fixed by connecting quoting to the register.
Erosion is not a control failure at all. Every line was priced exactly to agreement, and margin still fell, because standard cost steps quarterly while the agreed price is locked for the life of the agreement. Nobody did anything wrong. It is fixed at renewal, by pricing to a cost forecast rather than to a cost snapshot — and it is only visible because the model carries the cost in force on each quote date rather than a single current cost.
Reading the two together is the point. A customer at 100% compliance with falling margin needs a different conversation from one at 31% compliance, and a dashboard that reports only "margin down" cannot tell you which conversation to have.
How margin is computed
Gross margin is revenue-weighted, not a mean of line margins: the sum of (price − standard cost) × quantity divided by the sum of price × quantity. Standard cost is the cost in force on the quote date, from a quarterly cost table, so margin at agreed price moves over the life of an agreement even though the price does not. Margin at agreed is only defined for lines that have a governing agreement; lines with none are excluded from that series and reported separately.
Why a fully compliant customer still shows a gap
A line counts as priced to agreement when it lands within ±0.5% of the agreed price, because real quotes carry rounding. So realized margin and margin-at-agreed can separate slightly even at 100% compliance — the tolerance band is doing that, not a pricing failure. The separation is bounded by the band and is reported on the chart rather than smoothed away.
Reading the agreement timeline
Each row is a part, each bar an agreement window. Windows are clamped to the selected date range — agreement chains routinely start before the quote history begins and run past where it ends, and a bar that touches the edge of the plot carries a caret to say it continues.
Status is as of 2026-08-01, not as of each quote. This matters and it looks like a contradiction if it is not said out loud: an agreement labelled superseded today may legitimately have been the governing agreement for a 2024 quote. The matcher asks whether an agreement was alive on the quote's own date; the label here describes the register now.
Two kinds of overlap appear. Most are linked renewals, where the predecessor points at its successor. Nine, across the whole register, are unlinked duplicate registrations with no supersession pointer — a register-hygiene defect that the recency tiebreak resolves deterministically, but which a real deal desk would fix at the entry process rather than lean on the rule for.
Honest limits
- The data is synthetic. It demonstrates a design; it measures nothing real.
- Family-scope agreements carry a single unit price, which is realistic here only because part prices within a family are generated within ±12% of a family base. A real register would more often hold a discount schedule, which needs a different scope model.
- Committed units are an agreement term, not a delivery commitment; units against commitment is a coverage signal, not a contractual position.
- The generator imports the matcher, so the pipeline is guaranteed consistent but that is not independent evidence the rule is correct.
Full rule and worked examples: governance/matching_rules.md.
Assumptions: governance/generator_assumptions.md. Validation:
governance/validation_report.md. Chart review: governance/chart-review.md.