Standardize typed connection outcomes, retries, reporting, and fallback handoff #13
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent: #1
Depends on: #12
Outcome
Make every connection attempt terminate predictably so consumers can choose a dedicated endpoint, future relay, or user-facing failure.
Scope
Acceptance criteria
Starting implementation on a stacked branch from
codex/issue-12-client-coordinator. I’ll first inventory the existing contracts, coordinator terminal paths, fallback fields, and reporting endpoint, then implement deterministic typed outcomes and verify them with fake-clock and integration coverage.Implemented and pushed on
codex/issue-13-typed-outcomesat94aba8a(stacked on the completed roadmap branches).Delivered typed, phase-aware client/host connection outcomes; bounded HTTP, punch, direct-connect, and attempt timeouts using monotonic elapsed time; policy-gated dedicated fallback propagation; capability-authenticated idempotent outcome reporting and aggregate metrics; precise stale-host/protocol HTTP errors; frozen-v1 compatibility preservation; documentation and ADR updates.
Adversarial branch review findings were fixed, including cancellation typing, stop/dispose reentrancy, retry/deadline starvation, pending-peer cleanup, revocation cleanup, fallback-policy enforcement, wire/API compatibility, and legacy report normalization.
Verification: formatting clean; Debug build + 199/199 tests; Release build + 199/199 tests; contracts and client NuGet packages created successfully; public API snapshot diff is additive-only (82 additions, 0 removals). Issue remains open until the stacked roadmap is landed.