I've written the one-page FY2025 summary for the CFO to `output/exec-summary.md`. The script's figures are in `output/summary.json`.

- **Result:** FY2025 revenue was $11,238K against a budget of $11,600K. Operating income was $388K against $583K.
- **Quarters:** Q1 missed budget by ($121K) and Q3 by ($229K). Q2 and Q4 were close to budget.
- **Drivers:** Revenue was ($362K) unfavourable for the year. Cost of goods sold was $196K favourable, which offset part of that gap. Salaries and wages were ($38K) unfavourable.
- **Watch list:** Days sales outstanding, on-time delivery and active customers are off target in December.
- **Checks:** The script's reconciliation checks passed. Quarterly revenue sums to the year, and the revenue KPI ties to the P&L for December.

The Data notes section lists both input files with their row counts and hashes. It also carries the script's rounding note, because a few rows don't add exactly as printed.

**Wording:** The sentence under the watch list asks about the Q3 revenue shortfall and receivables collection. The data doesn't show a cause for either, so I framed it as a question.

**Additions to the template:**
- I added the "days" unit to the days sales outstanding line.
- I put a "Source:" line under each table, as the company branding rules require.