I wrote the December 2025 narrative to `output/mbr-narrative.md`, and the script's figures are in `output/mbr.json`. The script's reconciliation checks passed, and every figure in the narrative is copied from its output.

- **Month:** Revenue was $827K against a $824K budget. Operating income was $8K against $13K, because gross margin came in at 26.1% against 26.8%.
- **Year to date:** Revenue was $11.2M against $11.6M, a shortfall of ($362K). Operating income was $388K against $583K.
- **Drivers:** Other operating and cost of goods sold each missed budget by ($6K) in the month. For the year to date, lower cost of goods sold of $196K offset part of the revenue shortfall.
- **KPIs off target:** Four are off target.
  - Days sales outstanding and on-time delivery have each missed for 3 months.
  - Active customers has missed for 2 months.
  - Inventory turns has missed for 1 month.

The data doesn't show why Other operating ran over budget, so the narrative says so rather than guessing. The transaction detail would answer it.