oep-client-python 0.0.43__tar.gz → 0.0.45__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (746) hide show
  1. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/CHANGELOG.md +122 -4
  2. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/PKG-INFO +5 -7
  3. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/README.ja.md +4 -6
  4. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/README.md +4 -6
  5. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/README.ja.md +6 -6
  6. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/allocator-conformance.ja.md +1 -1
  7. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/analog-payload-conformance.ja.md +6 -7
  8. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/arm-adi-conformance.ja.md +1 -1
  9. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/attach-conformance.ja.md +1 -1
  10. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/capture-group-geometry-conformance.ja.md +3 -3
  11. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/capture-metadata-conformance.ja.md +0 -1
  12. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/capture-serial-conformance.ja.md +1 -3
  13. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/capture-timeline-lifecycle-conformance.ja.md +1 -1
  14. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/config-conformance.ja.md +2 -2
  15. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/config-execution-conformance.ja.md +1 -1
  16. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/config-fallback-conformance.ja.md +2 -2
  17. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/config-paging-conformance.ja.md +4 -4
  18. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/config-power-loss-conformance.ja.md +4 -4
  19. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/config-storage-conformance.ja.md +1 -1
  20. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/conformance-checks.ja.md +13 -13
  21. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/conformance-spec-compatibility.ja.md +8 -11
  22. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/core-fixed-fields-review.ja.md +1 -1
  23. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/core-smoke-conformance.ja.md +4 -5
  24. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/corr-conformance.ja.md +1 -1
  25. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/cut-conformance.ja.md +2 -2
  26. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/data-conformance.ja.md +3 -3
  27. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/gpio-lifecycle-conformance.ja.md +1 -1
  28. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/hardware-configuration.ja.md +3 -18
  29. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/hardware-quickstart.ja.md +1 -1
  30. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/hardware-schema.ja.md +6 -8
  31. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/host-core-shapes-conformance.ja.md +2 -2
  32. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/host-deadline-conformance.ja.md +2 -2
  33. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/host-request-conformance.ja.md +7 -10
  34. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/host-resend-conformance.ja.md +3 -4
  35. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/host-wait-conformance.ja.md +2 -2
  36. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/interface-conformance.ja.md +1 -1
  37. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/interface-smoke-conformance.ja.md +1 -1
  38. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/notification-retention-conformance.ja.md +2 -3
  39. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/notification-sequence-conformance.ja.md +1 -1
  40. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/oep-example-smoke-conformance.ja.md +3 -3
  41. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/outcome-conformance.ja.md +1 -1
  42. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/pin-constraints-conformance.ja.md +4 -5
  43. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/pipeline-conformance.ja.md +3 -3
  44. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/port-speed-conformance.ja.md +3 -3
  45. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/recovery-conformance.ja.md +2 -2
  46. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/recovery-races-conformance.ja.md +2 -2
  47. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/refusal-order-conformance.ja.md +3 -3
  48. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/replay-pressure-conformance.ja.md +2 -2
  49. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/resource-conformance.ja.md +1 -1
  50. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/response-race-conformance.ja.md +1 -2
  51. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/retention-conformance.ja.md +2 -2
  52. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/retention-lifecycle-conformance.ja.md +1 -1
  53. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/retry-conformance.ja.md +2 -2
  54. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/route-conformance.ja.md +2 -2
  55. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/run-conformance.ja.md +1 -1
  56. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/session-loss-conformance.ja.md +1 -1
  57. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/session-smoke-conformance.ja.md +2 -2
  58. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/stream-conformance.ja.md +3 -3
  59. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/subscription-conformance.ja.md +4 -4
  60. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/tcp-recovery-conformance.ja.md +2 -3
  61. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/testing-consumers.ja.md +2 -2
  62. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/testing-policy.ja.md +4 -40
  63. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/README.ja.md +1 -1
  64. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/capture.json +133 -471
  65. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/common.json +3 -3
  66. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/console.json +7 -7
  67. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/core.json +180 -171
  68. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/debug.json +130 -82
  69. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/fixture.json +35 -35
  70. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/link.json +14 -14
  71. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/plan.json +27 -27
  72. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/restart.json +2 -2
  73. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/trace/transports.json +16 -16
  74. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/usb-conformance.ja.md +22 -2
  75. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/writer-lease-conformance.ja.md +1 -1
  76. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/pyproject.toml +1 -1
  77. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/__init__.py +1 -1
  78. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/__main__.py +4 -4
  79. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/acquire.py +6 -3
  80. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/capture.py +20 -50
  81. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/__init__.py +47 -6
  82. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/allocator.py +1 -1
  83. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_serial.py +1 -1
  84. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/core_smoke.py +1 -1
  85. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/cut.py +1 -1
  86. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/data.py +1 -1
  87. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dependencies.py +1 -1
  88. oep_client_python-0.0.45/src/oep_client/conformance/force_hw.py +147 -0
  89. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/gpio_lifecycle.py +2 -2
  90. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_core.py +1 -1
  91. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_deadline.py +2 -2
  92. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_request_sample.py +1 -2
  93. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_requests.py +10 -15
  94. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_wait.py +2 -2
  95. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/lease.py +1 -1
  96. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/notification_sequence.py +1 -1
  97. oep_client_python-0.0.45/src/oep_client/conformance/notify_hw.py +322 -0
  98. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/oep_smoke.py +3 -3
  99. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/recovery.py +1 -1
  100. oep_client_python-0.0.45/src/oep_client/conformance/release_hw.py +123 -0
  101. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/retention.py +2 -2
  102. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/retention_lifecycle.py +2 -2
  103. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/retry.py +1 -1
  104. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/routes.py +1 -1
  105. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/serial.py +5 -0
  106. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/tcp_peers.py +17 -8
  107. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/tcp_recovery.py +1 -1
  108. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/usb.py +24 -7
  109. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/usb_cases.py +40 -1
  110. oep_client_python-0.0.45/src/oep_client/conformance/usb_hw.py +313 -0
  111. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/writer_lease.py +1 -1
  112. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/dump.py +3 -3
  113. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/endpoint.py +13 -23
  114. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/frames.py +1 -1
  115. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/host.py +8 -8
  116. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/interfaces.py +3 -0
  117. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/link.py +77 -78
  118. oep_client_python-0.0.45/src/oep_client/memo.py +101 -0
  119. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/pins.py +2 -2
  120. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/registry.py +7 -3
  121. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/riscv.py +1 -1
  122. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/speed_record.py +3 -3
  123. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/targets.py +6 -5
  124. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_bench.py +19 -48
  125. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_bench_capture.py +50 -276
  126. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_bench_serve.py +3 -3
  127. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_core.py +3 -4
  128. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/README.ja.md +7 -7
  129. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/README.md +6 -6
  130. oep_client_python-0.0.45/tests/hw/results/e8f60ae84e28-0.0.44+34c0b0b-0.0.44-20261104T190820.json +851 -0
  131. oep_client_python-0.0.45/tests/hw/results/e8f60ae84e28-0.0.44+34c0b0b-0.0.44-20261104T190903.json +178 -0
  132. oep_client_python-0.0.45/tests/hw/results/e8f60ae84e28-unknown-0.0.44-20261104T190857.json +45 -0
  133. oep_client_python-0.0.45/tests/hw/results/esp32-series-30eda0e31108-0.0.44+34c0b0b-0.0.44-20261104T190941.json +928 -0
  134. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/test_probe.py +10 -6
  135. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/spec/DOCS_SHA256 +8 -7
  136. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/spec/oep-v1.toml +18 -60
  137. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_capabilities.py +1 -1
  138. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_capture.py +1 -1
  139. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_capture_blocks.py +1 -1
  140. oep_client_python-0.0.43/tests/test_spec_2c6d18d.py → oep_client_python-0.0.45/tests/test_capture_generation_rules.py +7 -7
  141. oep_client_python-0.0.45/tests/test_capture_rules.py +448 -0
  142. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance.py +2 -2
  143. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_core_fixed_fields.py +1 -1
  144. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_core_smoke.py +1 -1
  145. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_data.py +1 -1
  146. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_fixture_metadata.py +1 -1
  147. oep_client_python-0.0.45/tests/test_conformance_force_hw.py +24 -0
  148. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_core.py +2 -2
  149. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_critical_calls.py +1 -1
  150. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_deadline.py +1 -1
  151. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_resend.py +1 -1
  152. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_tlv.py +1 -1
  153. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_wait.py +1 -1
  154. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_i2c.py +1 -1
  155. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_lease.py +4 -4
  156. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_logic.py +1 -1
  157. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_port_speed.py +1 -1
  158. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_port_speed_execution.py +1 -1
  159. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_reconnect.py +1 -1
  160. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_replay_records_optional.py +1 -1
  161. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_response_race.py +1 -1
  162. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_retention.py +2 -2
  163. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_retention_lifecycle.py +1 -1
  164. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_reviewed_pins.py +2 -2
  165. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_routes.py +4 -4
  166. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_selected_metadata.py +1 -1
  167. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_spi.py +2 -2
  168. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_tcp_peers.py +2 -2
  169. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_usb.py +94 -2
  170. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_wire_options.py +2 -2
  171. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_writer_lease.py +1 -1
  172. oep_client_python-0.0.45/tests/test_core_rules.py +792 -0
  173. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_debug_attach.py +2 -2
  174. oep_client_python-0.0.45/tests/test_debug_rules.py +881 -0
  175. oep_client_python-0.0.43/tests/test_spec_3cc50c8.py → oep_client_python-0.0.45/tests/test_describe_unset_idle_rules.py +1 -1
  176. oep_client_python-0.0.43/tests/test_review7_exact_payload.py → oep_client_python-0.0.45/tests/test_exact_payload_rules.py +8 -8
  177. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_extension_patterns.py +1 -1
  178. oep_client_python-0.0.45/tests/test_fixture_link_settings_rules.py +430 -0
  179. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_gpio_drive_and_serve_options.py +1 -1
  180. oep_client_python-0.0.43/tests/test_review7_host_recovery.py → oep_client_python-0.0.45/tests/test_host_recovery_rules.py +3 -3
  181. oep_client_python-0.0.43/tests/test_host_rules_2026_10_06.py → oep_client_python-0.0.45/tests/test_host_rules_bounds_options.py +26 -27
  182. oep_client_python-0.0.43/tests/test_host_rules_2026_10_02.py → oep_client_python-0.0.45/tests/test_host_rules_waits_lines.py +37 -39
  183. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_host_wait_bound.py +1 -1
  184. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_interfaces.py +2 -2
  185. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_link_serial.py +1 -1
  186. oep_client_python-0.0.45/tests/test_memo.py +128 -0
  187. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_no_resume.py +1 -1
  188. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_pins.py +3 -2
  189. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_plan.py +1 -1
  190. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_port_speed.py +14 -14
  191. oep_client_python-0.0.43/tests/test_review7_request_validation.py → oep_client_python-0.0.45/tests/test_request_validation_rules.py +1 -1
  192. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_session.py +2 -2
  193. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_spec_sections.py +1 -1
  194. oep_client_python-0.0.43/tests/test_review7_state_resources.py → oep_client_python-0.0.45/tests/test_state_resource_rules.py +1 -1
  195. oep_client_python-0.0.43/tests/test_review7_tlv_readers.py → oep_client_python-0.0.45/tests/test_tlv_reader_rules.py +2 -2
  196. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_capture.py +20 -20
  197. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_common.py +1 -1
  198. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_console.py +1 -1
  199. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_core.py +3 -3
  200. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_core_names.py +1 -1
  201. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_debug.py +2 -2
  202. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_fixture.py +2 -2
  203. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_link.py +3 -3
  204. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_plan.py +1 -1
  205. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_restart.py +2 -2
  206. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_transports.py +1 -1
  207. oep_client_python-0.0.43/tests/test_spec_283e5b5.py → oep_client_python-0.0.45/tests/test_transport_session_rules.py +1 -1
  208. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_formats.py +3 -3
  209. oep_client_python-0.0.45/tests/test_virtual_bench_capture_options.py +147 -0
  210. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_pin_constraints.py +1 -1
  211. oep_client_python-0.0.43/tests/test_virtual_bench_rules_2026_10_02.py → oep_client_python-0.0.45/tests/test_virtual_bench_rules_core.py +45 -46
  212. oep_client_python-0.0.43/tests/test_virtual_bench_rules_2026_10_06.py → oep_client_python-0.0.45/tests/test_virtual_bench_rules_ops_lines.py +36 -37
  213. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_spec.py +3 -3
  214. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_targets.py +1 -1
  215. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_core.py +41 -2
  216. oep_client_python-0.0.45/tests/vectors/SPEC_COMMIT +1 -0
  217. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/SPEC_SHA256 +4 -4
  218. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/capture_formats.json +1 -27
  219. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/ops.json +1 -1
  220. oep_client_python-0.0.43/tests/test_review4_capture.py +0 -227
  221. oep_client_python-0.0.43/tests/test_review4_debug.py +0 -201
  222. oep_client_python-0.0.43/tests/test_review4_small.py +0 -176
  223. oep_client_python-0.0.43/tests/test_review5_capture.py +0 -111
  224. oep_client_python-0.0.43/tests/test_review5_core_a.py +0 -202
  225. oep_client_python-0.0.43/tests/test_review5_core_b.py +0 -166
  226. oep_client_python-0.0.43/tests/test_review5_debug_targets.py +0 -106
  227. oep_client_python-0.0.43/tests/test_review5_debug_wires.py +0 -237
  228. oep_client_python-0.0.43/tests/test_review5_small.py +0 -157
  229. oep_client_python-0.0.43/tests/test_review6_capture_console.py +0 -127
  230. oep_client_python-0.0.43/tests/test_review6_core_early.py +0 -166
  231. oep_client_python-0.0.43/tests/test_review6_core_late.py +0 -146
  232. oep_client_python-0.0.43/tests/test_review6_debug_a.py +0 -149
  233. oep_client_python-0.0.43/tests/test_review6_debug_b.py +0 -164
  234. oep_client_python-0.0.43/tests/test_review6_rest.py +0 -118
  235. oep_client_python-0.0.43/tests/test_review8_core_1.py +0 -43
  236. oep_client_python-0.0.43/tests/test_review8_core_2.py +0 -144
  237. oep_client_python-0.0.43/tests/test_review8_debug.py +0 -101
  238. oep_client_python-0.0.43/tests/test_virtual_bench_capture_options.py +0 -322
  239. oep_client_python-0.0.43/tests/vectors/SPEC_COMMIT +0 -1
  240. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/.gitignore +0 -0
  241. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/LICENSE +0 -0
  242. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/analog-conformance.ja.md +0 -0
  243. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/block-conformance.ja.md +0 -0
  244. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/capture-group-conformance.ja.md +0 -0
  245. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/capture-timeline-conformance.ja.md +0 -0
  246. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/clock-conformance.ja.md +0 -0
  247. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/debug-conformance.ja.md +0 -0
  248. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/dependency-conformance.ja.md +0 -0
  249. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/discovery-conformance.ja.md +0 -0
  250. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/dmseq-conformance.ja.md +0 -0
  251. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/dmseq-target-conformance.ja.md +0 -0
  252. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/execution-order-conformance.ja.md +0 -0
  253. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/exhausted-conformance.ja.md +0 -0
  254. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/fixture-metadata-conformance.ja.md +0 -0
  255. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/gpio-conformance.ja.md +0 -0
  256. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/host-notification-conformance.ja.md +0 -0
  257. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/host-tlv-conformance.ja.md +0 -0
  258. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/host-value-conformance.ja.md +0 -0
  259. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/i2c-conformance.ja.md +0 -0
  260. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/lease-conformance.ja.md +0 -0
  261. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/link-routes-conformance.ja.md +0 -0
  262. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/link-transfer-conformance.ja.md +0 -0
  263. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/logic-conformance.ja.md +0 -0
  264. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/mailbox-conformance.ja.md +0 -0
  265. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/notification-output-sample.ja.md +0 -0
  266. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/oep-declaration-conformance.ja.md +0 -0
  267. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/probe-input-conformance.ja.md +0 -0
  268. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/registered-ops-conformance.ja.md +0 -0
  269. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/reset-conformance.ja.md +0 -0
  270. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/restart-conformance.ja.md +0 -0
  271. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/scan-conformance.ja.md +0 -0
  272. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/scan-options-conformance.ja.md +0 -0
  273. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/selected-metadata-conformance.ja.md +0 -0
  274. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/spec-follow-notes.ja.md +0 -0
  275. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/spi-conformance.ja.md +0 -0
  276. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/step-conformance.ja.md +0 -0
  277. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/tlv-request-conformance.ja.md +0 -0
  278. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/uart-conformance.ja.md +0 -0
  279. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/uart-stream-conformance.ja.md +0 -0
  280. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/docs/wire-options-conformance.ja.md +0 -0
  281. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/arm.py +0 -0
  282. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/capture_blocks.py +0 -0
  283. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/catalog.py +0 -0
  284. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/ch32_flash.py +0 -0
  285. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/cobs.py +0 -0
  286. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/allocator_model.py +0 -0
  287. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/allocator_sample.py +0 -0
  288. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/analog.py +0 -0
  289. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/analog_model.py +0 -0
  290. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/analog_payload.py +0 -0
  291. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/analog_sample.py +0 -0
  292. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/arm_adi.py +0 -0
  293. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/arm_adi_blocks.py +0 -0
  294. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/arm_adi_model.py +0 -0
  295. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/arm_adi_sample.py +0 -0
  296. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/attach.py +0 -0
  297. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/attach_model.py +0 -0
  298. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/attach_sample.py +0 -0
  299. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/block_model.py +0 -0
  300. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/block_sample.py +0 -0
  301. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/blocks.py +0 -0
  302. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_group.py +0 -0
  303. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_group_geometry.py +0 -0
  304. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_group_geometry_model.py +0 -0
  305. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_group_model.py +0 -0
  306. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_group_sample.py +0 -0
  307. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_metadata.py +0 -0
  308. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_metadata_model.py +0 -0
  309. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_serial_sample.py +0 -0
  310. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_timeline.py +0 -0
  311. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_timeline_lifecycle.py +0 -0
  312. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_timeline_model.py +0 -0
  313. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/capture_timeline_sample.py +0 -0
  314. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/clock.py +0 -0
  315. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/clock_model.py +0 -0
  316. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/clock_sample.py +0 -0
  317. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/core_fixed_fields.py +0 -0
  318. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/corr.py +0 -0
  319. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/cut_model.py +0 -0
  320. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/cut_sample.py +0 -0
  321. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/data_model.py +0 -0
  322. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/data_sample.py +0 -0
  323. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/debug.py +0 -0
  324. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/debug_model.py +0 -0
  325. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/debug_sample.py +0 -0
  326. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/declaration_model.py +0 -0
  327. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dependency_model.py +0 -0
  328. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dependency_sample.py +0 -0
  329. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/discovery.py +0 -0
  330. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dmseq.py +0 -0
  331. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dmseq_model.py +0 -0
  332. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dmseq_sample.py +0 -0
  333. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dmseq_target.py +0 -0
  334. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dmseq_target_model.py +0 -0
  335. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/dmseq_target_sample.py +0 -0
  336. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/execution_order.py +0 -0
  337. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/execution_order_sample.py +0 -0
  338. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/exhausted.py +0 -0
  339. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/exhausted_sample.py +0 -0
  340. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/fixture_metadata.py +0 -0
  341. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/fixture_metadata_model.py +0 -0
  342. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/gpio.py +0 -0
  343. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/gpio_lifecycle_model.py +0 -0
  344. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/gpio_lifecycle_sample.py +0 -0
  345. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/gpio_model.py +0 -0
  346. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/gpio_sample.py +0 -0
  347. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_core_sample.py +0 -0
  348. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_deadline_sample.py +0 -0
  349. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_notifications.py +0 -0
  350. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_notifications_sample.py +0 -0
  351. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_resend.py +0 -0
  352. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_resend_sample.py +0 -0
  353. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_tlv.py +0 -0
  354. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_tlv_sample.py +0 -0
  355. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_values.py +0 -0
  356. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_values_sample.py +0 -0
  357. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/host_wait_sample.py +0 -0
  358. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/i2c.py +0 -0
  359. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/i2c_model.py +0 -0
  360. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/i2c_sample.py +0 -0
  361. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/interface_smoke.py +0 -0
  362. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/interfaces.py +0 -0
  363. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/lease_sample.py +0 -0
  364. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/link_routes.py +0 -0
  365. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/link_routes_model.py +0 -0
  366. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/link_routes_sample.py +0 -0
  367. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/link_transfer_model.py +0 -0
  368. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/link_transfer_sample.py +0 -0
  369. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/link_transfers.py +0 -0
  370. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/logic.py +0 -0
  371. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/logic_model.py +0 -0
  372. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/logic_sample.py +0 -0
  373. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/mailbox.py +0 -0
  374. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/mailbox_model.py +0 -0
  375. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/mailbox_sample.py +0 -0
  376. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/notification_model.py +0 -0
  377. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/notification_retention.py +0 -0
  378. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/notification_retention_sample.py +0 -0
  379. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/notification_sequence_sample.py +0 -0
  380. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/oep_declaration_model.py +0 -0
  381. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/oep_declarations.py +0 -0
  382. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/outcome_model.py +0 -0
  383. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/outcome_sample.py +0 -0
  384. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/outcomes.py +0 -0
  385. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/pipeline.py +0 -0
  386. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/pipeline_model.py +0 -0
  387. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/pipeline_sample.py +0 -0
  388. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/port_speed.py +0 -0
  389. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/port_speed_execution.py +0 -0
  390. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/port_speed_execution_model.py +0 -0
  391. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/port_speed_execution_sample.py +0 -0
  392. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/port_speed_lifecycle.py +0 -0
  393. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/port_speed_model.py +0 -0
  394. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/port_speed_sample.py +0 -0
  395. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/probe_input.py +0 -0
  396. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/probe_input_sample.py +0 -0
  397. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/recovery_race_sample.py +0 -0
  398. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/recovery_races.py +0 -0
  399. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/recovery_sample.py +0 -0
  400. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/refusal_order.py +0 -0
  401. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/refusal_order_sample.py +0 -0
  402. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/registered_ops.py +0 -0
  403. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/registered_ops_model.py +0 -0
  404. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/replay_pressure.py +0 -0
  405. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/reset.py +0 -0
  406. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/reset_model.py +0 -0
  407. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/reset_sample.py +0 -0
  408. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/resource_model.py +0 -0
  409. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/resource_sample.py +0 -0
  410. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/resources.py +0 -0
  411. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/response_race.py +0 -0
  412. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/response_race_sample.py +0 -0
  413. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/restart.py +0 -0
  414. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/restart_model.py +0 -0
  415. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/restart_sample.py +0 -0
  416. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/retention_lifecycle_sample.py +0 -0
  417. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/retention_model.py +0 -0
  418. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/retention_sample.py +0 -0
  419. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/retry_model.py +0 -0
  420. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/retry_sample.py +0 -0
  421. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/route_model.py +0 -0
  422. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/route_sample.py +0 -0
  423. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/run.py +0 -0
  424. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/run_model.py +0 -0
  425. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/run_sample.py +0 -0
  426. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/scan.py +0 -0
  427. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/scan_model.py +0 -0
  428. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/scan_options.py +0 -0
  429. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/scan_options_model.py +0 -0
  430. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/scan_options_sample.py +0 -0
  431. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/scan_sample.py +0 -0
  432. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/selected_metadata.py +0 -0
  433. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/selected_metadata_model.py +0 -0
  434. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/session_loss.py +0 -0
  435. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/session_loss_sample.py +0 -0
  436. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/session_smoke.py +0 -0
  437. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/spi.py +0 -0
  438. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/spi_model.py +0 -0
  439. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/spi_sample.py +0 -0
  440. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/step.py +0 -0
  441. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/step_model.py +0 -0
  442. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/step_sample.py +0 -0
  443. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/stream.py +0 -0
  444. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/stream_model.py +0 -0
  445. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/stream_sample.py +0 -0
  446. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/subscription_sample.py +0 -0
  447. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/subscriptions.py +0 -0
  448. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/tcp.py +0 -0
  449. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/tcp_recovery_sample.py +0 -0
  450. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/tlv_request_model.py +0 -0
  451. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/tlv_requests.py +0 -0
  452. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/uart.py +0 -0
  453. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/uart_model.py +0 -0
  454. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/uart_sample.py +0 -0
  455. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/uart_stream.py +0 -0
  456. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/uart_stream_sample.py +0 -0
  457. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/usb_model.py +0 -0
  458. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/wire_options.py +0 -0
  459. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/wire_options_model.py +0 -0
  460. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/wire_options_sample.py +0 -0
  461. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/writer_lease_model.py +0 -0
  462. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/conformance/writer_lease_sample.py +0 -0
  463. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/console.py +0 -0
  464. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/core.py +0 -0
  465. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/decode.py +0 -0
  466. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/discovery.py +0 -0
  467. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/fixture.py +0 -0
  468. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/hardware.py +0 -0
  469. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/hid_stream.py +0 -0
  470. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/kept_session.py +0 -0
  471. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/linktest.py +0 -0
  472. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/message.py +0 -0
  473. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/names.py +0 -0
  474. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/probe_log.py +0 -0
  475. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/pytest_conformance.py +0 -0
  476. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/rp2350.py +0 -0
  477. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/settings.py +0 -0
  478. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/stimulus.py +0 -0
  479. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/uiapduino.py +0 -0
  480. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/usb_stream.py +0 -0
  481. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_bench_mdns.py +0 -0
  482. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_bench_serial.py +0 -0
  483. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_bench_trigger.py +0 -0
  484. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_bench_usb.py +0 -0
  485. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_fixture_drive.py +0 -0
  486. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/src/oep_client/virtual_names.py +0 -0
  487. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/conftest.py +0 -0
  488. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/equipment/.env.example +0 -0
  489. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/equipment/test_core_contract.py +0 -0
  490. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/equipment/test_preflight.py +0 -0
  491. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/fixtures/hardware.virtual.toml +0 -0
  492. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/.env.example +0 -0
  493. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/.env.virtual.example +0 -0
  494. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/__init__.py +0 -0
  495. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/boards.py +0 -0
  496. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/conftest.py +0 -0
  497. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/firmware.py +0 -0
  498. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/flash.py +0 -0
  499. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/hardware.example.toml +0 -0
  500. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/hardware.resolved.example.toml +0 -0
  501. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/record.py +0 -0
  502. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/.gitignore +0 -0
  503. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.26+5bafb92-0.0.26.json +0 -0
  504. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.26+654b06a-0.0.26.json +0 -0
  505. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.27+ec1df99-0.0.27.json +0 -0
  506. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32+1491c13-0.0.31-20261016T133559.json +0 -0
  507. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32+672bf7b-0.0.32-20261016T164655.json +0 -0
  508. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131458.json +0 -0
  509. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131510.json +0 -0
  510. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131526.json +0 -0
  511. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131532.json +0 -0
  512. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131656.json +0 -0
  513. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131703.json +0 -0
  514. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131708.json +0 -0
  515. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132050.json +0 -0
  516. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132057.json +0 -0
  517. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132104.json +0 -0
  518. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.36+f8ac55a-0.0.36-20261022T160307.json +0 -0
  519. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.36+f8ac55a-0.0.36-20261022T161655.json +0 -0
  520. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.37+1031feb-0.0.37-20261023T214002.json +0 -0
  521. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.38+7c158ff-0.0.38-20261027T081156.json +0 -0
  522. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+1ad47c7-0.0.39-20261027T182907.json +0 -0
  523. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+2c0c41f-0.0.39-20261027T174907.json +0 -0
  524. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+9317805-0.0.39-20261027T191153.json +0 -0
  525. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+a75fd45-0.0.39-20261027T205055.json +0 -0
  526. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+ca5f896-0.0.39-20261027T201038.json +0 -0
  527. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+ca5f896-0.0.39-20261027T201057.json +0 -0
  528. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+ca5f896-0.0.39-20261027T201058.json +0 -0
  529. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+ca5f896-0.0.39-20261027T201059.json +0 -0
  530. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+ca5f896__crash_at_2106_s_-0.0.39-20261027T204608.json +0 -0
  531. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+d4d323c-0.0.39-20261028T190815.json +0 -0
  532. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/9489dd2ae0953650-0.0.39+d4d323c-0.0.39-20261028T191854.json +0 -0
  533. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+1ad47c7-0.0.39-20261027T181116.json +0 -0
  534. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+1ad47c7-0.0.39-20261027T181812.json +0 -0
  535. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+1ad47c7-0.0.39-20261027T182903.json +0 -0
  536. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+62463f2-0.0.39-20261029T145541.json +0 -0
  537. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+9317805-0.0.39-20261027T191150.json +0 -0
  538. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+a75fd45-0.0.39-20261028T190803.json +0 -0
  539. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+b7fbdf9-0.0.39-20261027T191727.json +0 -0
  540. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+b7fbdf9-0.0.39-20261027T204611.json +0 -0
  541. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+bb371fb-0.0.39-20261028T191811.json +0 -0
  542. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/e8f60ae84e28-0.0.39+bb371fb-0.0.39-20261028T191849.json +0 -0
  543. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.26+4fad559-0.0.26.json +0 -0
  544. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.26+5bafb92-0.0.26.json +0 -0
  545. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32+1491c13-0.0.31-20261016T133501.json +0 -0
  546. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32+672bf7b-0.0.32-20261016T164559.json +0 -0
  547. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32-0.0.31-20261016T130922.json +0 -0
  548. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32-0.0.31-20261016T131024.json +0 -0
  549. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.36+12e1222-0.0.37-20261023T214016.json +0 -0
  550. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.36+f8ac55a-0.0.36-20261022T160134.json +0 -0
  551. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.37+1031feb-0.0.37-20261023T214230.json +0 -0
  552. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.38+7c158ff-0.0.38-20261027T081159.json +0 -0
  553. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.39+2c0c41f-0.0.39-20261027T174933.json +0 -0
  554. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.39+9317805-0.0.39-20261027T191154.json +0 -0
  555. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.39+b7fbdf9-0.0.39-20261027T204617.json +0 -0
  556. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.39+bb371fb-0.0.39-20261028T191816.json +0 -0
  557. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.25-0.0.26.json +0 -0
  558. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+5bafb92-0.0.26.json +0 -0
  559. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+654b06a-0.0.26.json +0 -0
  560. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+e877631-0.0.26.json +0 -0
  561. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27+ac80e07-0.0.27.json +0 -0
  562. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27+ec1df99-0.0.27.json +0 -0
  563. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27-0.0.27.json +0 -0
  564. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.28-0.0.28.json +0 -0
  565. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.37+1031feb-0.0.37-20261023T220718.json +0 -0
  566. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.37+1031feb-0.0.37-20261023T221106.json +0 -0
  567. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.37+1031feb__panic_at_11_s_-0.0.37-20261023T220856.json +0 -0
  568. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.37+1031feb__panic_at_11_s_-0.0.37-20261023T220901.json +0 -0
  569. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.37+1031feb__panic_at_11_s_-0.0.37-20261023T220915.json +0 -0
  570. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-unknown-0.0.26.json +0 -0
  571. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-unknown-0.0.37-20261023T214102.json +0 -0
  572. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-pico-d4-50029191fe34-unknown-0.0.39-20261028T190818.json +0 -0
  573. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0e31108-0.0.26+5bafb92-0.0.26.json +0 -0
  574. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0e31108-0.0.26+654b06a-0.0.26.json +0 -0
  575. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0e343c6-0.0.26+5bafb92-0.0.26.json +0 -0
  576. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0e343c6-0.0.26+654b06a-0.0.26.json +0 -0
  577. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0e343c6-0.0.27+ec1df99-0.0.27.json +0 -0
  578. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0e343c6-0.0.28+ffe4eb1-0.0.28.json +0 -0
  579. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0e343c6-0.0.28-0.0.28.json +0 -0
  580. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+0f013b7-0.0.28.json +0 -0
  581. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+1c940ca-0.0.28.json +0 -0
  582. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+4ef21db+4ef21db-dirty-0.0.28.json +0 -0
  583. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+68d9694-0.0.28.json +0 -0
  584. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+ec38b1d-0.0.28.json +0 -0
  585. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+ffe4eb1-0.0.28.json +0 -0
  586. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28-0.0.28.json +0 -0
  587. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.36+f8ac55a-0.0.36-20261022T160503.json +0 -0
  588. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.37+1031feb-0.0.37-20261023T214005.json +0 -0
  589. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.38+7c158ff-0.0.38-20261027T081145.json +0 -0
  590. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.38+7c158ff-0.0.38-20261027T081152.json +0 -0
  591. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+1ad47c7-0.0.39-20261027T180716.json +0 -0
  592. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+1ad47c7-0.0.39-20261027T182855.json +0 -0
  593. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+1ad47c7-0.0.39-20261027T183107.json +0 -0
  594. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+2c0c41f-0.0.39-20261027T174908.json +0 -0
  595. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+2c0c41f__task-wdt_at_18_s_-0.0.39-20261027T175743.json +0 -0
  596. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+2c0c41f__task-wdt_at_18_s_-0.0.39-20261027T175815.json +0 -0
  597. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+2c0c41f__task-wdt_at_33_s_-0.0.39-20261027T175634.json +0 -0
  598. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+2c0c41f__task-wdt_at_431_s_-0.0.39-20261027T175709.json +0 -0
  599. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+62463f2-0.0.39-20261029T145536.json +0 -0
  600. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+7445bee-0.0.39-20261027T155413.json +0 -0
  601. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+9317805-0.0.39-20261027T191146.json +0 -0
  602. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+b7fbdf9-0.0.39-20261027T191724.json +0 -0
  603. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+bb371fb-0.0.39-20261028T191806.json +0 -0
  604. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+bb371fb-0.0.39-20261028T191843.json +0 -0
  605. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-0.0.39+d4d323c-0.0.39-20261028T190809.json +0 -0
  606. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-unknown-0.0.36-20261022T160222.json +0 -0
  607. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-unknown-0.0.39-20261027T155301.json +0 -0
  608. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/results/esp32-series-30eda0ea068b-unknown-0.0.39-20261027T155340.json +0 -0
  609. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/hw/test_harness.py +0 -0
  610. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/spec_names.py +0 -0
  611. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_acquire.py +0 -0
  612. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_address.py +0 -0
  613. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_cobs.py +0 -0
  614. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_allocator.py +0 -0
  615. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_analog.py +0 -0
  616. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_analog_payload.py +0 -0
  617. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_arm_adi.py +0 -0
  618. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_arm_adi_blocks.py +0 -0
  619. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_attach.py +0 -0
  620. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_blocks.py +0 -0
  621. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_capture_group.py +0 -0
  622. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_capture_group_geometry.py +0 -0
  623. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_capture_metadata.py +0 -0
  624. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_capture_serial.py +0 -0
  625. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_capture_timeline.py +0 -0
  626. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_capture_timeline_lifecycle.py +0 -0
  627. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_clock.py +0 -0
  628. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_corr.py +0 -0
  629. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_cut.py +0 -0
  630. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_debug.py +0 -0
  631. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_dependencies.py +0 -0
  632. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_discovery.py +0 -0
  633. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_dmseq.py +0 -0
  634. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_dmseq_target.py +0 -0
  635. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_execution_order.py +0 -0
  636. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_exhausted.py +0 -0
  637. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_gpio.py +0 -0
  638. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_gpio_lifecycle.py +0 -0
  639. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_notifications.py +0 -0
  640. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_requests.py +0 -0
  641. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_host_values.py +0 -0
  642. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_interface_smoke.py +0 -0
  643. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_interfaces.py +0 -0
  644. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_link_routes.py +0 -0
  645. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_link_transfers.py +0 -0
  646. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_mailbox.py +0 -0
  647. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_notification_output.py +0 -0
  648. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_notification_retention.py +0 -0
  649. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_notification_sequence.py +0 -0
  650. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_oep_declarations.py +0 -0
  651. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_oep_smoke.py +0 -0
  652. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_outcomes.py +0 -0
  653. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_pipeline.py +0 -0
  654. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_port_speed_lifecycle.py +0 -0
  655. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_probe_input.py +0 -0
  656. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_recovery.py +0 -0
  657. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_recovery_races.py +0 -0
  658. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_refusal_order.py +0 -0
  659. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_registered_ops.py +0 -0
  660. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_replay_pressure.py +0 -0
  661. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_reset.py +0 -0
  662. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_resources.py +0 -0
  663. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_restart.py +0 -0
  664. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_retry.py +0 -0
  665. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_run.py +0 -0
  666. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_scan.py +0 -0
  667. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_scan_options.py +0 -0
  668. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_serial.py +0 -0
  669. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_session_loss.py +0 -0
  670. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_session_smoke.py +0 -0
  671. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_spec_guard.py +0 -0
  672. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_step.py +0 -0
  673. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_stream.py +0 -0
  674. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_subscriptions.py +0 -0
  675. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_tcp.py +0 -0
  676. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_tcp_recovery.py +0 -0
  677. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_tlv_requests.py +0 -0
  678. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_uart.py +0 -0
  679. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_conformance_uart_stream.py +0 -0
  680. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_console_queue_and_reset_settle.py +0 -0
  681. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_fixture_controllers.py +0 -0
  682. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_fixture_out.py +0 -0
  683. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_fixture_targets.py +0 -0
  684. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_flash_console.py +0 -0
  685. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_hardware.py +0 -0
  686. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_hid_stream.py +0 -0
  687. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_host_boot_lifecycle.py +0 -0
  688. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_link_drop.py +0 -0
  689. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_link_host.py +0 -0
  690. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_linktest.py +0 -0
  691. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_literals.py +0 -0
  692. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_minimal_ops.py +0 -0
  693. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_open_extensions.py +0 -0
  694. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_passthrough.py +0 -0
  695. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_probe_log.py +0 -0
  696. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_request_tails.py +0 -0
  697. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_restart.py +0 -0
  698. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_resubscribe_after_reopen.py +0 -0
  699. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_rvswd_rest.py +0 -0
  700. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_settings.py +0 -0
  701. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_spec_vectors.py +0 -0
  702. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_stimulus.py +0 -0
  703. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_target_parts.py +0 -0
  704. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_tcp_discovery.py +0 -0
  705. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_trace_fixture_drive.py +0 -0
  706. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_usb_identity.py +0 -0
  707. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_usb_stream.py +0 -0
  708. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_analog_roles.py +0 -0
  709. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_announce.py +0 -0
  710. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture.py +0 -0
  711. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_changing_trigger.py +0 -0
  712. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_channel_time.py +0 -0
  713. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_format_2.py +0 -0
  714. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_initial_trigger_time.py +0 -0
  715. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_lifetime.py +0 -0
  716. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_notifications.py +0 -0
  717. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_one_shot_time.py +0 -0
  718. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_pretrigger.py +0 -0
  719. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_query.py +0 -0
  720. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_rates.py +0 -0
  721. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_requests.py +0 -0
  722. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_resume_calibration.py +0 -0
  723. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_trigger_modes.py +0 -0
  724. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_trigger_source.py +0 -0
  725. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_trigger_source_more.py +0 -0
  726. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_capture_waiting.py +0 -0
  727. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_serve_reboot.py +0 -0
  728. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_bench_serve_tcp_connections.py +0 -0
  729. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_virtual_core_bool.py +0 -0
  730. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/test_wire_hold.py +0 -0
  731. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/checks.json +0 -0
  732. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/cobs.json +0 -0
  733. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/confirm.json +0 -0
  734. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/core_extensions.json +0 -0
  735. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/core_lifecycle.json +0 -0
  736. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/core_policy.json +0 -0
  737. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/discovery.json +0 -0
  738. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/headers.json +0 -0
  739. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/interface_boundaries.json +0 -0
  740. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/interface_profiles.json +0 -0
  741. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/logic_layout.json +0 -0
  742. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/ops_encoding.json +0 -0
  743. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/refusals.json +0 -0
  744. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/sessions.json +0 -0
  745. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/tests/vectors/settings_file.json +0 -0
  746. {oep_client_python-0.0.43 → oep_client_python-0.0.45}/udev/70-oep-probe.rules +0 -0
@@ -2,6 +2,124 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.0.45
6
+ - (EN) Added: `oep_client.memo` for `oep.probe.memo` (oep-if-memo): list (paged, by prefix), read and write in parts at the
7
+ route's max_frame, delete; a read whose data does not match its crc raises MemoTorn. `oep dump` names the interface and
8
+ its max_object / max_objects. Registry and documents synced from oep-spec 2cd20aa (the memo interface; MUSTs that only
9
+ touch quality relaxed to SHOULD); the conformance checkers' pins moved with it after a review (none checks a relaxed rule).
10
+ - (JA) 追加: `oep.probe.memo`(oep-if-memo)の `oep_client.memo`。list(ページ分け、prefix)、経路の max_frame に合わせて分ける read と
11
+ write、delete。データが crc と合わない read は MemoTorn。`oep dump` がこのインターフェースと max_object / max_objects を示す。registry と
12
+ 文書を oep-spec 2cd20aa から同期した(メモ欄。品質だけにかかわる必須を推奨にした)。適合の検査の固定は、見直して合わせた(緩めた規則を
13
+ 確かめる検査は無い)。
14
+ - (EN) Fixed (tests/hw): capture_repeat_rearm configured 100 kHz whatever the probe declared, so a probe whose lowest rate
15
+ is above it (ESP32-P4: 627 kHz) refused the rate and the test skipped as if rearm were missing. It takes a declared
16
+ rate, and skips only when trigger_opts is the refused tag. It passes on ESP32-P4 and P4X probes.
17
+ - (JA) 修正(tests/hw): capture_repeat_rearm は probe の宣言によらず 100 kHz で configure していたので、最も遅いレートがそれより速い
18
+ probe(ESP32-P4: 627 kHz)ではレートで断られ、rearm が無いかのように skip していた。宣言したレートを使い、断られた tag が
19
+ trigger_opts のときだけ skip する。ESP32-P4 と P4X のプローブで通る。
20
+ - (EN) Added: `python -m oep_client.conformance.release_hw` checks electrically that a released pin goes back to its idle
21
+ state whatever released it (core §8, §9, §6.4): the channel's idle is set to pull-up / pull-down, fixture gpio drives the
22
+ line the other way, and a CH32 target's GPIO input, read over the probe's debug wire, must read the drive and then the
23
+ pull after plan_release, end, another id's force and the lease running out. All eight pass on an ESP32-P4 probe with a
24
+ CH32X035.
25
+ - (JA) 追加: `python -m oep_client.conformance.release_hw` は、どの道で解いても解いたピンが空きの状態に戻ることを電気的に確かめる
26
+ (core §8、§9、§6.4): channel の idle を pull-up / pull-down にし、fixture gpio で逆に駆動し、プローブの debug の線で読む CH32 の
27
+ target の GPIO の入力が、駆動を読み、plan_release、end、別の id の force、lease の期限切れの後にプルを読む。ESP32-P4 のプローブと
28
+ CH32X035 で 8 つとも通る。
29
+ - (EN) Added: `python -m oep_client.conformance.notify_hw` checks subscriptions and notifications on a real probe
30
+ (core §10, §9, §6.4; transports §3) with a logic capture streaming on one channel the user names: subscribe needs the
31
+ lock, unsubscribe with none succeeds, seq from 0 one by one with positions back to back, answers first while it
32
+ streams, a new subscribe restarts seq, max_delay_ms batches, nothing on another route, nothing after end or a force.
33
+ All nine pass on ESP32-P4 and P4X probes.
34
+ - (JA) 追加: `python -m oep_client.conformance.notify_hw` は、利用者が名指した 1 本の線でロジックのキャプチャをストリーミングさせ、
35
+ 実機で購読と通知を確かめる(core §10、§9、§6.4、transports §3): subscribe はロックが要る、購読が無い unsubscribe は成功、seq は 0 から
36
+ 1 ずつで position は途切れない、ストリーミング中も応答が先、subscribe し直すと seq は 0 から、max_delay_ms でまとめて送る、ほかの
37
+ 経路には届かない、end と force の後は届かない。ESP32-P4 と P4X のプローブで 9 つとも通る。
38
+ - (EN) Added: `python -m oep_client.conformance.force_hw` checks on a real probe that force releases the resources of the
39
+ session it takes from (core §6.4, §9): S attaches to a target (a debug connection), T of another id opens with force;
40
+ S's connection is gone from connections, its number is no_resource, S's keepalive is refused, and T's attach gets a new,
41
+ larger number. It passes on an ESP32-P4 probe with a CH32V208 over rvswd.
42
+ - (JA) 追加: `python -m oep_client.conformance.force_hw` は、実機で force が奪ったセッションの資源を解放することを確かめる(core §6.4、
43
+ §9): S が target に attach し(debug の接続)、別の id の T が force で open する。S の接続は connections から消え、その番号は
44
+ no_resource、S の keepalive は断られ、T の attach は新しい大きい番号になる。ESP32-P4 のプローブと rvswd の CH32V208 で通る。
45
+ - (EN) Added: the two-route checks (one lock seen from both routes, another session's open refused locked with its owner,
46
+ an answer only on the route of its request; transports §3) run on any second route, not only a second TCP connection:
47
+ `usb_hw --peer hid|bulk` opens the other USB kind of the same device, `--peer-port` its OEP CDC port (CORE-ROUTE-PEER-*).
48
+ They pass on ESP32-P4 and P4X probes for bulk with HID and bulk with CDC.
49
+ - (JA) 追加: 2 つの経路の検査(どちらの経路からも同じ 1 つのロックが見え、別のセッションの open は持ち主つきの locked で断られ、
50
+ 答えは要求の来た経路にだけ返る。transports §3)を、2 本目の TCP の接続だけでなく、どの経路でも回す: `usb_hw --peer hid|bulk` は同じ
51
+ device のもう一方の USB の経路を、`--peer-port` はその OEP の CDC の口を開く(CORE-ROUTE-PEER-*)。ESP32-P4 と P4X のプローブで、bulk と
52
+ HID、bulk と CDC の組で通る。
53
+ - (EN) Added: oep-conformance runs the reconnect checks over TCP too (a new connection is the route moving, transports §3):
54
+ the session, its lock, its replay record and its lease outlive the connection. New check CORE-RECONNECT-UNREAD (serial
55
+ and TCP): a request whose answer is lost with the closed route is resent on the new one and comes back as the recorded
56
+ answer or result_lost, never run again (core §5.1; a recorded clock answer is told by its uptime). The virtual bench's
57
+ loopback TCP passes all five.
58
+ - (JA) 追加: oep-conformance は、接続し直しの検査を TCP でも回す(新しい接続は経路の移動、transports §3): セッション、ロック、再送の
59
+ 記録、lease は接続より長く残る。新しい検査 CORE-RECONNECT-UNREAD(シリアルと TCP): 閉じた経路で答えを失った要求を新しい経路で
60
+ 送り直すと、記録した答えか result_lost が返り、二度は実行されない(core §5.1。記録した clock の答えは uptime で分かる)。仮想ベンチの
61
+ loopback の TCP は 5 つとも通る。
62
+ - (EN) Added: `python -m oep_client.conformance.usb_hw` runs the raw bulk / HID checks on a real probe, named by
63
+ VID:PID and its serial number (the unit id), under the shared lock; it checks the USB descriptors too (serial = unit
64
+ id, one OEP vendor interface with one bulk pair, one OEP HID with one report ID, MS OS 2.0 WINUSB as a SHOULD). New
65
+ check CORE-USB-IN-END: answers framed to exactly one and two IN packets (oep.probe.link's source) must arrive without
66
+ more data after them (transports §1, the probe's last transfer ended). On ESP32-P4 and P4X probes every bulk and HID
67
+ check passes.
68
+ - (JA) 追加: `python -m oep_client.conformance.usb_hw` は、VID:PID と serial number(unit id)で名指した実機に、共通のロックを取って、
69
+ bulk / HID の生の検査を回す。USB の descriptor も確かめる(serial が unit id、OEP の vendor interface が 1 つで bulk が 1 組、OEP の HID が
70
+ 1 つで report ID が 1 つ、MS OS 2.0 の WINUSB は SHOULD)。新しい検査 CORE-USB-IN-END: 枠がちょうど IN packet 1 個分と 2 個分の答え
71
+ (oep.probe.link の source)が、続く data なしで届くこと(transports §1、probe の最後の転送の終わり)。ESP32-P4 と P4X のプローブで、
72
+ bulk と HID の検査はすべて通る。
73
+ - (EN) Docs: the rule-by-rule trace (docs/trace) names the tests as they are now (the subject-named modules, no review
74
+ rounds or item numbers; the later-copy tests as the refusal tests that replaced them), and core §2.3's rows follow the
75
+ spec's split of the twice-sent tag into requests (malformed) and answers (the first is used). tools/check_trace.py
76
+ passes on oep-spec 3b6dbbc.
77
+ - (JA) 文書: 規則ごとの対応表(docs/trace)は、今の試験の名前を指す(主題で名付けたモジュール、回や項目の番号なし。後の写しの試験は、
78
+ 置き換えた断りの試験)。core §2.3 の行は、2 回送られた tag を要求(malformed)と応答(最初を使う)に分けた仕様に合わせた。
79
+ tools/check_trace.py は oep-spec 3b6dbbc で通る。
80
+ - (EN) Removed: capture's optional features no probe implemented, as oep-spec 3b6dbbc drops them. `configure` no longer
81
+ takes `format_name`, and its `options` take only `glitch_filter` (group 0) and `clock`; `Config.format_name` and the
82
+ `threshold_used`, `coupling_used`, `offset_used`, `bandwidth_used`, `resolution_used` and `oversample_used` entries of
83
+ `Config.used` are gone. The virtual bench no longer offers the external data paths (`Endpoint.external_disconnect`,
84
+ `virtual_bench.EXTERNAL_TCP_PORT` / `EXTERNAL_UDP_PORT`), the named format (`NAMED_FORMAT`) or the analog front-end
85
+ settings; `with_capture_options` adds format 3, the external clock and the glitch filter to the logic track. The spec
86
+ snapshot follows 3b6dbbc, the trace's capture rows follow the spec's sections (§0, §3.8, trigger records at §3.9), and
87
+ the host-request checker's reviewed pins move with it.
88
+ - (JA) 削除: oep-spec 3b6dbbc に合わせ、どの probe も持たなかった capture の任意の機能を外した。`configure` は `format_name` を
89
+ 取らず、`options` は `glitch_filter`(群 0)と `clock` だけを取る。`Config.format_name` と、`Config.used` の `threshold_used`、
90
+ `coupling_used`、`offset_used`、`bandwidth_used`、`resolution_used`、`oversample_used` は無くなった。仮想ベンチは、データの外部の
91
+ 経路(`Endpoint.external_disconnect`、`virtual_bench.EXTERNAL_TCP_PORT` / `EXTERNAL_UDP_PORT`)、名前付きの形式(`NAMED_FORMAT`)、
92
+ アナログの前段の設定を出さない。`with_capture_options` は、ロジックのトラックに形式 3、外部クロック、グリッチフィルタを足す。仕様の
93
+ 写しは 3b6dbbc に合わせ、対応表の capture の行は仕様の節(§0、§3.8、トリガの記録は §3.9)に合わせ、host の要求の検査器の
94
+ 固定もそれに移した。
95
+ - (EN) Tests: the spec snapshot (vectors, registry, the documents' digests) follows oep-spec b8d63c6, and the conformance
96
+ checkers' reviewed pins move with it: the core, capture and fixture changes since are wording only (a §0 heading, the
97
+ state table's stopped 2, the critical-bit sentence, no product names). The core checker passes on an ESP32-P4 probe.
98
+ - (JA) 試験: 仕様の写し(ベクタ、registry、文書のハッシュ)を oep-spec b8d63c6 に合わせ、適合の検査器の固定も移した。core、capture、
99
+ fixture のその間の変更は文言だけ(§0 の見出し、状態の表の stopped 2、critical の bit の文、製品名の削除)。core の検査器は
100
+ ESP32-P4 のプローブで通る。
101
+ - (EN) Docs: comments, docstrings and documents cite the spec's sections as they are now (core §10 for notifications,
102
+ §5.1 for resending, plan §2.4, restart §2, link §3). The port_speed procedure, once host guide §17 and now this
103
+ client's own, is cited as the README's section. `acquire` takes describe's tags and the trigger types from the
104
+ registry instead of writing their numbers.
105
+ - (JA) 文書: 注釈、docstring、文書は、仕様の今の節を指す(通知は core §10、再送は §5.1、plan §2.4、restart §2、link §3)。
106
+ 前は host ガイド §17 にあり今はこの client 自身のものになった port_speed の手順は、README の節として指す。`acquire` は describe の
107
+ tag とトリガの型を、番号を書かずに registry から引く。
108
+
109
+ ## 0.0.44
110
+ - (EN) Changed: `targets` names the CH32V20x family `ch32v20x` (was `ch32v203`) and knows the CH32V208 by its target_id
111
+ (top 12 bits 0x208; a CH32V208WBU6 measured), so `oep pins` identifies it and maps its pads; the CH32V203's id is not
112
+ recorded yet. The module and `oep pins` no longer point to documents oep-spec no longer has.
113
+ - (JA) 変更: `targets` は CH32V20x の系列を `ch32v20x` と呼び(前は `ch32v203`)、CH32V208 を target_id(上位 12 ビット 0x208。
114
+ CH32V208WBU6 で測定)で知る。`oep pins` が識別してパッドを map できる。CH32V203 の id はまだ記録していない。モジュールと `oep pins`
115
+ は、oep-spec に今は無い文書を指さなくなった。
116
+ - (EN) Docs: the conformance, testing and hardware documents describe the current state only (no interim wording, no
117
+ pinned commits; how checkers pin the reviewed spec is in docs/conformance-spec-compatibility.ja.md). The README no longer
118
+ calls the client experimental. `tests/test_conformance_reviewed_pins.py` also checks the capture-serial checker's pins.
119
+ - (JA) 文書: 適合検査、テスト方針、実機設定の文書を今の状態だけにした(途中の状態の言葉と、固定した commit の番号を外した。
120
+ 検査器がレビュー済みの仕様に固定する仕方は docs/conformance-spec-compatibility.ja.md)。README の「実験段階」を外した。
121
+ `tests/test_conformance_reviewed_pins.py` は capture-serial の検査器の固定も確かめる。
122
+
5
123
  ## 0.0.43
6
124
  - (EN) Added: `Host.open`, `Host.take` and `core.take` take `extensions` - named extensions (a name, or (name, data))
7
125
  carried on the open after the owner, sent critical, so a probe that does not know one refuses it (`Unsupported`, its
@@ -522,7 +640,7 @@
522
640
  missing bits 0); read_rx's ns is when CS went inactive (I2C: the STOP or next START).
523
641
  - Virtual bench: the configure contract and answer rows, wrapping generations and serials, generations on every
524
642
  event and in the group's start answer / status, marks and segments paging, release by core §2.6, step's zeros,
525
- spi-target masking and an optional ns (`Endpoint.spi_ns`). New tests/test_spec_2c6d18d.py; the new vectors and
643
+ spi-target masking and an optional ns (`Endpoint.spi_ns`). New tests/test_capture_generation_rules.py; the new vectors and
526
644
  ops.json `events` run both ways (arm-adi's probe side skipped: the virtual bench has no arm-adi).
527
645
  - (JA) **oep-spec 0098b56〜2c6d18d(0991759 の外部レビューのインターフェース再確認)に合わせた。** registry と vectors を同期し、
528
646
  README は 2c6d18d を名乗る。壊れる変更(wire と API):
@@ -544,7 +662,7 @@
544
662
  read_rx の ns は CS が無効になった時刻(I2C は STOP か次の START)。
545
663
  - 仮想ベンチ: configure の契約と応答の行、一周する世代と serial、どの出来事にも世代、組の start の応答と status の世代、marks と
546
664
  segments のページング、core §2.6 での release、step の 0、spi-target のビットの消去と任意の ns(`Endpoint.spi_ns`)。
547
- tests/test_spec_2c6d18d.py を足した。新しい vectors と ops.json の `events` を両側から通す(arm-adi の probe 側は飛ばす: 仮想ベンチに
665
+ tests/test_capture_generation_rules.py を足した。新しい vectors と ops.json の `events` を両側から通す(arm-adi の probe 側は飛ばす: 仮想ベンチに
548
666
  arm-adi は無い)。
549
667
  - (EN) **`oep find` and `discovery.find_unit` verify what they find (oep-spec 0991759, host guide §4.1).** The DNS-SD
550
668
  service name `oep` is not registered, so another service may advertise `_oep._tcp`. `discovery.verify(found)` checks
@@ -776,7 +894,7 @@
776
894
  - oep-if-link / host guide §17 (44aa045): the sink count is max_frame - 12, which this client already sends
777
895
  (`core.link_sink_size`); nothing changed.
778
896
  - The tests run with `OEP_SESSION_DIR` in a temporary directory (tests/conftest.py; tests/hw keeps the real one).
779
- New tests/test_spec_283e5b5.py. README / tests/hw README (EN / JA).
897
+ New tests/test_transport_session_rules.py. README / tests/hw README (EN / JA).
780
898
  - (JA) **oep-spec 283e5b5〜f8bb2de**(2026-10-07 の外部レビューの再確認と、その後の直し)。README は `f8bb2de` を名乗る。registry と
781
899
  ベクタを写した(`tools/sync_registry.sh`): `resend_max` は無くなった(送り直しは host が決める。この client の送り直し - 待ちの後に
782
900
  1 回、持っているシリアルの口で壊れたフレームが来たらすぐ 3 回まで - はそのまま)。`interface_name_max_bytes` は 64 -> 48
@@ -801,7 +919,7 @@
801
919
  - oep-if-link / host ガイド §17(44aa045): sink の count は max_frame − 12 で、この client はもとからそれを送る(`core.link_sink_size`)。
802
920
  変更なし。
803
921
  - 試験は `OEP_SESSION_DIR` を一時の場所にして走る(tests/conftest.py。tests/hw は本当の場所のまま)。新しい
804
- tests/test_spec_283e5b5.py。README と tests/hw の README(EN / JA)。
922
+ tests/test_transport_session_rules.py。README と tests/hw の README(EN / JA)。
805
923
  - (EN) **Breaking (API, CLI): the fake probe is the virtual bench**, with no aliases (pre-freeze). The virtual bench is a
806
924
  probe, the targets behind it and the fixture wiring, modelled after the real jigs: the environment host software is
807
925
  tested in. "Bench" alone still means the real HIL jigs. Renamed: module `oep_client.fake` -> `oep_client.virtual_bench`,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: oep-client-python
3
- Version: 0.0.43
3
+ Version: 0.0.45
4
4
  Summary: Open Embedded Probe (OEP) v1 host: serial / USB / TCP transports, the session rules, the standard interfaces, and a virtual bench
5
5
  Project-URL: Homepage, https://github.com/Open-Embedded-Probe/oep-client-python
6
6
  Project-URL: Repository, https://github.com/Open-Embedded-Probe/oep-client-python
@@ -31,11 +31,10 @@ Description-Content-Type: text/markdown
31
31
 
32
32
  The host side of Open Embedded Probe (OEP). It speaks the v1 protocol of
33
33
  [oep-spec](https://github.com/Open-Embedded-Probe/oep-spec) (the core `docs/oep-core.ja.md`, `docs/oep-transports.ja.md`
34
- and the interfaces `interfaces/*.ja.md`), v1 before the freeze: until the freeze the spec may still break. The wire numbers come from `oep_client.registry`, a verbatim copy of
35
- oep-spec's generated `generated/oep-v1/oep_v1_registry.py`. This is an experimental stage: breaking changes are expected and
36
- no compatible API is promised.
34
+ and the interfaces `interfaces/*.ja.md`). The wire numbers come from `oep_client.registry`, a verbatim copy of
35
+ oep-spec's generated `generated/oep-v1/oep_v1_registry.py`.
37
36
 
38
- **The spec this implements: the oep-spec commit in `tests/vectors/SPEC_COMMIT`** (no `v0.x` tag yet; oep-spec versioning §2 / §6 - before the
37
+ **The spec this implements: the oep-spec commit in `tests/vectors/SPEC_COMMIT`** (oep-spec versioning §2 / §6: before the
39
38
  freeze, revision 1 alone does not fix the forms, so an implementation names the spec commit it implements). The registry
40
39
  and the shared vectors in `tests/vectors/` are copied from that commit; the history is in [CHANGELOG.md](CHANGELOG.md).
41
40
 
@@ -66,7 +65,7 @@ sets the version in pyproject.toml, uv.lock and `oep_client.__version__` and tur
66
65
  the tests and the build it commits, tags, makes the GitHub Release and publishes to PyPI (Trusted Publishing). Record changes
67
66
  under Unreleased in CHANGELOG.md, (EN) and (JA).
68
67
 
69
- A minimal check: [hardware quickstart](docs/hardware-quickstart.ja.md). See the shared [testing policy](docs/testing-policy.ja.md) and [guide for projects using OEP](docs/testing-consumers.ja.md). The [hardware design](docs/hardware-configuration.ja.md) and [configuration examples](docs/hardware-schema.ja.md) describe the planned format; its offline validator/planner is available; integration with the hardware runner is pending. These working documents are in Japanese.
68
+ A minimal check: [hardware quickstart](docs/hardware-quickstart.ja.md). See the shared [testing policy](docs/testing-policy.ja.md) and [guide for projects using OEP](docs/testing-consumers.ja.md). Equipment configuration: [hardware design](docs/hardware-configuration.ja.md) and [configuration examples](docs/hardware-schema.ja.md) (in Japanese).
70
69
 
71
70
  ## Modules (`oep_client`)
72
71
 
@@ -500,4 +499,3 @@ IP_MULTICAST_IF 127.0.0.1. A different `--unit-id` per job keeps parallel jobs a
500
499
  name too). A container or VM answers only on its own network. tests/test_virtual_bench_announce.py does this with
501
500
  `oep find`, `discovery.find_unit` and `oep://UNIT_ID?via=net` (both engines) - with in-process responders announcing a non-OEP
502
501
  TCP service and a wrong TXT unit_id beside it, which the verify drops - skipped where multicast does not loop back.
503
-
@@ -2,11 +2,10 @@
2
2
 
3
3
  [English](README.md)
4
4
 
5
- Open Embedded Probe の host 側。v1(oep-spec の本体 `docs/oep-core.ja.md`、`docs/oep-transports.ja.md` とインターフェース `interfaces/*.ja.md`)を話す。凍結の前の v1 で、凍結までは仕様が壊れることがある。番号は oep-spec の
6
- `generated/oep-v1/oep_v1_registry.py` をそのまま写した `oep_client.registry` から取る。破壊的変更を前提とする
7
- 実験段階で、互換 API は約束しない。
5
+ Open Embedded Probe の host 側。v1(oep-spec の本体 `docs/oep-core.ja.md`、`docs/oep-transports.ja.md` とインターフェース `interfaces/*.ja.md`)を話す。番号は oep-spec の
6
+ `generated/oep-v1/oep_v1_registry.py` をそのまま写した `oep_client.registry` から取る。
8
7
 
9
- **実装する仕様: `tests/vectors/SPEC_COMMIT` にある oep-spec の commit**(`v0.x` のタグはまだ無い。oep-spec versioning §2 / §6: 凍結の前は revision 1 だけでは
8
+ **実装する仕様: `tests/vectors/SPEC_COMMIT` にある oep-spec の commit**(oep-spec versioning §2 / §6: 凍結の前は revision 1 だけでは
10
9
  形が決まらないので、実装は自分が実装する仕様の commit を名乗る)。番号の表と `tests/vectors/` の共有ベクタはその commit から写したもの。
11
10
  変更の履歴は [CHANGELOG.md](CHANGELOG.md) にある。
12
11
 
@@ -33,7 +32,7 @@ HEAD 以外の commit を選べる。commit とファイルの hash は `tests/v
33
32
  pyproject.toml、uv.lock、`oep_client.__version__` を書き換え、CHANGELOG.md の Unreleased をその版にし、試験と build の後に commit と tag、
34
33
  GitHub Release、PyPI(Trusted Publishing)へ出す。変更は CHANGELOG.md の Unreleased に (EN) / (JA) で書き足しておく。
35
34
 
36
- 最小構成の確認は [動作確認手順](docs/hardware-quickstart.ja.md)。共通の [テスト方針](docs/testing-policy.ja.md) と [OEP を使うプロジェクトのガイド](docs/testing-consumers.ja.md) も見る。[構成設計](docs/hardware-configuration.ja.md)と[設定形式・雛形](docs/hardware-schema.ja.md)は予定の形式を書く(offline の検査・計画は実装あり、実機の runner との連携は未実装)。
35
+ 最小構成の確認は [動作確認手順](docs/hardware-quickstart.ja.md)。共通の [テスト方針](docs/testing-policy.ja.md) と [OEP を使うプロジェクトのガイド](docs/testing-consumers.ja.md) も見る。設備の設定は[構成設計](docs/hardware-configuration.ja.md)と[設定形式・雛形](docs/hardware-schema.ja.md)にある。
37
36
 
38
37
  ## モジュール(`oep_client`)
39
38
 
@@ -414,4 +413,3 @@ multicast の経路が無い host では `--announce-on 127.0.0.1` にし、問
414
413
  tests/test_virtual_bench_announce.py がこれを `oep find`、`discovery.find_unit`、`oep://UNIT_ID?via=net`(両方の engine)で試す(同じ process の responder が、OEP でない TCP の
415
414
  サービスと違う TXT の unit_id を並べて広告し、確かめでそれが外れることも見る)。multicast が
416
415
  戻らない所では skip する。
417
-
@@ -4,11 +4,10 @@
4
4
 
5
5
  The host side of Open Embedded Probe (OEP). It speaks the v1 protocol of
6
6
  [oep-spec](https://github.com/Open-Embedded-Probe/oep-spec) (the core `docs/oep-core.ja.md`, `docs/oep-transports.ja.md`
7
- and the interfaces `interfaces/*.ja.md`), v1 before the freeze: until the freeze the spec may still break. The wire numbers come from `oep_client.registry`, a verbatim copy of
8
- oep-spec's generated `generated/oep-v1/oep_v1_registry.py`. This is an experimental stage: breaking changes are expected and
9
- no compatible API is promised.
7
+ and the interfaces `interfaces/*.ja.md`). The wire numbers come from `oep_client.registry`, a verbatim copy of
8
+ oep-spec's generated `generated/oep-v1/oep_v1_registry.py`.
10
9
 
11
- **The spec this implements: the oep-spec commit in `tests/vectors/SPEC_COMMIT`** (no `v0.x` tag yet; oep-spec versioning §2 / §6 - before the
10
+ **The spec this implements: the oep-spec commit in `tests/vectors/SPEC_COMMIT`** (oep-spec versioning §2 / §6: before the
12
11
  freeze, revision 1 alone does not fix the forms, so an implementation names the spec commit it implements). The registry
13
12
  and the shared vectors in `tests/vectors/` are copied from that commit; the history is in [CHANGELOG.md](CHANGELOG.md).
14
13
 
@@ -39,7 +38,7 @@ sets the version in pyproject.toml, uv.lock and `oep_client.__version__` and tur
39
38
  the tests and the build it commits, tags, makes the GitHub Release and publishes to PyPI (Trusted Publishing). Record changes
40
39
  under Unreleased in CHANGELOG.md, (EN) and (JA).
41
40
 
42
- A minimal check: [hardware quickstart](docs/hardware-quickstart.ja.md). See the shared [testing policy](docs/testing-policy.ja.md) and [guide for projects using OEP](docs/testing-consumers.ja.md). The [hardware design](docs/hardware-configuration.ja.md) and [configuration examples](docs/hardware-schema.ja.md) describe the planned format; its offline validator/planner is available; integration with the hardware runner is pending. These working documents are in Japanese.
41
+ A minimal check: [hardware quickstart](docs/hardware-quickstart.ja.md). See the shared [testing policy](docs/testing-policy.ja.md) and [guide for projects using OEP](docs/testing-consumers.ja.md). Equipment configuration: [hardware design](docs/hardware-configuration.ja.md) and [configuration examples](docs/hardware-schema.ja.md) (in Japanese).
43
42
 
44
43
  ## Modules (`oep_client`)
45
44
 
@@ -473,4 +472,3 @@ IP_MULTICAST_IF 127.0.0.1. A different `--unit-id` per job keeps parallel jobs a
473
472
  name too). A container or VM answers only on its own network. tests/test_virtual_bench_announce.py does this with
474
473
  `oep find`, `discovery.find_unit` and `oep://UNIT_ID?via=net` (both engines) - with in-process responders announcing a non-OEP
475
474
  TCP service and a wrong TXT unit_id beside it, which the verify drops - skipped where multicast does not loop back.
476
-
@@ -2,9 +2,9 @@
2
2
 
3
3
  | 文書 | 対象と状態 |
4
4
  |---|---|
5
- | [最小構成の動作確認](hardware-quickstart.ja.md) | 現在動く validate/plan/仮想 smoke と `.env` の実行手順 |
5
+ | [最小構成の動作確認](hardware-quickstart.ja.md) | validate/plan/仮想 smoke と `.env` の実行手順 |
6
6
  | [SPECからの適合検査](conformance-checks.ja.md) | core / interfaceの公開検査器と実行範囲 |
7
- | [lease・forceの大枠検査](session-smoke-conformance.ja.md) | 明示time/resource adapterで循環corr作業版の期限・再送・所有者交代を確認 |
7
+ | [lease・forceの大枠検査](session-smoke-conformance.ja.md) | 明示time/resource adapterでleaseの期限・再送・所有者交代を確認 |
8
8
  | [有限保持の通知出力](notification-output-sample.ja.md) | 限定raw fixtureで購読拒否・seq抜け・部分frame・応答優先を確認 |
9
9
  | [Host TLVの読出し検査](host-tlv-conformance.ja.md) | 明示readerアダプタで未知tag・critical・重複・破損と長さ境界を確認 |
10
10
  | [Host通知と期限](host-notification-conformance.ja.md) | 現SPECのrole振り分け、未知kindのseq、通知が続く時の応答待ち/pumpを確認 |
@@ -14,11 +14,11 @@
14
14
  | [core発見処理の検査](discovery-conformance.ja.md) | list/fn 0 describeの任意cursor、labelと宣言の不変性を確認 |
15
15
  | [資源番号の上限](allocator-conformance.ja.md) | 明示seedでu16上限、解放後の非再利用、再送と再起動を確認 |
16
16
  | [通知seqと再購読](notification-sequence-conformance.ja.md) | 論理経路でseqの一周・drop・購読置換・再送を確認 |
17
- | [raw USB検査](usb-conformance.ja.md) | bulk/HIDの独立検査器と最小ソフトウェアモデル。実機raw adapterは未実装 |
18
- | [全体テスト方針](testing-policy.ja.md) | OEP と利用プロジェクトの保証対象、責任、改修計画 |
17
+ | [raw USB検査](usb-conformance.ja.md) | bulk/HIDの独立検査器と最小ソフトウェアモデル |
18
+ | [全体テスト方針](testing-policy.ja.md) | OEP と利用プロジェクトの保証対象と責任 |
19
19
  | [利用プロジェクト向けガイド](testing-consumers.ja.md) | 任意の言語・target・framework で OEP を使う側のテスト手順 |
20
20
  | [構成と配線の確定](hardware-configuration.ja.md) | 個体、探索、確認済み接続、役割、共有制御の設計 |
21
- | [実機設定形式](hardware-schema.ja.md) | 公開のキーと判定、入力と確定 TOML、`.env` の雛形。offline 初期実装あり、実機連携は未実装 |
22
- | [現行 Python 実機ハーネス](../tests/hw/README.ja.md) | 現在使用できる設定と手順、新形式への移行事項 |
21
+ | [実機設定形式](hardware-schema.ja.md) | 公開のキーと判定、入力と確定 TOML、`.env` の雛形 |
22
+ | [Python 実機ハーネス](../tests/hw/README.ja.md) | 設定と手順 |
23
23
 
24
24
  ここにある文書の保守窓口は oep-client-python です。保証と合否の所有者は各実装に分かれ、通信の規範は oep-spec に置きます。全体方針はプロジェクト共通で、Python のテストだけの説明ではありません。実設備の台帳は外部で管理し、runner へ明示設定で渡します。
@@ -18,7 +18,7 @@ privateベンチや隣接checkoutは探索しない。資源opの符号化はres
18
18
  境界seed 0xFFFFFFFE/0xFFFFFFFFと時計はlogical fixtureの明示制御であり、実機opではない。
19
19
  seedを設定するのはfresh/空のallocatorだけ。この検査で2^32−1回の実割当を行ったとは主張しない。
20
20
  通常の容量不足と区別し、sample容量8に対して同時資源は最大2で試す。
21
- 予約だけで失敗した番号を欠番にしてよい規則は変更せず、一般の作成失敗でnext_id不変は要求しない。
21
+ 予約だけで失敗した番号は欠番にしてよく、一般の作成失敗でnext_id不変は要求しない。
22
22
 
23
23
  client checkoutのルートで実行する。
24
24
 
@@ -52,7 +52,7 @@ rate/samples/mode/triggerの拒否、query成功時の非適用を確認する
52
52
  区画満杯のstate 5はconfigureをunavailable・cause 6で拒否し、積んだ区画とdataを消さない。
53
53
  logic/analog双方を確認する。planありのstate 5でもqueryを許可する規則はSPEC §3.3と
54
54
  `test_virtual_bench_capture_query.py`で確認する。
55
- 既存仮想endpointのinterface回帰であり、そのlegacy coreを現在の独立core適合fixtureと同一視しない。
55
+ 仮想ベンチの`Endpoint`のinterface回帰であり、独立core適合fixture(`core-v1`)の検査とは別。
56
56
 
57
57
  ```sh
58
58
  uv run pytest -q tests/test_virtual_bench_capture_requests.py
@@ -98,8 +98,7 @@ logic/analogのone-shot完了、short stop、error、repeat満杯/解放、到
98
98
  新start後までqueueに残る旧通知は元の世代を保ち、Hostが現在の世代以外を捨てることも確認する。
99
99
  世代/時刻/停止理由の改変、通知欠落と不要なtriggerを故障注入して検出する。
100
100
  stoppedのerrorはreason 3のときだけ照合し、それ以外で0を要求しない。
101
- これは既存fixtureの通知動作の追加回帰。到達しないtrigger、全通知/streaming/並行性と
102
- 現在のcoreへ移行した全analog操作の適合は継続して整備する。
101
+ これはfixtureの通知動作の回帰。到達しないtrigger、全通知/streaming/並行性と全analog操作の適合は検査しない。
103
102
 
104
103
  ```sh
105
104
  uv run pytest -q tests/test_virtual_bench_capture_notifications.py
@@ -114,7 +113,7 @@ forceでは現在のsampleを使い、まだ足りないpretrigger分だけ区
114
113
  capture-groupは即時のtrackだけを束ねるので、groupの待機やforceはここで扱わない。
115
114
 
116
115
  既存one-shot fixtureと同じく、成立後の将来sampleは即時に合成する。
117
- これは物理的な待ち時間の証明ではない。自然な早期trigger、全modeのtriggerは別途整備する。
116
+ これは物理的な待ち時間の証明ではない。自然な早期trigger、全modeのtriggerは検査しない。
118
117
 
119
118
  ```sh
120
119
  uv run pytest -q tests/test_virtual_bench_capture_waiting.py
@@ -140,7 +139,7 @@ logicのedge/level、analogのcross_up/down(疎なroleも含む)、pretrigge
140
139
  rawデータ・時刻・世代付き通知を照合する。
141
140
  開始前のsampleをedge/crossingの比較に使わない。
142
141
  one-shotは最後のsample時刻を待って区画を公開する。取得途中は区画を返さない。
143
- [取得時間の検査](capture-metadata-conformance.ja.md#仮想captureの時間検査)を併用する。物理latency、全mode契約は別途整備する。
142
+ [取得時間の検査](capture-metadata-conformance.ja.md#仮想captureの時間検査)を併用する。物理latency、全mode契約は検査しない。
144
143
 
145
144
  ```sh
146
145
  uv run pytest -q tests/test_virtual_bench_capture_pretrigger.py
@@ -154,7 +153,7 @@ uv run pytest -q tests/test_virtual_bench_capture_pretrigger.py
154
153
  queryの候補rate/samples/modeは適用されないことも確認する。plan無しはcause 6、
155
154
  取得中の不正rate 0はmalformedで、現在の取得を変えない。
156
155
  configureの取得中/結合中拒否は継続し、queryと同じ扱いにはしない。
157
- 既存endpointのlegacy coreの検査であり、独立core適合fixtureとの同一視や全query契約の証明はしない。
156
+ 仮想ベンチの`Endpoint`の検査であり、独立core適合fixtureの検査や全query契約の証明ではない。
158
157
 
159
158
  ```sh
160
159
  uv run pytest -q tests/test_virtual_bench_capture_query.py
@@ -169,7 +168,7 @@ forceと既知波形の初回triggerで履歴を残し、repeatの最初の区
169
168
  streamingの通し番号とerror時write_posは、捨てた開始前履歴を数えず実際の完了区画から計算する。
170
169
 
171
170
  既知波形も経過済みsampleだけで条件成立を検出する。待機後の信号変化は下記の別試験で確認する。
172
- 物理latency、offset/skewを含む全modeの時間因果性、storage gap・全stream区画契約は別途整備する。
171
+ 物理latency、offset/skewを含む全modeの時間因果性、storage gap・全stream区画契約は検査しない。
173
172
 
174
173
  ```sh
175
174
  uv run pytest -q tests/test_virtual_bench_capture_trigger_modes.py
@@ -96,7 +96,7 @@ TAR/data/bufferの段階へ失敗を注入し、読出しでは返せた値のpr
96
96
  RDBUFF回収失敗では、まだ返せない語をtarget busから読んでいてもdoneに加えない。
97
97
  writeのdoneは送れた語数であり、fixtureでtargetへの配送を落としても送信数を返す。
98
98
  WAIT時のstore一回実行、block replay、失敗語/後続への不正アクセスも確認する。
99
- 最適化したpipeline方式、全ての遅延FAULTの方針はまだ確認しない。
99
+ 最適化したpipeline方式、全ての遅延FAULTの方針は検査しない。
100
100
  AP bank/SELECTの完全なdecode、sticky状態とABORT、ADIv6、SWD attachのTARGETSEL/tid、
101
101
  packetのparity/turnaround/idle、電気的な再試行と時間、CPUの実行状態は別途必要。
102
102
  全経路のframe容量、u32番地を越えるblockの扱い、production Hostとの統合も未完成である。
@@ -21,7 +21,7 @@
21
21
 
22
22
  論理pin組はRVSWD (0,1)/(2,3)/(6,7)、SWIO (0,0xFFFF)/(2,0xFFFF)/(6,0xFFFF)、SWD (4,5)。channel_groupで明示する。scanは実装しない。method 0の論理成功だけを確認し、haltや電気的な速度選定を証明しない。resetの線の動作、idle_clock、targetselは未検査(`WireOptionsChecks`)。reset TLVはsampleのreset channel(8)で受理とraw tagの拒否、先頭コピーの使用(hold)だけを確かめる。
23
23
 
24
- 仮想コアへ`request_tags` / `dispatch_request`の明示拡張入口を加え、拡張固有critical TLVを検査・実行へ渡す。入口がない既存拡張は従来の処理を使う。session・header・cacheの判定は入口より先に行う。同一要求再送でTLV解析や実行を繰り返さない。
24
+ 仮想コアは`request_tags` / `dispatch_request`の明示拡張入口で、拡張固有critical TLVを検査・実行へ渡す。入口が無い拡張は共通の処理を使う。session・header・cacheの判定は入口より先に行う。同一要求再送でTLV解析や実行を繰り返さない。
25
25
 
26
26
  単体19件でmax_speed 0の受理、未知critical無視、既知noncritical拒否、raw tag喪失、後のtag優先、後のコピーの未検証、拒否時targetアクセス、console応答の余分なbyte、ARM console受理、方式競合無視、速度上限超過、再送再実行、connectionsのmetadata不正を検出する。採用条件/選択SPEC変更、所有中fixture再起動拒否、拡張入口とsession/cacheの優先順も確認する。
27
27
 
@@ -31,10 +31,10 @@ sample時刻の推定値は一般には実時間と完全には一致しない
31
31
  これはmetadata例の生成器で、取得エンジンや大量のsample bufferを実装するmodelではない。
32
32
  configure例はrate/capacity以外の通常の必須情報も持つが、全layout/scaleなどの検証は別checkerの担当。
33
33
 
34
- 単体62件は27例、28の不正観測/前提(旧形式のstart/statusを含む)、報告不確かさの非利用、
35
- 既存仮想Endpointの6構成を含む。Endpoint構成はlogic/analogのbind順と3組の範囲内rate。
34
+ 単体62件は27例、28の不正観測/前提(誤った形のstart/statusを含む)、報告不確かさの非利用、
35
+ 仮想ベンチの`Endpoint`の6構成を含む。Endpoint構成はlogic/analogのbind順と3組の範囲内rate。
36
36
  実際の応答bodyをwireから取り、組のstart_nsとADCの既知の変換遅れ(5000ns)から起点を求めて照合する。
37
- 既存Endpoint/Hostのlegacy coreやop番号の適合を証明する検査ではない。
37
+ `Endpoint`/Hostのcoreやop番号の適合を証明する検査ではない。
38
38
 
39
39
  `full_conformance`はfalse。wire拒否/再送/全世代進行、bindの実現可能性、全configure/data構造、
40
40
  repeat/streaming/通知、stopの短い区画、物理clock/skew/精度は未検査。
@@ -15,7 +15,6 @@ describeの成功だけで取得操作やデータ寿命の適合を証明しな
15
15
  - analog: frontendの9 byte固定形(frontend、range_min_mv、range_max_mv)を1つ以上、番号ごとに1行。
16
16
  - capture-group: tracksの要素数n≥1とu16列の形。
17
17
  - config: items(0x41)の存在、1つ以上、重複なし、項目番号0を含まない(probe.config §4)。
18
- 旧版のslots_max/wifi_maxは現仕様に無いため検査しない。
19
18
 
20
19
  storage max_bytesとsave/erase提供時の存在は既存SelectedMetadataChecksで別に確認する。
21
20
  itemsの未知tagを独自拡張でないと推測して禁止しない。
@@ -23,7 +23,5 @@ readはu64位置を返し、既に解放した位置ならgap、未取得の未
23
23
  保持するのは最大2区画で、次serialとの差はu32の1/4未満である。任意の保持容量や保持幅全域の証明にはしない。
24
24
  この共通の区画手順を他のcapture拡張へ移す際は、明示adapter・独立のsample/packing oracleを用意する。
25
25
  単体34件:正常1、観測故障22、実model/Core故障7、制御不足2、本文guard2。
26
- レビュー済み本文SHAはoep-spec 02c08c9のcapture/commonに合わせた。
27
- 初期fixtureのconstructor、analog feed入口、frame容量を修正した。現在のモデル本体/Core/productionは変更していない。
28
- mark保持、streaming/groupとの通知交錯、任意capacity、物理sampling、production Host統合は残る。
26
+ mark保持、streaming/groupとの通知交錯、任意capacity、物理sampling、production Hostとの統合は検査しない。
29
27
  full_conformance=false。
@@ -15,7 +15,7 @@ fast 2種類それぞれで20ケース、計40構成を検査する。
15
15
  - startの再送は取得中、stopの再送は部分区画を完成させた後で行う。
16
16
  同じ要求の応答と状態が一致し、世代やデータを変えないことを確認する。
17
17
  - queryは取得中と片方が完了した状態で両trackへ送る。
18
- 提案した537Hz/5 sampleを答え、元の設定・timeline・データを保持することを確認する。
18
+ probeが候補として返した537Hz/5 sampleを答え、元の設定・timeline・データを保持することを確認する。
19
19
  - endとforceによるsession交代は取得中、lease期限は取得中と取得完了後の保持データを持つ状態で確認する。
20
20
  bind、plan、購読、取得データと区画を解放し、pinをidleへ戻す。世代は保持する。
21
21
  - 世代の使い切り: groupの世代が0xFFFFFFFFならgroup startを、trackの世代が0xFFFFFFFFなら
@@ -16,7 +16,7 @@ getの応答は`more generation count 項目 [TLV]`、stateは`storage_state sav
16
16
  - IDLE:使用中のchannelへのidleは解放時に効き、空きのchannelへのidleはただちに効く。
17
17
  disableしたchannelは駆動せず、planはunavailable cause 5で断る。disableのunsetでただちに空き状態へ戻り、使えるようになる。
18
18
  - ATOMIC:重複キー(bit7違いを含む)、idle/disable/labelの長さ違い、項目番号0、countと項目の不一致はmalformed。
19
- 宣言しない項目(旧planの0x01、0xFF)は受け取ったtagで、範囲外channel・未知のidle modeは項目tagで、未知criticalの要求TLVはそのtagでunsupported。
19
+ 宣言しない項目(0x01、0xFFなど)は受け取ったtagで、範囲外channel・未知のidle modeは項目tagで、未知criticalの要求TLVはそのtagでunsupported。
20
20
  unsetの重複キー/項目番号0/切れた行はmalformed、宣言しない項目はunsupported。
21
21
  idleとdisableの併存はcause 5、使用中channelのdisableはcause 1。
22
22
  channel TLVはcore §4.3で「分かる範囲で付ける」任意のため、付けた場合にぶつかったchannelを指すことだけを照合する。拒否は設定・generation・pinを変えない。
@@ -39,4 +39,4 @@ generationの折返し、無いキーのunsetでの加算、容量超過のcause
39
39
  旧config consumer/Endpointの自動attach・bind形は、この現仕様の適合根拠には使わない。
40
40
  get paging/数値キー順は[別の部分検査](config-paging-conformance.ja.md)で確認する。
41
41
  同内容saveの書き込み抑止と保存容量境界は[別の部分検査](config-storage-conformance.ja.md)で確認する。
42
- channelごとのpull/出力の非対応、firmware自身のchannel、物理保存とproduction追従は残る。full_conformance=false。
42
+ channelごとのpull/出力の非対応、firmware自身のchannel、物理保存とproductionのHostは検査しない。full_conformance=false。
@@ -30,4 +30,4 @@ lease停止漏れ/早い更新/待機中停止・更新/送信後更新漏れ、
30
30
  誤った実行時間、pin変更、同内容/拒否時/再送の書込みを検出する。
31
31
  set/unsetは要求の先頭のcount(u8)から項目/行を読み、固定長に頼らない。
32
32
  Host実時計のtimeout、物理flash、保存後のqueue処理、実経路の同時実行、応答待ち中のforce/open競合、
33
- eraseの実行時間とproduction追従は残る。full_conformance=false。
33
+ eraseの実行時間とproductionのHostは検査しない。full_conformance=false。
@@ -10,7 +10,7 @@ getの項目とgeneration 1、stateのstorage_state/saved_generation 0/reason、
10
10
  ch1/ch6へのplanの可否(disableならunavailable cause 5)を照合する。
11
11
 
12
12
  - FORMAT:容器が壊れて境界を確かめられない。何も適用せずstate 2/reason 1。保存のdisable ch6も効かない。
13
- - UNKNOWN:未知の項目(旧planの0x01)。それを除き適用し、state 3/reason 2。
13
+ - UNKNOWN:未知の項目。それを除き適用し、state 3/reason 2。
14
14
  - CHANNEL:channels以上のlabel。MODE:未知のidle mode。LABEL:textの無いlabel。いずれも除いて適用し、3/2。
15
15
  - CONFLICT:同じchannelにidleとdisable。disableを優先してidleを適用せず、3/2。
16
16
  - DUPLICATE:同じキーのlabelが2つ。そのキーを適用せず、3/2。
@@ -30,4 +30,4 @@ idleの優先、重複キーの片方の採用、容量不足時の順序、起
30
30
  set/save/erase後の誤った保存状態、idleの未適用を検出する。
31
31
  get pagingは[別の部分検査](config-paging-conformance.ja.md)で確認する。
32
32
  同内容saveの書込み抑止は[別の部分検査](config-storage-conformance.ja.md)で確認する。
33
- erase中の電源断で残る完全性を確認できない保存、保存中排他/電源断、物理保存とproduction追従は残る。full_conformance=false。
33
+ erase中の電源断で残る完全性を確認できない保存、保存中排他/電源断、物理保存とproductionのHostは検査しない。full_conformance=false。
@@ -3,7 +3,7 @@
3
3
  ConfigPagingModelとChecksへSPEC registryを明示し、InterfaceChecksの後に
4
4
  `ConfigPagingChecks(checks, SampleConfigPagingAdapter(model)).run()`を実行する。
5
5
  privateベンチや隣接SPECを自動探索しない。max_frame 64/128/256の3つの明示profileを使う。
6
- fn 0のchannelsは512、GPIOの駆動候補は従来の0〜7。大きい番号の項目を確認するための論理fixtureであり、512本の物理pinを模擬する意味ではない。
6
+ fn 0のchannelsは512、GPIOの駆動候補は0〜7。大きい番号の項目を確認するための論理fixtureであり、512本の物理pinを模擬する意味ではない。
7
7
 
8
8
  getの応答は`more(u8) generation(u32) count(u8) count×項目 [TLV]`。項目はcountで数えて読み、残りは応答の末尾TLVとして別に読む。
9
9
 
@@ -24,8 +24,8 @@ generation変更時は古い項目を捨ててfirst 0へ戻す。more 1なのに
24
24
  byte辞書順/byte offset、項目抜け/重複、誤ったmore/generation、途中で切った項目、bit7残留、frame超過、
25
25
  countと項目数の不一致、変更ごとに進まないgeneration、読取りの設定/pin/lease/cache変更と、
26
26
  Hostが再読込みせず異なる版を混ぜる故障を検出する。応答の未知の非critical末尾TLVは項目と混ぜずに受け入れる。
27
- 初期モデルの256 byte固定ページ上限は64/128で応答長違反となり、通知したmax_frameから応答headerを差し引く形へ修正した。
27
+ ページの上限は、通知したmax_frameから応答headerを差し引いた長さ。
28
28
 
29
- 任意channelカタログ、真の並行要求/継続変更、production Host連携は残る。
29
+ 任意channelカタログ、真の並行要求/継続変更、production Hostとの連携は検査しない。
30
30
  saveの書込み抑止は[別の部分検査](config-storage-conformance.ja.md)で確認する。
31
- saveの排他/電源断、物理設備は残る。full_conformance=false。
31
+ saveの排他/電源断、物理設備は検査しない。full_conformance=false。
@@ -31,9 +31,9 @@ JSON/CRCをcheckerのoracleに使わず、wireで設定したold/newの全項目
31
31
  Core内部観測とbyte画像は仮想fixture用の補助制御であり、Probeへ新たな読取りAPIを要求しない。
32
32
 
33
33
  単体33件:正常1、共通宣言1、wire故障4、状態/保存故障19、制御不足8。
34
- active領域上書き/消去、誤った旧世代選択、commit/CRC破損後の成功、項目の混在、idle/disableの復帰漏れ、live planの残留、
35
- 起動時generation、同じbootの再使用、早い応答、復帰の書換え、旧保持者/履歴/cache、途中再開、volatileな未来設定への誤った復帰を検出する。
36
- 初期モデルがactive領域を上書きして以前の保存を失うことを再現し、他方の領域へ書く形へ修正した。
34
+ active領域上書き/消去、誤った古い世代の選択、commit/CRC破損後の成功、項目の混在、idle/disableの復帰漏れ、live planの残留、
35
+ 起動時generation、同じbootの再使用、早い応答、復帰の書換え、前の保持者/履歴/cache、途中再開、volatileな未来設定への誤った復帰を検出する。
36
+ モデルはactiveでない側の領域へ書き、active領域の保存を失わない。
37
37
 
38
38
  保存中の応答抑止/実行時間/lease、erase中の電源断(storage_state 2)、実flashのerase/program tear・摩耗・物理永続性、
39
- 任意破損/内部counter wrap、production実装追従は残る。full_conformance=false。
39
+ 任意破損/内部counter wrap、production実装は検査しない。full_conformance=false。
@@ -25,5 +25,5 @@ max_bytesが数えるのは項目の見出し込みのbyteだけなので、63/6
25
25
  毎回書込み/書込み欠落/変更の取りこぼし、generationや挿入順だけの比較、set時の自動保存、
26
26
  erase漏れ/現在設定消去/state残留、容量境界/cause/拒否時の書込み、pin変更、不正保存、boot時の書換え/消失を検出する。
27
27
  回数のassertは明示backendの観測条件であり、保存の内部形式や物理保存方式をoracleとして用いない。
28
- 実flashの摩耗、保存中排他/電源断、起動時の項目ごとの検証、production Host統合は残る。
28
+ 実flashの摩耗、保存中排他/電源断、起動時の項目ごとの検証、production Hostとの統合は検査しない。
29
29
  full_conformance=false。