Story: Hotfix: eventing integration test flakes on Windows CI
Table of Contents
This page documents a story in Sprint 25. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
The eventing integration test (the write_*_publishes_nats_changed_event family, one per entity) fails intermittently on Windows CI: the NATS notification does not arrive at the observer within the test's 5-second poll budget. The failing entity and job rotate run to run (day_count_fraction_type on 2026-08-22, party_id_scheme on 2026-08-25). This story restores a green Windows CI by making the test resilient to transient infrastructure drops: on timeout, the test re-drives the write (which re-fires the DB notify trigger) within a bounded overall budget, and on exhaustion it reports what it did receive so the loss is diagnosable.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 25 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-09-23 |
3. Acceptance
- The eventing integration tests pass on Linux, macOS, and Windows CI.
- The test still asserts the end-to-end chain: a write produces a NATS change notification carrying the written entity id.
- A genuinely broken chain still fails the test (with diagnostics) within the overall budget.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Scaffold story: Hotfix: eventing integration test flakes on Windows CI | DONE | 2026-08-25 | 2026-08-25 | Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR. |
| Implement Hotfix: eventing integration test flakes on Windows CI | DONE | 2026-08-25 | 2026-08-25 | Initial task for: Hotfix: eventing integration test flakes on Windows CI |
5. Decisions
- Resilience lives in the test, not the production chain: the loss windows (listener reconnect backoff 1-5s, NATS publish catch-and-log) are environment transients; the chain itself is correct, so no production code changes.
- Fix the generated template, never a single generated file: one org edit re-tangles and re-generates all 85 tests, keeping the fix and its diagnostics uniform.
- The flake is cross-platform (Windows and macOS, rotating entities), so the fix must not be platform-specific.
6. Out of scope
7. Result
Closed at sprint 25 close. Every task is done.