Skip to content

Remove unused L20 write reply reservations under the Python policy - #25

Merged
soulteary merged 4 commits into
mainfrom
fix/python-l20-dispatch-only-v0311
Nov 8, 2026
Merged

soulteary merged 4 commits into
mainfrom
fix/python-l20-dispatch-only-v0311

Conversation

@soulteary

@soulteary soulteary commented Nov 8, 2026 •

Copy link
Copy Markdown
Member

L20 speed, current-limit and fault-clear writes inherited Native optional reply reservations under the explicit Python policy. A same-key read could wait for an unused reply window after the command had already reached physical dispatch.

Remove those reservations for Python-policy L20 dispatch-only controls. Keep physical receipts, frame contents, inter-frame delays and the existing shared Session sender. Python-policy response matching now uses Session event order after physical claim, with a timestamp fallback when order metadata is absent. A queued read cannot consume a previous write reply received before its claim.

Native defaults and public C++ APIs are unchanged. The paired and minimum transport remain v0.3.4 (0e190032d65ed0b315337b45b3779cf4f650ed68). Rebuild the SDK and downstream consumers to use the fix.

Validation:

  • Eight targeted cases / 123 assertions cover absent replies, idle late/malformed replies, repeated write/read pairs, close/reopen, explicit recovery, shared Session isolation, queued-read boundaries and event-order fallback.
  • The queued-read regression fails without the claim filter: the old write value (10) is returned instead of the read reply (64).
  • All ten local CTest groups passed in one final run (88.17 seconds). Eighteen documented installed-consumer examples compiled.
  • 38 related tests passed against Python source 3a63e723b9a0046e9a60a58339b9f064ef5b70fd. A Python runtime probe confirmed dispatch-only speed/current-limit writes followed by reads with 20 ms and 200 ms response overrides.
  • CI: Linux Debug/Release, Windows Debug/Release and ASan/UBSan passed.
  • Prebuilt transport: x86_64 and aarch64 consumers passed with transport v0.3.4.
  • Complete analysis: full A+ report independently checked for complete coverage and zero diagnostics.
  • Package matrix: all twelve targets and the package collector passed.

Classic L20 replies have no transaction identifier. A same-opcode late write reply received after a following read is physically claimed remains indistinguishable from a read response, as in the Python reference. This patch does not remove that protocol limitation.

No new physical-device acceptance is claimed. Deployed firmware reply timing, adapters/drivers, physical timestamps and sustained multi-device operation require separate hardware validation. O20, Python bindings and hand/arm integration are excluded. No second sender or scheduling queue is added.

Earlier local runs encountered intermittent initialization, polling and timeout failures in unchanged Native fixtures. Isolated checks and the final complete run passed without changes to Native implementation, assertions or timeout budgets. The underlying causes have not all been established.

The first Windows x64 Release CI attempt timed out in the unchanged Native L20 subcase of "HandDevice cache and validation stay available during a blocked send". An unchanged selected-job rerun passed. The SDK implementation, assertions and timeout budgets were retained; the underlying cause was not established. The independent Windows x64 Release package validation also passed on the same source.

Published as v0.3.11, stable and latest. The signed tag identifies merged source eb06091; its tree matches the tested PR tree.

Post-merge validation passed on that exact source:

All 26 assets were downloaded and independently checked for source/version/dependency identity, object architecture, API SHA-256 and size, and archive checksums before publication. Public release metadata, notes, signed tag and every published asset digest/size were checked again after publication. Hardware acceptance remains separate as described in the release notes.

@soulteary soulteary changed the title Release Python-policy L20 dispatch-only reply reservations Remove unused L20 write reply reservations under the Python policy Nov 8, 2026
@soulteary
soulteary marked this pull request as ready for review November 8, 2026 18:40
@soulteary
soulteary merged commit eb06091 into main Nov 8, 2026
27 of 28 checks passed
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