rosotacom-dev 2.5.dev80__tar.gz → 2.5.dev81__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 (401) hide show
  1. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/PKG-INFO +1 -1
  2. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/README.md +1 -0
  3. rosotacom_dev-2.5.dev81/docs/findings/queueing-adds-delay-not-loss.md +122 -0
  4. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/PKG-INFO +1 -1
  5. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/SOURCES.txt +1 -0
  6. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/scm_file_list.json +1 -0
  7. rosotacom_dev-2.5.dev81/src/rosotacom_dev.egg-info/scm_version.json +8 -0
  8. rosotacom_dev-2.5.dev80/src/rosotacom_dev.egg-info/scm_version.json +0 -8
  9. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.devcontainer/devcontainer.json.template +0 -0
  10. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.devcontainer/re_generate_devcontainer_json.py +0 -0
  11. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/CODEOWNERS +0 -0
  12. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/documentation-audit.md +0 -0
  13. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/implementation-cleanup.md +0 -0
  14. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/quality-workflow.md +0 -0
  15. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/redesign.md +0 -0
  16. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/release-process.md +0 -0
  17. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/repository-diagnosis.md +0 -0
  18. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/test-ci-audit.md +0 -0
  19. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/work-item.md +0 -0
  20. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  21. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/actions/setup-just/action.yml +0 -0
  22. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/dependabot.yml +0 -0
  23. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/workflows/benchmark-calibrate.yml +0 -0
  24. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/workflows/benchmark-gate.yml +0 -0
  25. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/workflows/dev-release.yml +0 -0
  26. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/workflows/image-scan.yml +0 -0
  27. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/workflows/nightly-e2e.yml +0 -0
  28. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/workflows/pr-lightweight.yml +0 -0
  29. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/workflows/pr-merge-gate.yml +0 -0
  30. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.github/workflows/release.yml +0 -0
  31. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/.pre-commit-config.yaml +0 -0
  32. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/AGENTS.md +0 -0
  33. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/CONCURRENCY.md +0 -0
  34. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/CONTRIBUTING.md +0 -0
  35. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/DEVELOPMENT_PRINCIPLES.md +0 -0
  36. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/LICENSE.txt +0 -0
  37. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/MANIFEST.in +0 -0
  38. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/README.md +0 -0
  39. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/budgets.jsonl +0 -0
  40. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/calibration/README.md +0 -0
  41. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/calibration/capacity-size-tight-cyclone.json +0 -0
  42. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-gop-tight-cyclone.json +0 -0
  43. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-nominal-cyclone.json +0 -0
  44. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-tight-cyclone.json +0 -0
  45. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-tight-fastdds.json +0 -0
  46. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-tight-zenoh.json +0 -0
  47. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/codecov.yml +0 -0
  48. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/deployment-configuration.md +0 -0
  49. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/benchmark-ab.md +0 -0
  50. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/benchmark-bag-as-load.md +0 -0
  51. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/ci.md +0 -0
  52. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/ffmpeg-keyframes.md +0 -0
  53. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/a-fitted-delay-table-never-reached-the-shaper.md +0 -0
  54. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/a-shorter-group-does-not-lose-fewer-key-frames.md +0 -0
  55. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/a-transport-element-doubles-every-fastdds-sample.md +0 -0
  56. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/cyclone-fragment-equal-to-max-drops-fragmented-samples.md +0 -0
  57. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/cyclone-spdp-discovery-bursts.md +0 -0
  58. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/delay-alone-no-loss.md +0 -0
  59. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/fastdds-datagram-cap-drops-large-samples.md +0 -0
  60. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/graph-derived-types-block-a-non-graph-transport.md +0 -0
  61. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/head-of-line-irregularity.md +0 -0
  62. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/jitter-loss-bandwidth-latency.md +0 -0
  63. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/keyframe-loss-kills-the-next-deltas.md +0 -0
  64. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/lifespan-is-enforced-by-one-reader-and-not-the-other.md +0 -0
  65. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/lighter-message-loss.md +0 -0
  66. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/neither-a-queue-nor-a-burst-tilts-the-size-law.md +0 -0
  67. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/one-domain-two-cyclone-configs-stop-interoperating.md +0 -0
  68. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/oversubscription-queues-not-losses.md +0 -0
  69. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/reorder-becomes-reader-loss.md +0 -0
  70. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/repro/decode_chain_repro.py +0 -0
  71. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/repro/reorder_drop_repro.py +0 -0
  72. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/sender-rows-make-a-dead-link-look-loss-free.md +0 -0
  73. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/the-size-law-belongs-to-the-transport-not-the-link.md +0 -0
  74. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/findings/zero-loss-boundaries-18kb-20hz.md +0 -0
  75. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/forensics-report.md +0 -0
  76. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/geo-link-map.md +0 -0
  77. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/github-repository-settings.md +0 -0
  78. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/link-bandwidth.md +0 -0
  79. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/link-trace.md +0 -0
  80. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/ota-pcap.md +0 -0
  81. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/owner-runbook.md +0 -0
  82. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/performance-bands.md +0 -0
  83. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/playbooks/README.md +0 -0
  84. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/quality-model.md +0 -0
  85. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/release-notes/TEMPLATE.md +0 -0
  86. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/release-notes/v2.1.md +0 -0
  87. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/release-notes/v2.2.md +0 -0
  88. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/release-notes/v2.3.md +0 -0
  89. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/release-notes/v2.4.md +0 -0
  90. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/release.md +0 -0
  91. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/rfcs/0001-expectation-driven-test-suite.md +0 -0
  92. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/rfcs/0002-expectation-concepts.md +0 -0
  93. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/rfcs/0003-metric-backbone.md +0 -0
  94. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/rfcs/0004-network-profiles.md +0 -0
  95. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/rfcs/0005-benchmark-genres-and-ci.md +0 -0
  96. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/rfcs/0006-dynamic-qos.md +0 -0
  97. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/rfcs/0007-regression-gate.md +0 -0
  98. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/rfcs/README.md +0 -0
  99. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/testing.md +0 -0
  100. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/docs/work-items.md +0 -0
  101. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/install.sh +0 -0
  102. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/justfile +0 -0
  103. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/media/control_center.png +0 -0
  104. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/media/echo_test.png +0 -0
  105. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/media/forensics-report-example.png +0 -0
  106. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/media/host.png +0 -0
  107. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/media/vehicle.png +0 -0
  108. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/pyproject.toml +0 -0
  109. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/requirements.txt +0 -0
  110. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/rosotacom.yaml +0 -0
  111. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/session-configuration.md +0 -0
  112. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/setup.cfg +0 -0
  113. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/__init__.py +0 -0
  114. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/__main__.py +0 -0
  115. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/anonymize.py +0 -0
  116. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/bag_ground_truth.py +0 -0
  117. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/benched_set.py +0 -0
  118. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/benchmark.py +0 -0
  119. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/benchmark_delta.py +0 -0
  120. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/bundle_check.py +0 -0
  121. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/cli.py +0 -0
  122. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/cli_benchmark.py +0 -0
  123. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/deployment.py +0 -0
  124. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/ffmpeg_packet.py +0 -0
  125. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/forensics.py +0 -0
  126. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/geomap.py +0 -0
  127. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/image_cache.py +0 -0
  128. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/netem_dist.py +0 -0
  129. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/network_preflight.py +0 -0
  130. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/network_profiles.py +0 -0
  131. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/network_shaper.py +0 -0
  132. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/plots.py +0 -0
  133. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/py.typed +0 -0
  134. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/benched-set.yaml +0 -0
  135. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/.gitignore +0 -0
  136. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/README.md +0 -0
  137. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/__init__.py +0 -0
  138. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/bags/8_drop_reference/metadata.yaml +0 -0
  139. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/deployment.example.yaml +0 -0
  140. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/dist/field-20260817.dist +0 -0
  141. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/profiles.yaml +0 -0
  142. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/ros2docker.json +0 -0
  143. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/ros2docker.lyrical.json +0 -0
  144. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/rosotacom.yaml +0 -0
  145. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scenarios/2_native_chatter/scenario-definition.yaml +0 -0
  146. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_a.sh +0 -0
  147. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_b.sh +0 -0
  148. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.lyrical.ros2docker.json +0 -0
  149. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.ros2docker.json +0 -0
  150. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_communication.sh +0 -0
  151. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_external.py +0 -0
  152. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/wait_for_echo_topic.sh +0 -0
  153. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.lyrical.ros2docker.json +0 -0
  154. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.ros2docker.json +0 -0
  155. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_communication.sh +0 -0
  156. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_external.py +0 -0
  157. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external.ros2docker.json +0 -0
  158. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external_session.yaml +0 -0
  159. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/foxglove.json +0 -0
  160. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_communication.sh +0 -0
  161. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_external.py +0 -0
  162. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
  163. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/metadata.yaml +0 -0
  164. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/external.ros2docker.json +0 -0
  165. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_communication.sh +0 -0
  166. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_external.py +0 -0
  167. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external.ros2docker.json +0 -0
  168. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external_session.yaml +0 -0
  169. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/foxglove.json +0 -0
  170. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_communication.sh +0 -0
  171. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_external.py +0 -0
  172. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
  173. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/metadata.yaml +0 -0
  174. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/external.ros2docker.json +0 -0
  175. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_communication.sh +0 -0
  176. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_external.py +0 -0
  177. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external.ros2docker.json +0 -0
  178. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external_session.yaml +0 -0
  179. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_communication.sh +0 -0
  180. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_external.py +0 -0
  181. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external.ros2docker.json +0 -0
  182. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external_session.yaml +0 -0
  183. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_communication.sh +0 -0
  184. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_external.py +0 -0
  185. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external.ros2docker.json +0 -0
  186. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external_session.yaml +0 -0
  187. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_communication.sh +0 -0
  188. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_external.py +0 -0
  189. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external.ros2docker.json +0 -0
  190. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external_session.yaml +0 -0
  191. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_communication.sh +0 -0
  192. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_external.py +0 -0
  193. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/10_restamp/session-definition.yaml +0 -0
  194. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/11_trickle/session-definition.yaml +0 -0
  195. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/12_content_integrity/session-definition.yaml +0 -0
  196. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/13_link_latency/session-definition.yaml +0 -0
  197. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/14_remote_assist_anonymized/session-definition.yaml +0 -0
  198. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/15_remote_assist_anonymized_costmap/session-definition.yaml +0 -0
  199. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/16_remote_assist_anonymized_camera/session-definition.yaml +0 -0
  200. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/17_synthetic_camera_quality/session-definition.yaml +0 -0
  201. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/1_heartbeat/session-definition.yaml +0 -0
  202. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/1_heartbeat_status/session-definition.yaml +0 -0
  203. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/2_native_chatter/session-definition.yaml +0 -0
  204. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/3_comp_occ_grid/session-definition.yaml +0 -0
  205. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/4_comp_occ_grid_zen/session-definition.yaml +0 -0
  206. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/5_sized_payload/session-definition.yaml +0 -0
  207. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/6_sized_payload_zen/session-definition.yaml +0 -0
  208. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/7_latched_static/session-definition.yaml +0 -0
  209. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/8_drop/session-definition.yaml +0 -0
  210. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/9_throttle/session-definition.yaml +0 -0
  211. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_1_capacity/session-definition.yaml +0 -0
  212. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_2_load_sweep/session-definition.yaml +0 -0
  213. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_3_ramp/session-definition.yaml +0 -0
  214. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_4_recovery/session-definition.yaml +0 -0
  215. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_5_camera/session-definition.yaml +0 -0
  216. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ros2docker.json.example +0 -0
  217. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ros2docker.lyrical.json.example +0 -0
  218. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/.vscode/c_cpp_properties.json +0 -0
  219. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/.vscode/settings.json +0 -0
  220. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_easy_mode.xml.template +0 -0
  221. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_initial_peer_list.xml.template +0 -0
  222. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v2.xml.template +0 -0
  223. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v3.xml.template +0 -0
  224. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v4.xml.template +0 -0
  225. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v5.xml.template +0 -0
  226. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/create_zenoh_json5.py +0 -0
  227. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/cyclonedds_local_participants.xml.template +0 -0
  228. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/cyclonedds_minimal.xml.template +0 -0
  229. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/cyclonedds_scoped.xml.template +0 -0
  230. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/cyclonedds_tuned.xml.template +0 -0
  231. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/fastdds_easy_mode.xml.template +0 -0
  232. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/fastdds_local.xml.template +0 -0
  233. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/fastdds_tuned.xml.template +0 -0
  234. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/fastdds_unicast.xml.template +0 -0
  235. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/get_ota_xml.py +0 -0
  236. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/utils.py +0 -0
  237. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/zenoh.json5.template +0 -0
  238. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/.gitkeep +0 -0
  239. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/CMakeLists.txt +0 -0
  240. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/COLCON_IGNORE +0 -0
  241. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/LICENSE.txt +0 -0
  242. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/package.xml +0 -0
  243. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/src/hz_monitor.cpp +0 -0
  244. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_compressor.cpp +0 -0
  245. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_decompressor.cpp +0 -0
  246. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/CMakeLists.txt +0 -0
  247. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/LICENSE.txt +0 -0
  248. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/CompressedData.msg +0 -0
  249. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/EchoHeartbeat.msg +0 -0
  250. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/OtaStamped.msg +0 -0
  251. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/SizedPayload.msg +0 -0
  252. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/package.xml +0 -0
  253. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/LICENSE.txt +0 -0
  254. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/__init__.py +0 -0
  255. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/base_bridge_relay.py +0 -0
  256. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_in.py +0 -0
  257. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_out.py +0 -0
  258. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/ffmpeg_flags.py +0 -0
  259. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/heartbeat_echo.py +0 -0
  260. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/hz_monitor.py +0 -0
  261. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_bandwidth_reducer.py +0 -0
  262. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_pixel_capper.py +0 -0
  263. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/lanelet_saver.py +0 -0
  264. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/latch_relay.py +0 -0
  265. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/costmap_remapper.py +0 -0
  266. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/marker_remapper.py +0 -0
  267. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/speed_test.py +0 -0
  268. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/tf_remapper.py +0 -0
  269. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/traffic_monitor.py +0 -0
  270. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/wifi_network_analysis_1.py +0 -0
  271. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_bytes.py +0 -0
  272. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_trace.py +0 -0
  273. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/local_global_frame_bridge.py +0 -0
  274. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/localization_map_split_reduce_saver.py +0 -0
  275. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/msg_transform.py +0 -0
  276. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/ota_pcap.py +0 -0
  277. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pair_management.py +0 -0
  278. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/playout_pacer.py +0 -0
  279. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/playout_pacer_core.py +0 -0
  280. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pub_sub_pair.py +0 -0
  281. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/qos.py +0 -0
  282. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_in.py +0 -0
  283. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_out.py +0 -0
  284. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/restamp.py +0 -0
  285. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/sized_publisher.py +0 -0
  286. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency.py +0 -0
  287. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency_core.py +0 -0
  288. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview.py +0 -0
  289. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview_core.py +0 -0
  290. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/tf_map_to_cart_saver.py +0 -0
  291. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_monitor.py +0 -0
  292. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_resolution.py +0 -0
  293. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/trickle.py +0 -0
  294. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_compressor.py +0 -0
  295. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_decompressor.py +0 -0
  296. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_unwrapper.py +0 -0
  297. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_wrapper.py +0 -0
  298. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/package.xml +0 -0
  299. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/resource/com_py +0 -0
  300. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/setup.cfg +0 -0
  301. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/setup.py +0 -0
  302. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/test/test_copyright.py +0 -0
  303. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/test/test_flake8.py +0 -0
  304. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/test/test_pep257.py +0 -0
  305. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/content/base/session_plugin_base.yaml +0 -0
  306. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/content/network/up_connectivity.py +0 -0
  307. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/content/network/wifi_network_analysis_2.py +0 -0
  308. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/anonymize_bag.py +0 -0
  309. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/catmux_log_setup.sh +0 -0
  310. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/create_session_yaml.py +0 -0
  311. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/generate_session_files.py +0 -0
  312. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/run_session.py +0 -0
  313. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/run_session_in_external_terminal.py +0 -0
  314. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/strip_ansi.py +0 -0
  315. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/status_eval.py +0 -0
  316. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/stream_stats.py +0 -0
  317. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/trace_profiles.py +0 -0
  318. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/transit.py +0 -0
  319. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom/video_quality.py +0 -0
  320. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/dependency_links.txt +0 -0
  321. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/entry_points.txt +0 -0
  322. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/requires.txt +0 -0
  323. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/top_level.txt +0 -0
  324. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/terminology.md +0 -0
  325. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_benched_set_registry.py +0 -0
  326. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_findings.py +0 -0
  327. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_generated_topics_have_a_producer.py +0 -0
  328. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_lyrical_runtime_compat.py +0 -0
  329. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_markdown_links.py +0 -0
  330. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_ota_source_bundle.py +0 -0
  331. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_package_metadata.py +0 -0
  332. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_packaged_resources.py +0 -0
  333. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_profile_covers_generated_commands.py +0 -0
  334. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_pytest_policy.py +0 -0
  335. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_readme_examples.py +0 -0
  336. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_security_maintenance_config.py +0 -0
  337. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_session_configuration_doc.py +0 -0
  338. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_session_template_substitution.py +0 -0
  339. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/contract/test_workflow_contracts.py +0 -0
  340. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/conftest.py +0 -0
  341. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/test_anonymize_e2e.py +0 -0
  342. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/test_benchmark_ab.py +0 -0
  343. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/test_benchmark_capacity.py +0 -0
  344. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/test_benchmark_replay.py +0 -0
  345. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/test_parallel_smoke.py +0 -0
  346. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/test_smoke.py +0 -0
  347. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/test_timeline_stepping.py +0 -0
  348. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/e2e/test_video_quality_e2e.py +0 -0
  349. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/sessions/generate_rmw_matrix.py +0 -0
  350. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-local_zenoh-ros2dds-ota/session-definition.yaml +0 -0
  351. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota/session-definition.yaml +0 -0
  352. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota-tuned/session-definition.yaml +0 -0
  353. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_fastdds/session-definition.yaml +0 -0
  354. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_fastdds-default/session-definition.yaml +0 -0
  355. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_zen-endpoints/session-definition.yaml +0 -0
  356. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_anonymize.py +0 -0
  357. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_bag_ground_truth.py +0 -0
  358. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_benched_set.py +0 -0
  359. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_benchmark.py +0 -0
  360. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_benchmark_delta.py +0 -0
  361. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_bundle_check.py +0 -0
  362. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_catmux_pane_logging.py +0 -0
  363. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_cli.py +0 -0
  364. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_cli_benchmark.py +0 -0
  365. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_concurrency.py +0 -0
  366. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_container_shaping.py +0 -0
  367. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_deployment.py +0 -0
  368. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ffmpeg_flags.py +0 -0
  369. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ffmpeg_packet.py +0 -0
  370. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_field_profiles.py +0 -0
  371. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_forensics.py +0 -0
  372. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_geomap.py +0 -0
  373. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_image_cache.py +0 -0
  374. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_link_bytes.py +0 -0
  375. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_link_trace.py +0 -0
  376. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_netem_dist.py +0 -0
  377. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_network_preflight.py +0 -0
  378. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_network_profiles.py +0 -0
  379. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_network_shaper.py +0 -0
  380. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_benchmark_peer_exec.py +0 -0
  381. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_link_configs.py +0 -0
  382. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_pcap.py +0 -0
  383. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_unwrapper.py +0 -0
  384. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_wrapper.py +0 -0
  385. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_xml.py +0 -0
  386. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_playout_pacer.py +0 -0
  387. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_plots.py +0 -0
  388. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_pub_sub_pair_types.py +0 -0
  389. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_qos_fallback_logging.py +0 -0
  390. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_relay_optional_parameters.py +0 -0
  391. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_ros_node_entity_ownership.py +0 -0
  392. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_session_pipeline.py +0 -0
  393. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_stage_latency.py +0 -0
  394. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_status_eval.py +0 -0
  395. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_status_overview.py +0 -0
  396. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_status_overview_observer.py +0 -0
  397. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_stream_stats.py +0 -0
  398. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_terminology_stage_ownership.py +0 -0
  399. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_trace_profiles.py +0 -0
  400. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_transit.py +0 -0
  401. {rosotacom_dev-2.5.dev80 → rosotacom_dev-2.5.dev81}/tests/unit/test_video_quality.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rosotacom-dev
3
- Version: 2.5.dev80
3
+ Version: 2.5.dev81
4
4
  Summary: Host CLI for ROS OTA communication sessions.
5
5
  Author: develNor
6
6
  License-Expression: BSD-3-Clause
@@ -40,6 +40,7 @@ living verification hook.
40
40
  - [A lost keyframe silences exactly the next gop_size−2 deltas](keyframe-loss-kills-the-next-deltas.md) - libavcodec emits nothing for them, the last delta decodes with artifacts, the next keyframe restores clean decode; a lost delta never blocks decode — so the display hole is gop_size × frame period, deterministically.
41
41
  - [Any transport element in a Fast DDS profile doubles every sample on the wire](a-transport-element-doubles-every-fastdds-sample.md) - 366 datagrams for 180 samples against 183 without it; `<builtinTransports>DEFAULT` is a no-op selection and doubles too, so the trigger is the element's presence — removing it takes the shipped OTA profile from 2.10x the payload to 1.04x at identical delivery.
42
42
  - [Lifespan is enforced by one DDS reader and not the other](lifespan-is-enforced-by-one-reader-and-not-the-other.md) - under the same 20% oversubscription both stacks queue alike (472 and 433 delivered at ~1.1-1.2 s); with `lifespan: 0.7` CycloneDDS is unchanged and delivers 9.1% inside the bound, while Fast DDS drops to 4 delivered and never exceeds 570 ms — the policy decides shown-vs-suppressed, not how long the wait is.
43
+ - [A filling queue adds delay and no loss of its own](queueing-adds-delay-not-loss.md) - 18 bins of ramp from 0.5 to 5.6 s lose 0 of 558 on a clean link and 15 of 558 on one that drops 0.6 % of packets, which is the unshaped rate; the queue defers, the link loses, and the buffer ends it at 97 % of one bin.
43
44
  - [Oversubscription queues — it does not lose until the queue itself dies](oversubscription-queues-not-losses.md) - 16% over an emulated cap climbed one-way delay 340 → 3250 ms across twelve bins with zero loss in every one; the losses arrived only when the queue died, all at once.
44
45
  - [Best-effort reordering becomes reader-side loss, independent of history depth](reorder-becomes-reader-loss.md) - under pure delay jitter a Cyclone best-effort reader discards every overtaken sample (57% at 100 Hz under 50+-45 ms), delivery stays strictly monotonic, and depth 50 loses the same as depth 1.
45
46
  - [Jitter causes loss while bandwidth shortage builds latency](jitter-loss-bandwidth-latency.md) - 18 KB at 20 Hz separates jitter-induced loss from bandwidth-induced queueing.
@@ -0,0 +1,122 @@
1
+ # A Filling Queue Adds Delay And No Loss Of Its Own
2
+
3
+ ## Claim
4
+
5
+ Under oversubscription a queue converts the excess into delay and contributes
6
+ **nothing** to the loss rate until it overflows. Capping an otherwise clean link
7
+ 15 % below the offer ramps one-way delay from 0.5 s to 5.6 s across eighteen
8
+ consecutive one-second bins with **0 of 558** offered messages lost, and drops
9
+ 97 % of a bin only once the buffer is full. Repeating the same cap on a link
10
+ that also drops 0.6 % of packets independently reproduces the identical ramp and
11
+ loses 15 of 558 during it — 2.7 %, which is the unshaped link's own 2.51 % and
12
+ not a milligram more.
13
+
14
+ So "the queue lost it" is never the explanation. Whatever a filling queue loses,
15
+ the link was losing anyway; what the queue adds is age. The corollary is the
16
+ useful one: **loss and delay have to be read as two measurements, because the
17
+ queue moves only one of them**, and a loss-based health verdict is blind to the
18
+ whole of the second signal.
19
+
20
+ ## Setup
21
+
22
+ - Host pair / topology: `tks-lamborghini`, rosotacom local benchmark mode using
23
+ the packaged example project; two peer containers on a private bridge, uplink
24
+ shaping via `tc` inside the peers' own netns (no host privileges).
25
+ - rosotacom SHA: `c5ce52f` (harness), submodule `c2d2467`.
26
+ - Profile: four conditions in one file, offer held at 1.035 Mbit/s throughout so
27
+ only the shaping differs.
28
+
29
+ | name | uplink |
30
+ |---|---|
31
+ | `q-clean` | `delay: 25ms` |
32
+ | `q-loss` | `delay: 25ms, loss: 0.6%` |
33
+ | `q-squeeze` | 10 s clean, 25 s at `rate: 900kbit`, 10 s clean |
34
+ | `q-squeeze-loss` | the same three steps, `loss: 0.6%` throughout |
35
+
36
+ - Load: `--size-pattern 6x200B+1x28KB --rate-hz 31`, so one stream carries a
37
+ 1-fragment and a 24-fragment class together and the size signature of the loss
38
+ is readable inside a single run.
39
+ - Seed policy: `loss` is netem's own stochastic element; `n=1` per condition,
40
+ reported as the four-cell comparison rather than as a distribution.
41
+
42
+ ## Evidence
43
+
44
+ Evidence grade: packaged-profile benchmark runs plus their per-bin timelines.
45
+
46
+ ```bash
47
+ rosotacom benchmark probe --project src/rosotacom/resources/examples/rosotacom.yaml \
48
+ --profiles-file <profiles.yaml> --profile q-squeeze \
49
+ --size-pattern 6x200B+1x28KB --rate-hz 31 --duration 45 --repeats 1 \
50
+ --bin-s 1 --no-plot
51
+ ```
52
+
53
+ | condition | ramp | delay across it | offered | lost in ramp | whole run |
54
+ |---|---:|---|---:|---:|---:|
55
+ | `q-clean` | none | 29.9 ms flat | — | — | 0 / 1398 = 0.00 % |
56
+ | `q-loss` | none | 29.2 ms flat | — | — | 35 / 1397 = 2.51 % |
57
+ | `q-squeeze` | 18 bins | 532 → 5623 ms | 558 | **0** | 84 / 1317 = 6.38 % |
58
+ | `q-squeeze-loss` | 18 bins | 538 → 5490 ms | 558 | **15 = 2.7 %** | 119 / 1314 = 9.06 % |
59
+
60
+ The ramp is cut by the delay's own slope and never by its loss — a bin belongs
61
+ to it when the median delay gained at least 250 ms over the bin before it. The
62
+ shaped bins gain about 295 ms each; the first bin to lose gains 221 and falls
63
+ outside by that rule rather than by its outcome. Without that discipline the
64
+ measurement defines its own answer.
65
+
66
+ Three readings:
67
+
68
+ 1. **Queueing is not a loss process.** Eighteen bins, 558 messages, zero. At the
69
+ 0.6 % per-packet rate the same load carries in `q-loss`, 558 messages of mean
70
+ 4.2 fragments would carry ~14 losses; the shaped-but-clean arm has none,
71
+ because there is nothing to lose them to.
72
+ 2. **Queueing does not amplify the link's loss either.** `q-squeeze-loss` loses
73
+ 2.7 % during a ramp whose delay reaches 5.5 s, against 2.51 % on the same link
74
+ with no queue at all. The queue defers packets; it does not damage them.
75
+ 3. **What ends it is the buffer, and it ends abruptly.** 97 % of a single bin,
76
+ not a gradual rise. The lossless window is therefore bounded by buffer depth
77
+ over excess rate and can be computed in advance, which is the only part of
78
+ this a deployment can design against.
79
+
80
+ Verification: manual, needs Docker and about three minutes per condition. Run
81
+ the command above for each profile and read `time-bins.jsonl` beside
82
+ `result.json`: the `q-squeeze` bins under the cap must show monotonically
83
+ climbing `latency_p50_ms` with `lost = 0`, and `q-squeeze-loss` must show the
84
+ same climb with `lost` at the unshaped arm's rate.
85
+
86
+ ## Status
87
+
88
+ confirmed, 2026-09-01.
89
+
90
+ ## Publication notes
91
+
92
+ This is the control the field could not supply. On a real cellular uplink the
93
+ two signals never separate — in the KAMO August campaign, thirty-six
94
+ pre-registered filling episodes over 168 s (delay rising for three or more
95
+ consecutive seconds, gaining at least 150 ms) lose 2.34 % against the 2.27 %
96
+ their own seconds' rate predicts, P(at most this many) = 0.71 — because whatever reduces
97
+ the grant also raises the error rate. Reading that field result alone, one would
98
+ conclude a filling queue loses. This finding shows it does not: the loss belongs
99
+ to the link and arrives whether or not the queue is filling.
100
+
101
+ A two-host repeat over the FZI LAN (lamborghini orchestrating, seat as peer b
102
+ through `remote-ota`) reached the peer, docker, and the containerized shaping
103
+ capability on both sides and then stopped: `--peer-exec` requires
104
+ `--install-mode checkout`, and checkout mode needs the project config inside the
105
+ peer's own checkout, while the only OTA project registered on seat is
106
+ `remote-assist`, whose session set has no synthetic benchmark session. So the
107
+ LAN arm needs either a bench session in `remote-assist` or the harness on a
108
+ second machine, and the four conditions above are single-host. That is the
109
+ weaker setting for network realism and the stronger one for this question: on
110
+ one host the shaper is the only thing between the peers, so a lossless ramp
111
+ cannot be a property of some intervening link.
112
+
113
+ It supersedes the reading in
114
+ [oversubscription-queues-not-losses.md](oversubscription-queues-not-losses.md),
115
+ which reported the same lossless ramp but attributed the boundary losses to the
116
+ timeline step destroying the queue. Here the buffer overflows *inside* an
117
+ unchanged shaping step, so the overflow is the queue's own limit rather than an
118
+ artefact of `tc qdisc replace`.
119
+
120
+ For papers: the pair `q-squeeze` / `q-squeeze-loss` is the figure. One ramp, one
121
+ loss axis, two arms — it shows in a single panel that the delay is the queue's
122
+ and the loss is the link's.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rosotacom-dev
3
- Version: 2.5.dev80
3
+ Version: 2.5.dev81
4
4
  Summary: Host CLI for ROS OTA communication sessions.
5
5
  Author: develNor
6
6
  License-Expression: BSD-3-Clause
@@ -78,6 +78,7 @@ docs/findings/lighter-message-loss.md
78
78
  docs/findings/neither-a-queue-nor-a-burst-tilts-the-size-law.md
79
79
  docs/findings/one-domain-two-cyclone-configs-stop-interoperating.md
80
80
  docs/findings/oversubscription-queues-not-losses.md
81
+ docs/findings/queueing-adds-delay-not-loss.md
81
82
  docs/findings/reorder-becomes-reader-loss.md
82
83
  docs/findings/sender-rows-make-a-dead-link-look-loss-free.md
83
84
  docs/findings/the-size-law-belongs-to-the-transport-not-the-link.md
@@ -62,6 +62,7 @@
62
62
  "docs/findings/neither-a-queue-nor-a-burst-tilts-the-size-law.md",
63
63
  "docs/findings/one-domain-two-cyclone-configs-stop-interoperating.md",
64
64
  "docs/findings/oversubscription-queues-not-losses.md",
65
+ "docs/findings/queueing-adds-delay-not-loss.md",
65
66
  "docs/findings/reorder-becomes-reader-loss.md",
66
67
  "docs/findings/repro/decode_chain_repro.py",
67
68
  "docs/findings/repro/reorder_drop_repro.py",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.4",
3
+ "distance": 81,
4
+ "node": "g1d38e8a9bd4fb5e3c9a20c0a1603c365996cc296",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-01"
8
+ }
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "2.4",
3
- "distance": 80,
4
- "node": "g20983ff6a2471626fc5c940a3cfbf8e87a92b1cd",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-08-31"
8
- }