Description
Wave 3 found missing or partial boundary coverage for collector timeout equality, server API token normalization, webhook replay and freshness bounds, and collector profile parsing.
Acceptance Criteria
- #1 Tests accept collector timeout equal to per-fetch deadline and reject one second less
- #2 Tests prove blank API tokens normalize to unset and nonblank tokens are trimmed
- #3 Tests cover both valid endpoints and adjacent invalid values for replay, freshness, TTL, and cache-size bounds
- #4 Tests accept the three supported profiles plus unset and reject an invalid profile through real Settings validation
Definition of Done
- #1 just check (ruff format –check, ruff check, mypy, generated-doc drift, offline API conformance, and the marker-filtered pytest run with the 80% coverage floor — this is exactly what the CI
testjob runs) - #2 just gen, when metrics, config, endpoints, collectors, the settings schema or the chart config changed —
just checkincludes the drift gate and CI fails the build on it - #3 Grafana queries in grafana/dashboards/*.json and grafana/alerts/ updated, if a metric or label name changed
Implementation Plan
Add compact boundary tests for timeout equality, API-token normalization, webhook bounds, and real collector-profile validation without changing production behavior.
Implementation Notes
Boundary tests cover timeout equality, trimmed and blank control tokens, both endpoints plus adjacent invalid values for webhook freshness/replay/cache settings, and real validation for unset plus all three supported profiles. Integrated gate: 2827 passed.
Final Summary
Pinned the remaining startup configuration boundaries with compact model and startup tests; just check and just ci pass.