Task · TSO-0161

Classify a malformed HTTP status line as class other, never by its free-text word

Description

TSO-0153 residual (Low, accepted in loop19): classifyExportError in internal/telemetry/delivery.go falls through to its keyword switch for a malformed status line such as ‘HTTP/1.1 timeout’, so a backend-chosen word picks the delivery-failure class and the allowlisted reason. The output is still from the fixed set and leaks nothing, but the backend steers classification. Decided 2026-10-09: malformed HTTP maps to class other with an empty reason; no new reason constant. A genuine transport timeout (dial or read ‘i/o timeout’, context deadline) must keep class timeout.

Acceptance Criteria

Definition of Done

Implementation Plan

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

Implementation Notes

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

Final Summary

loop20 landed evidence 07acc0e93b2d7dee6dca290da2da21f7fe9726da. Malformed HTTP status, response and version shapes classify as other with empty reason while genuine transport timeouts retain timeout. Real metric/log wire reproductions observed red then green. Independent original/delta reviews PASS; CodeRabbit minor version omission fixed. 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