fix(desktop): bound capture cadence and qualify tunnel packetization - #88
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A ready damage producer could exceed negotiated max_fps because the limit lived in backend idle waiting. Capture admission now enforces the minimum start interval regardless of readiness, counts capture/encode time toward that interval and checks cancellation while waiting. The regression fails before the fix and observes the required spacing afterward.
Endpoint files now expose existing path-kind restrictions and an opt-in conservative packetization policy: primary QUIC UDP payloads capped at 1200 bytes with MTU discovery/GSO disabled. Iroh and owned Noq share the policy; adaptive defaults, identity, authorization, congestion control and OS routing remain. Default serialization preserves the legacy file shape; explicit new fields require compatible binaries.
Validation: strict feature-complete workspace Clippy/check; 86 network unit tests; byte-verified 256 KiB bidirectional UDP-proxy tests on both backends with actual packet lengths bounded by 1200; complete desktop suite including the capture-cadence and interruptible-repair regressions. Required Linux/macOS CI and actual-device comparisons are separate. This does not close latency/stability acceptance or recommend one transport policy universally.
Follow-up accounting fix: a producer can wait internally before capture, so admission anchors its next interval to the clamped shared-clock capture timestamp. Deliberate admission waiting rebases producer cadence and does not count as encoder starvation. The real SyntheticProducer test under a slower negotiated rate now verifies both spacing and unchanged miss accounting after initialization. Recovered-delivery quality cases passed three repeated local runs; strict Clippy passes.