Repository navigation
feat(rawcan): expose ordered subscription capture loss - #455
Conversation
PR SummaryMedium Risk Overview
Reviewed by Cursor Bugbot for commit a5816cd. Bugbot is set up for automated code reviews on this repo. Configure here. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
What does this change?
A slow RawCan subscriber silently lost its oldest buffered frames. Built-in subscriptions now implement the optional
ILossAwareSubscription, exposing an independent lifetime overflow count andSubscriptionFramesequence numbers. An exclusive reader can locate a gap before a retained frame and invalidate pending pairing/timing evidence.ISubscriptionkeeps its existing members, so external implementations remain compatible. Legacy and sequenced reads share one bounded buffer. Sequence assignment and enqueue order are serialized across writers; dispatch never waits for a reader or invokes arbitrary consumer continuations. Filtering, echo exclusion, reads, cancellation and disposal do not count as overflow. Documentation defines counter saturation, sequence wrap, competing-reader limitations and recovery of fresh evidence; zero local drops do not prove upstream capture completeness.Closes #402. Refs #401; the SRDO monitor and its protocol recovery policy remain separate.
Type of change
feat— new behaviour (minor release)fix/perf— bug or performance fix (patch release)docs/test/refactor/chore/ci— no releaseChecklist
-p:CI=true, test (net10.0),dotnet format --verify-no-changes, and pack +eng/verify-packages.pyall pass locallyValidation
Subscription.csand all 5 executable lines inSubscriptionFrame.cscovered; no missing/partial changed line. Inspected every class entry, including async state machines.CI and coverage on the final head
The HTTP 409 setup failures are fixed by merged PR #457 (#456 closed). Main was incorporated at head
e65d5b42; its only tree difference from the locally tested feature head is the eight exact SDK pins in four workflows. All 50 verification-script tests passed again after that update.On this final head, CI passes on Linux, macOS and Windows: 2894 net10.0 tests per platform and 2882 net48 tests on Windows. Format, CodeQL, documentation, release configuration, requirements traceability and the package/SBOM gate pass. The Codecov patch check passes. Both CI Cobertura copies were inspected across every class/state-machine entry: all 37 changed executable lines are covered, with no missing or partial changed entry.
Codex completed review of the final head without findings. Bugbot reports the reviewed patch unchanged and reuses its completed review. No review threads remain open.