The December 2025 narrative is written, and the script's reconciliation checks passed (month and year-to-date operating income, revenue sum, revenue KPI tie).

**Files**
- `output/mbr-narrative.md`
- `output/mbr.json`

**What it says**
- **Month:** Revenue was $827K against a $824K budget. Operating income was $8K against $13K, a ($5K) miss.
- **Year to date:** Revenue was $11.2M against $11.6M. Operating income was $388K against $583K, a ($195K) shortfall.
- **Drivers:** Other operating was ($6K) over budget and cost of goods sold was ($6K) over. Year to date, revenue is ($362K) under budget.
- **KPIs off target:**
  - Days sales outstanding: 51.2 against a target of 45.0.
  - On-time delivery: 93.3% against 95.0%.
  - Active customers: 40 against 42.
  - Inventory turns: 5.33 against 6.50.

**Gross margin target differs by source.** The P&L budget implies a gross margin of 26.8%. The KPI file's target is 26.0%. The narrative uses the P&L figure in its tables, and I haven't reconciled the two.

The narrative gives no causes. The data doesn't show why Other operating overran or why days sales outstanding kept rising.