Repository navigation
Align Python-policy health statistics - #23
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.
Publication
Released in v0.3.10, together with follow-up #24. A post-merge release audit found that missing verified angle feedback could add a successful latency sample; #24 corrects that case and protects dispatch-only L20 writes. The signed v0.3.9 tag remains unchanged and has no Release or binary publication. Final merged-source CI, complete A+ analysis, twelve-target acceptance and all 26 published asset checks passed; the full verification record is in #24.
Changes
Under the explicit Python policy, health could count wire stages as completed transactions, count report publications as polling feedback, and expose native totals without an active polling plan. This patch projects these statistics using the Python SDK's logical boundaries.
PollingChannel::force_fieldsentries preserve field intent; shared queries use the fastest requested interval. L20Lite scalar categories retain independent queries. Invalid plans are rejected before replacement. Native policy rejects the new selector.The added metrics store owns no transport or scheduler. All physical frames continue through the existing Session.
Compatibility
Existing C++ method signatures and Native defaults remain available. Public structures have appended fields: rebuild the SDK and downstream consumers with matching headers and libraries. Binary compatibility with older headers is not claimed. The minimum and paired transport remain v0.3.4 (
0e190032d65ed0b315337b45b3779cf4f650ed68).Reference Python source:
3a63e723b9a0046e9a60a58339b9f064ef5b70fd. This is the source used for comparison, not a claimed deployment-build SHA.Validation
RuntimeMetrics. 27 reference Python tests passed. Installed-package consumer and documentation/helper checks passed.An initial ARM64 Debug run reached the aggregate communication process's 120-second deadline. Python-policy regressions now run in a separate bounded group: the original 1053 communication cases partition into 935 + 118 without omissions or duplicates. Acceptance budgets and assertions are unchanged. The final ARM64 Debug evidence records 104.51 seconds for
command 14.89 seconds forpython-policy-regressions, with all 19 offline acceptance entries passed. An initial local run also reproduced the previously recorded Native L20Lite polling restart race; the unchanged isolated case and subsequent complete runs passed.Scope
No new physical-device acceptance is claimed. Adapter/driver and firmware combinations, physical timestamps, mixed CAN/FD topology, hardware timing/throughput and extended multi-device operation remain subject to separate hardware validation. O20, Python bindings and hand/arm integration are excluded. Tactile-stage scheduling, remaining identity metadata and automatic reconnect remain separate work.