Skip to content

test(isotp): pin the documented reserved FlowStatus deadline - #489

Merged
dborgards merged 1 commit into
mainfrom
codex/isotp-reserved-fs-characterization
Nov 1, 2026
Merged

dborgards merged 1 commit into
mainfrom
codex/isotp-reserved-fs-characterization

Conversation

@dborgards

@dborgards dborgards commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

What does this change?

Adds the channel-level reserved-FlowStatus characterization missing from #353. After a CTS-controlled block, reserved FS 3 and 15 must leave the send pending and preserve its original N_Bs deadline, then end with an N_Bs timeout. Advancing virtual time before the reserved FC distinguishes dropping it from incorrectly treating it as Wait.

This tests the current documented contract. The ISO 15765-2 decision between dropping a reserved FS and immediately aborting remains open; no production behaviour or conformance claim changes.

Refs #353

Type of change

  • feat — new behaviour (minor release)
  • fix / perf — bug or performance fix (patch release)
  • docs / test / refactor / chore / ci — no release
  • Breaking change

Checklist

  • Build with -p:CI=true, test (net10.0), dotnet format --verify-no-changes, and fresh pack + eng/verify-packages.py all pass locally
  • Public API changes are documented with XML comments — no public API change
  • New behaviour is covered by a test — existing documented behaviour characterized; two real source mutations detected
  • The requirement or ADR this relates to is referenced — ISO-TP: verbleibende ISO-15765-2-Normfragen und Reserved-FS-Integrationstest #353; existing N_Bs contract

Validation

  • Full restored-source net10.0 suite: 3127 passed, no failures/skips. Targeted new theory: both rows passed.
  • net48 test-project compile: zero warnings/errors. Runtime execution on net48 is left to Windows CI.
  • Both mutations compiled and failed at runtime for both rows: reserved FS decoded as Wait (500 ms remaining instead of 300 ms); decoded as Overflow (premature completion). Sources restored before the final passing build/suite.
  • Format check passed (workspace-loading warning); nine fresh packages verified; all 50 engineering tests passed; requirements traceability reports no new gaps.

Only the integration-test file changes. Remaining norm-dependent #353 items stay open.

Final CI and reviews

Final head: 89bb779f9283ea63484d755288da434ee63dcb4e. CI 41235246091 is fully green: Linux/macOS/Windows net10.0, Windows net48, format, release configuration, traceability, commit subjects and pack/SBOM dry run. CodeQL 41235245969, Codecov patch and Snyk pass. Codex and Cursor Bugbot completed on this head without findings; no review threads are open.

After one CTS-controlled block, send reserved FS 3 and 15 while N_Bs is
already running. Verify that neither aborts nor re-arms the send, and that
the original virtual deadline still ends it with an N_Bs timeout.

This characterizes the documented current contract; the ISO 15765-2 norm
question in #353 remains open. No production behaviour is changed.

Mutation checks (compiled, runtime-red, sources restored):
- Decode reserved FS as Wait: both rows fail, 500 ms instead of 300 ms.
- Decode reserved FS as Overflow: both rows fail on premature completion.

Refs #353
@cursor

cursor Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

PR Summary

Low Risk
Test-only change with no production or public API impact.

Overview
Adds a channel integration Theory test (reserved FS 3 and 15) for issue #353, documenting how the stack treats reserved Flow Status frames mid multi-frame send.

After CTS with block size 1 and one CF, virtual time advances 200 ms before injecting a reserved FC. The test asserts the send stays in flight, N_Bs is not re-armed (unlike Wait), the timer still shows 300 ms remaining, and the transfer eventually fails with IsoTpTimeoutException on N_Bs. Comments note this pins the current documented contract, not a final ISO 15765-2 interpretation.

Reviewed by Cursor Bugbot for commit 89bb779. Bugbot is set up for automated code reviews on this repo. Configure here.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T19:40:19.231740Z 89bb779 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@codecov

codecov Bot commented Oct 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@dborgards
dborgards merged commit 6607740 into main Nov 1, 2026
14 checks passed
@dborgards
dborgards deleted the codex/isotp-reserved-fs-characterization branch November 1, 2026 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant