I've built the FY2025 revenue bridge and written the commentary note. The bridge script's own check passed: it adds up exactly, to the cent, from FY2024 to FY2025.

**Result:** FY2025 revenue was $11,238K, against $11,243K in FY2024. That's a change of ($5K), or (0.04%).

| Step | Amount |
| --- | --- |
| FY2024 | $11,243K |
| Timing | $53K |
| Loss | ($1,288K) |
| Decline | ($443K) |
| Upsell | $1,211K |
| New | $463K |
| FY2025 | $11,238K |

- **Loss:** 4 customers left, taking ($1,288K). Fenwick Legal accounts for ($686K) of that and Birchway Foods for ($503K).
- **Upsell:** 23 customers added $1,211K between them, led by Harbor Freight Partners at $148K.
- **New:** 6 new customers added $463K, led by Thistle Gardens at $116K.

Each amount is rounded on its own, so the rows don't add exactly to the FY2025 total. The note says so in its data notes, along with the input file, its 48 rows and its sha256 hash. The data only shows how much each customer moved, not why, so the note doesn't give reasons for any losses.

Files are in `output/`:
- bridge-note.md
- bridge.json