I wrote the one-page FY2025 summary for the CEO to `output/exec-summary.md`. The script's figures are in `output/summary.json`, and its reconciliation checks passed.

- **Headline:** Revenue was $11,238K against a budget of $11,600K. Operating income was $388K against $583K.
- **Margin:** Gross margin was 25.9% against 26.8%, which is (0.9) pts.
- **Quarters:** Q1 and Q3 account for most of the revenue shortfall, at ($121K) and ($229K). Q2 and Q4 were close to budget.
- **Costs:** Cost of goods sold came in $196K favourable, which offset part of the revenue miss. Operating expenses were on budget.
- **Watch list:**
  - Days sales outstanding was 51.2 days against a target of 45.0 and has been off target for 3 months.
  - On-time delivery was 93.3% against 95.0%, also off target for 3 months.
  - Active customers were 40 against 42, off target for 2 months.
- **Left off the watch list:** Inventory turns missed target in only the latest month, so I dropped them.
- **Question for the business:** What is driving the Q1 and Q3 revenue misses, and is it tied to the customer count and delivery gaps? The data doesn't show a cause, so the summary asks the question and doesn't assert one.
- **Rounding:** The summary notes that a few rows don't add exactly, because each amount is rounded on its own.

I added the unit words "days" to the days-sales-outstanding figures. Otherwise the figures are copied as the script printed them.