Description
Loop14 deploy health rejected the release after aigateway.coverage reported a range without a closed five-minute window at startup. The scheduler and coverage Lag independently read the clock, so a boundary can be computed from inconsistent instants. Preserve closed-window and holdback safety while reproducing the observed startup error before repair.
Acceptance Criteria
- #1 The startup range reproduces the closed-window error before the fix and completes safely afterward
- #2 Coverage end alignment and ten-minute holdback use a consistent clock snapshot without accepting partial windows
- #3 Existing scheduler delivery and coverage fail-closed range tests remain passing
Definition of Done
- #1 just check (fmt-check, lint, vet, test, tidy-check, build, vuln)
- #2 just ci before a change that touches the Dockerfile, goreleaser or the image (adds snapshot + image)
- #3 Every new signal or attribute name declared in internal/semconv and listed in docs/signals.md
Implementation Plan
Trace the recorded startup failure and prove the cause through the registered scheduler path; repair only clock/window alignment, preserve all unsafe-range rejection checks, then run the local gate and CodeRabbit followed by independent review.
Final Summary
Optional WindowLagAt uses one scheduler clock snapshot while retaining the existing WindowCollector and Lag fallback. Registered scheduler cold/resumed startup reproduces the exact closed-window error on base, then passes six boundary cases on candidate 316601492bca4d2c826a07beab62819f46bc4e22. Full gates, CodeRabbit and independent exact-SHA review passed; landing e58a01c036e6476d7b61bf71048653ee90717fcd passed CI 36828474549. Explicit-range, retention, multiple-window, holdback and delivery checks remain unchanged. This fixes the reproduced cause; healthy deployed proof is still pending and historical exclusive causality is not asserted.