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.

Emacs 29.3 (Org mode 9.6.15)