fix(cost): separate model identity from display labels (#228)

* test(cost): reproduce model aggregation collisions in display labels

* fix(cost): separate model identity from display labels

Aggregate per-model cost and token totals by the raw model identity.
Display labels are bounded to 120 characters and collapse whitespace,
so distinct models could share one label and merge into a single row.
Identical names still aggregate; distinct names stay distinct.

Tests: tst_cost_model_identity (10 pass), tst_provider_normalizer
(174 pass), tst_cost_presentation (112 pass),
tst_cost_refresh_policy (13 pass), test_cost_context.py (OK).

* fix(cost): track raw model identity pin in security checks

costModelSummary now keys aggregates by the raw model identity instead
of the bounded display label. Update the pinned hardening fragments to
the new screening site.
17ffeef4cbSimone committed on 9/11/2026, 4:41:34 PM· committed by GitHubparent6e6a752
4 files changedLine totals unavailable