Retry Budgets and Backoff Policy¶
Invariant (INV-12)¶
Within a session, retry count is monotonic and exhaustion is terminal. No timer/reconnect event resets an exhausted pair; only explicit Reset() starts a new session.
Tracker API (implemented)¶
RecordAttempt/RecordAttemptAtStateIsExhaustedNextAttemptAfterRecordSuccessReset
States:
ACTIVEEXHAUSTED
Configuration knobs¶
MaxRetryCountBackoffBaseMaxRetryDurationWindowDuration
Validation coherence requires window_seconds >= backoff_base_seconds * max_retry_count.
Failure Injection Coverage¶
FI-C4-01: exhaustion at max count
FI-C4-02: no increment after exhausted
FI-C4-03: exhausted persists past window
Evidence¶
edge/retry/retry.goedge/retry/retry_test.go(TestFI_C4_03_NoPeriodicReactivation)edge/fi/fi_retry_test.goedge/config/validate.go(window coherence rule)