Task · TSO-0162

Ingress delivery reports retrying when an export attempt hangs past the reader timeout

Description

After TSO-0148, readiness reaches delivery health only through the ingress WAL coordinator’s deliveryRetrying(), which reads Provider.IngressDeliveryRetrying() (internal/telemetry/scheduled_metrics.go). That signal counts only failed attempts. An exporter that ignores its context and blocks (seen with a hung stdout writer) never fails an attempt, so readiness stays green forever. Before TSO-0148 the 1-minute flush timeout surfaced it. Found in loop19 review (Low). Decided 2026-10-09: an in-flight metrics or logs export attempt older than the resolved reader timeout counts as retrying; scope is the ingress WAL path only (no new readiness gate when ingress_wal is disabled); the state clears with no manual reset when the attempt returns.

Acceptance Criteria

Definition of Done

Implementation Plan

Implement frozen scope using synctest; regression red then green; exact candidate gate and security review before landing.

Implementation Notes

loop20: 1 implementation attempts; Done after acceptance, landed code and green composed gate. Earlier superseded/cancelled CI runs are not passes.

Final Summary

loop20 landed evidence df6cd7225e175c9e739e3d9fdce2879c18f67939. Hung metric/log ingress exports report retrying strictly after the resolved reader timeout and clear on successful return, WAL-only readiness scope. Synctest regression red then green and independent base overlay reproduction; security review PASS; completed CodeRabbit zero findings. Final composed just check on actual shipped SHA129945fb3230f1c5d8a1127ad3e3c7faa2c514f4 passed, unchanged tree. Exact CI e96e74e31e2df4c697435dd4b7a32315e0e02f41 run38003933710 ci-success succeeded; no production diff outside backlog from that tested code. Helm absent-not-required (no landed chart change). Just formatting passed. Generated-input DoD is not applicable or covered by gate; no generator drift or weakened test claimed.

References

View the source file on GitHub