Repo: amplifier-module-hooks-streaming-ui
File: amplifier_module_hooks_streaming_ui/__init__.py — format_cost_usd()
Evidence
Real haiku session output:
└ Input: 12,530 (64% cached) | Output: 145 | Total: 12,675 | Cost: $0.00711955
Expected: $0.0071 (2 sig figs). Got: $0.00711955 (8 digits, 7 decimal places).
Root cause
format_cost_usd used input_exp = -cost.as_tuple().exponent to determine decimal places. This reads stored Decimal arithmetic precision, not display precision. When compute_cost multiplies token counts by rate constants like Decimal("3.000"), Python stores the full intermediate precision (8–12+ places), making input_exp far larger than needed.
Fix (already applied on feat/m0-cost-management)
# Remove input_exp entirely. Use exp_floor for 2 sig figs + strip trailing zeros.
decimal_places = -exp_floor + 1
result = f"${cost:.{decimal_places}f}"
return result.rstrip("0") or "$0.00"
Repo:
amplifier-module-hooks-streaming-uiFile:
amplifier_module_hooks_streaming_ui/__init__.py—format_cost_usd()Evidence
Real haiku session output:
Expected:
$0.0071(2 sig figs). Got:$0.00711955(8 digits, 7 decimal places).Root cause
format_cost_usdusedinput_exp = -cost.as_tuple().exponentto determine decimal places. This reads stored Decimal arithmetic precision, not display precision. Whencompute_costmultiplies token counts by rate constants likeDecimal("3.000"), Python stores the full intermediate precision (8–12+ places), makinginput_expfar larger than needed.Fix (already applied on
feat/m0-cost-management)