pyroboreplay 2.7.0__tar.gz → 2.10.1__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 (320) hide show
  1. pyroboreplay-2.10.1/.github/ISSUE_TEMPLATE/bug_report.yml +52 -0
  2. pyroboreplay-2.10.1/.github/ISSUE_TEMPLATE/feature_request.yml +34 -0
  3. pyroboreplay-2.10.1/.github/dependabot.yml +19 -0
  4. pyroboreplay-2.10.1/.github/pull_request_template.md +20 -0
  5. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/workflows/ci.yml +6 -6
  6. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/workflows/docs.yml +2 -2
  7. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/workflows/release.yml +11 -15
  8. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/workflows/security.yml +10 -2
  9. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.gitignore +5 -1
  10. pyroboreplay-2.10.1/.graphifyignore +31 -0
  11. pyroboreplay-2.10.1/CHANGELOG.md +150 -0
  12. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/CONTRIBUTING.md +22 -40
  13. pyroboreplay-2.10.1/Cargo.lock +5324 -0
  14. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/Cargo.toml +24 -9
  15. pyroboreplay-2.10.1/LICENSE +202 -0
  16. pyroboreplay-2.10.1/PKG-INFO +183 -0
  17. pyroboreplay-2.10.1/README.md +146 -0
  18. pyroboreplay-2.10.1/ROADMAP_HONEST.md +281 -0
  19. pyroboreplay-2.10.1/build.rs +27 -0
  20. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/GITHUB_SETTINGS.md +2 -2
  21. pyroboreplay-2.10.1/docs/IMPLEMENTATION_STATUS.md +229 -0
  22. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/QUICKSTART.md +2 -2
  23. pyroboreplay-2.7.0/docs/ROADMAP.md → pyroboreplay-2.10.1/docs/archive/OLD_docs_ROADMAP.md +16 -6
  24. pyroboreplay-2.10.1/docs/archive/README.md +26 -0
  25. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/camera_export_demo.rs +8 -6
  26. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/causal_analysis_demo.rs +9 -11
  27. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/causal_query_engine_demo.rs +17 -7
  28. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/causal_visualization_demo.rs +28 -10
  29. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/compliance_report_demo.rs +18 -16
  30. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/correlation_analysis_demo.rs +33 -15
  31. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/counterfactual_reasoning_demo.rs +36 -13
  32. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/coverage_evolution_demo.rs +20 -20
  33. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/deterministic_replay_demo.rs +13 -4
  34. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/diagnostic_report_demo.rs +60 -21
  35. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/failover_demo.rs +95 -5
  36. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/fleet_monitor_demo.rs +26 -9
  37. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/generate_warehouse_mission.rs +8 -9
  38. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/imu_visualization_demo.rs +2 -3
  39. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/keyboard_shortcuts_demo.rs +1 -2
  40. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/lidar_visualization_demo.rs +3 -4
  41. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/multi_robot_coordination_demo.rs +15 -8
  42. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/pyterrain_bridge_demo.rs +42 -35
  43. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/recommendation_engine_demo.rs +61 -22
  44. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/root_cause_analysis_demo.rs +38 -13
  45. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/sensor_metadata_demo.rs +10 -6
  46. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/spatial_causality_demo.rs +43 -14
  47. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/sqlite_backend_demo.rs +15 -5
  48. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/stats_dashboard_demo.rs +2 -4
  49. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/storage_backend_demo.rs +19 -7
  50. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/streaming_demo.rs +4 -1
  51. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/pyproject.toml +17 -7
  52. pyroboreplay-2.10.1/scripts/test_ollama_integration.sh +58 -0
  53. pyroboreplay-2.10.1/src/adapters/cdr.rs +272 -0
  54. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/adapters/configuration.rs +64 -40
  55. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/adapters/linux_log.rs +25 -17
  56. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/adapters/metrics.rs +32 -13
  57. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/adapters/mod.rs +4 -3
  58. pyroboreplay-2.10.1/src/adapters/ros2.rs +383 -0
  59. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/adaptive_recalibration.rs +42 -33
  60. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/aggregation.rs +14 -18
  61. pyroboreplay-2.10.1/src/analyzers/coordination/control_loop_stall.rs +174 -0
  62. pyroboreplay-2.10.1/src/analyzers/coordination/mod.rs +61 -0
  63. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/drift_detection.rs +30 -29
  64. pyroboreplay-2.10.1/src/analyzers/environmental/lighting_variability.rs +187 -0
  65. pyroboreplay-2.10.1/src/analyzers/environmental/mod.rs +58 -0
  66. pyroboreplay-2.10.1/src/analyzers/environmental/thermal_drift.rs +179 -0
  67. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/evidence_quality_scoring.rs +14 -14
  68. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/feedback_loop.rs +4 -4
  69. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/fleet_learning.rs +39 -36
  70. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/gap_narrative_pipeline.rs +28 -14
  71. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/gap_to_causal.rs +82 -52
  72. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/historical.rs +8 -13
  73. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/incident_narrative.rs +42 -57
  74. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/mod.rs +29 -26
  75. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/multi_factor_causality.rs +21 -19
  76. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/phase3_validation.rs +7 -12
  77. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/phase4_integration.rs +18 -16
  78. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/physical/mechanical_degradation.rs +20 -14
  79. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/physical/structural_dynamics.rs +23 -8
  80. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/physical/thermal_effects.rs +21 -13
  81. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/predictive_gaps.rs +19 -15
  82. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/quality_confidence.rs +22 -31
  83. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/recalibration.rs +11 -17
  84. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/robot_calibration.rs +37 -26
  85. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/scoring.rs +10 -21
  86. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/sensor/detection_robustness.rs +40 -38
  87. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/sensor/optical_contamination.rs +12 -6
  88. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/severity.rs +5 -12
  89. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/severity_contracts.rs +18 -45
  90. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/system/clock_drift.rs +12 -3
  91. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/telemetry.rs +116 -22
  92. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/test_data.rs +2 -3
  93. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/validation.rs +35 -35
  94. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/camera_export.rs +5 -10
  95. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/causal_viz.rs +41 -42
  96. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/consolidated_output.rs +17 -11
  97. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/gap_analysis.rs +37 -15
  98. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/imu_viz.rs +13 -33
  99. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/json_output.rs +3 -8
  100. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/keyboard.rs +10 -18
  101. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/lidar_viz.rs +12 -10
  102. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/mod.rs +28 -29
  103. pyroboreplay-2.10.1/src/cli/replay_ui.rs +664 -0
  104. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/sensor_stats.rs +22 -35
  105. pyroboreplay-2.10.1/src/cli/stats_dashboard.rs +682 -0
  106. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/tests_consolidation_integration.rs +10 -5
  107. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/anomaly_detector.rs +66 -53
  108. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/causality.rs +94 -54
  109. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/compliance.rs +21 -7
  110. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/confidence_scoring.rs +30 -31
  111. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/correlation.rs +20 -16
  112. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/counterfactual.rs +21 -16
  113. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/coverage_evolution.rs +11 -4
  114. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/cross_mission.rs +24 -6
  115. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/deterministic_replay.rs +27 -9
  116. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/event.rs +5 -5
  117. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/evidence_discovery.rs +74 -41
  118. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/explanation.rs +10 -3
  119. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_actions.rs +3 -2
  120. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/localization.rs +5 -6
  121. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/middleware.rs +6 -4
  122. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/mod.rs +16 -9
  123. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/navigation.rs +16 -6
  124. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/perception.rs +0 -2
  125. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/system.rs +0 -1
  126. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/geospatial_export.rs +15 -5
  127. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/incident_analysis.rs +54 -23
  128. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/incident_bundle.rs +46 -10
  129. pyroboreplay-2.10.1/src/core/mod.rs +97 -0
  130. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/multi_robot.rs +27 -19
  131. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/pyterrain_bridge.rs +12 -7
  132. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/recommendation.rs +53 -15
  133. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/recommendations_engine.rs +26 -14
  134. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/root_cause.rs +40 -28
  135. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/spatial_causality.rs +38 -30
  136. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/timeline.rs +31 -22
  137. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/timeline_correlation.rs +16 -8
  138. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/forensic_reporter.rs +19 -34
  139. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/invisible_person_detector.rs +1 -4
  140. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/mod.rs +7 -7
  141. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/rgb_thermal_fusion.rs +26 -13
  142. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/thermal_model.rs +10 -5
  143. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/agent_friendly_output.rs +1 -4
  144. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/event_extraction.rs +4 -1
  145. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/hidden_explanations.rs +30 -36
  146. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/mod.rs +8 -8
  147. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/perception_gap_analysis.rs +22 -27
  148. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/scene_reconstruction.rs +51 -36
  149. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/change_detection.rs +37 -22
  150. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/fleet_terrain_learning.rs +2 -4
  151. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/knowledge_graph.rs +2 -2
  152. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/longitudinal_reasoning.rs +2 -9
  153. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/mod.rs +20 -12
  154. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/multi_mission_learning.rs +3 -4
  155. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/spatial_grounding.rs +37 -29
  156. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/terrain_integration.rs +7 -10
  157. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/world_model.rs +11 -10
  158. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/lib.rs +53 -40
  159. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/detection_backends.rs +9 -5
  160. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/detection_orchestrator.rs +45 -58
  161. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/gap_context_analyzer.rs +10 -20
  162. pyroboreplay-2.10.1/src/perception/mod.rs +32 -0
  163. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/object_detection.rs +4 -2
  164. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/object_tracking.rs +11 -14
  165. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/perception_analysis.rs +24 -12
  166. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/retrospective_detection.rs +14 -15
  167. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/scene_understanding.rs +4 -5
  168. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/analyzer_capabilities.rs +33 -18
  169. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/mod.rs +9 -18
  170. pyroboreplay-2.10.1/src/phase14/modality_adapters.rs +1976 -0
  171. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/navigation_session.rs +80 -31
  172. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/temporal_sync.rs +32 -39
  173. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/timeline_indexing.rs +39 -28
  174. pyroboreplay-2.10.1/src/phase14/video_processing.rs +830 -0
  175. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/costmap_analyzer.rs +10 -8
  176. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/dynamic_obstacle_analyzer.rs +2 -4
  177. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/failure_detector.rs +13 -12
  178. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/finding_generator.rs +9 -11
  179. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/localization_analyzer.rs +38 -17
  180. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/mod.rs +12 -11
  181. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/nav2_limitation_detector.rs +11 -8
  182. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/planner_analyzer.rs +30 -12
  183. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/root_cause_generator.rs +1 -1
  184. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/semantic_gap_analyzer.rs +1 -1
  185. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/causal_builder.rs +74 -33
  186. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/decision_reconstructor.rs +47 -20
  187. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/graph_validator.rs +27 -9
  188. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/mod.rs +8 -3
  189. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/pattern_matcher.rs +17 -19
  190. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase17/alternative_timeline.rs +24 -17
  191. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase17/counterfactual.rs +59 -30
  192. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase17/mod.rs +3 -4
  193. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase17/outcome_influence.rs +30 -29
  194. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase18/decision_clustering.rs +22 -23
  195. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase18/fleet_learning.rs +80 -43
  196. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase18/mod.rs +4 -5
  197. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase18/pattern_discovery.rs +28 -18
  198. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase19/mod.rs +2 -3
  199. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase19/temporal_patterns.rs +27 -14
  200. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase19/trend_detector.rs +38 -36
  201. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase19/window_analyzer.rs +20 -11
  202. pyroboreplay-2.10.1/src/phase20/counterfactual_scenarios.rs +307 -0
  203. pyroboreplay-2.10.1/src/phase20/decision_tree.rs +477 -0
  204. pyroboreplay-2.10.1/src/phase20/mod.rs +11 -0
  205. pyroboreplay-2.10.1/src/phase20/rule_extraction.rs +301 -0
  206. pyroboreplay-2.10.1/src/pyroboreplay/__init__.py +42 -0
  207. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/reasoning/explanation_generator.rs +13 -10
  208. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/reasoning/incident_patterns.rs +9 -3
  209. pyroboreplay-2.10.1/src/reasoning/llm_integration.rs +535 -0
  210. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/reasoning/semantic_search.rs +10 -21
  211. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/audit.rs +6 -10
  212. pyroboreplay-2.10.1/src/storage/backends.rs +1624 -0
  213. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/failover.rs +25 -15
  214. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/inmemory.rs +16 -10
  215. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/mod.rs +8 -6
  216. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/sqlite.rs +68 -84
  217. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/channel.rs +8 -4
  218. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/fleet_monitor.rs +24 -9
  219. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/live_diagnostics.rs +7 -13
  220. pyroboreplay-2.10.1/src/streaming/mod.rs +19 -0
  221. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/processor.rs +12 -23
  222. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/sla.rs +16 -6
  223. pyroboreplay-2.10.1/tests/fixtures/ros2_cdr_fixture.db3 +0 -0
  224. pyroboreplay-2.10.1/tests/fixtures/test.zip +0 -0
  225. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/integration_tests.rs +11 -10
  226. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_actions.rs +39 -33
  227. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_anomaly_detector.rs +20 -11
  228. pyroboreplay-2.10.1/tests/test_bigquery_backend_integration.rs +193 -0
  229. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_edge_cases.rs +52 -50
  230. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_explanation.rs +35 -12
  231. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_geospatial_export.rs +8 -9
  232. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_mlrias_integration.rs +15 -10
  233. pyroboreplay-2.10.1/tests/test_ollama_integration.rs +89 -0
  234. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_performance.rs +13 -7
  235. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_phase2_patterns.rs +69 -50
  236. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_phase2_prediction.rs +38 -18
  237. pyroboreplay-2.10.1/tests/test_postgres_backend_integration.rs +175 -0
  238. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_python_api_integration.rs +68 -41
  239. pyroboreplay-2.10.1/tests/test_ros2_cdr_decoding.rs +189 -0
  240. pyroboreplay-2.10.1/tests/test_s3_backend_integration.rs +199 -0
  241. pyroboreplay-2.10.1/tools/graphify/README.md +63 -0
  242. pyroboreplay-2.10.1/tools/graphify/graphify_adapter.py +242 -0
  243. pyroboreplay-2.7.0/Cargo.lock +0 -2557
  244. pyroboreplay-2.7.0/LICENSE +0 -32
  245. pyroboreplay-2.7.0/OTEL_SETUP_GUIDE.md +0 -319
  246. pyroboreplay-2.7.0/PKG-INFO +0 -441
  247. pyroboreplay-2.7.0/PRODUCTION_DEPLOYMENT.md +0 -512
  248. pyroboreplay-2.7.0/README.md +0 -403
  249. pyroboreplay-2.7.0/ROADMAP.md +0 -192
  250. pyroboreplay-2.7.0/docs/IMPLEMENTATION_STATUS.md +0 -383
  251. pyroboreplay-2.7.0/otel_exporter.py +0 -189
  252. pyroboreplay-2.7.0/pyroboreplay/scripts/__init__.py.bak +0 -0
  253. pyroboreplay-2.7.0/src/adapters/ros2.rs +0 -303
  254. pyroboreplay-2.7.0/src/analyzers/coordination/mod.rs +0 -33
  255. pyroboreplay-2.7.0/src/analyzers/environmental/mod.rs +0 -33
  256. pyroboreplay-2.7.0/src/cli/replay_ui.rs +0 -331
  257. pyroboreplay-2.7.0/src/cli/stats_dashboard.rs +0 -380
  258. pyroboreplay-2.7.0/src/core/mod.rs +0 -79
  259. pyroboreplay-2.7.0/src/perception/mod.rs +0 -22
  260. pyroboreplay-2.7.0/src/phase14/modality_adapters.rs +0 -701
  261. pyroboreplay-2.7.0/src/phase14/video_processing.rs +0 -387
  262. pyroboreplay-2.7.0/src/pyroboreplay/__init__.py +0 -44
  263. pyroboreplay-2.7.0/src/reasoning/llm_integration.rs +0 -327
  264. pyroboreplay-2.7.0/src/storage/backends.rs +0 -241
  265. pyroboreplay-2.7.0/src/streaming/mod.rs +0 -18
  266. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.env.example +0 -0
  267. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.gitattributes +0 -0
  268. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/CI_SETUP.md +0 -0
  269. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1}/CODE_OF_CONDUCT.md +0 -0
  270. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/SECURITY.md +0 -0
  271. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/API.md +0 -0
  272. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/ARCHITECTURE.md +0 -0
  273. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/CAMERA_EXPORT.md +0 -0
  274. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/CLAUDE.md +0 -0
  275. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/IMU_VISUALIZATION.md +0 -0
  276. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/KEYBOARD_SHORTCUTS.md +0 -0
  277. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/LIDAR_VISUALIZATION.md +0 -0
  278. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/SENSOR_METADATA.md +0 -0
  279. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs}/STATS_DASHBOARD.md +0 -0
  280. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/ARCHITECTURE_COMPLETE.md +0 -0
  281. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/BUILD_SUMMARY.md +0 -0
  282. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/CAUSALITY_DECISION_ENGINE_VISION.md +0 -0
  283. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/CLI_STATS_DASHBOARD_FEATURE.md +0 -0
  284. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/FINAL_REPORT.txt +0 -0
  285. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/IMPLEMENTATION_SUMMARY.md +0 -0
  286. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/MLRIAS_ARCHITECTURE.md +0 -0
  287. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/MLRIAS_PHASES_COMPLETE.md +0 -0
  288. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/PHASE16_CAUSAL_GRAPHS_ROADMAP.md +0 -0
  289. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE1_COMPLETION_REPORT.md +0 -0
  290. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE1_IMPLEMENTATION.md +0 -0
  291. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE2_ADAPTER_STRATEGY.md +0 -0
  292. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE2_TESTING_COMPLETE.md +0 -0
  293. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE3_COMPLETE.md +0 -0
  294. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE3_PHASE4_ROADMAP.md +0 -0
  295. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE4_COMPLETE.md +0 -0
  296. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PRODUCT_STRATEGY.md +0 -0
  297. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PUBLISH.md +0 -0
  298. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/RELEASES.md +0 -0
  299. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/RELEASE_v2.0.0.md +0 -0
  300. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/REVISED_ROADMAP_PHASES_5_ONWARDS.md +0 -0
  301. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/STATS_DASHBOARD_QUICKSTART.md +0 -0
  302. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/TESTING_COMPLETE.md +0 -0
  303. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/TESTING_PLAN.md +0 -0
  304. {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/TESTING_STATUS.md +0 -0
  305. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/phase1_complete_diagnostics.py +0 -0
  306. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/test_python_api.py +0 -0
  307. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/pyroboreplay/_mcp_connector.py +0 -0
  308. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/pyroboreplay/_mcp_tools.py +0 -0
  309. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/pyroboreplay.toml +0 -0
  310. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/scripts/test_dashboards_crossplatform.sh +0 -0
  311. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/physical/mod.rs +2 -2
  312. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/sensor/mod.rs +2 -2
  313. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/system/mod.rs +0 -0
  314. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/args.rs +0 -0
  315. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/diagnostic_report.rs +1 -1
  316. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/temporal_analysis.rs +0 -0
  317. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/main.rs +0 -0
  318. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/reasoning/mod.rs +4 -4
  319. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/backend.rs +0 -0
  320. {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/kafka_stub.rs +0 -0
@@ -0,0 +1,52 @@
1
+ name: Bug report
2
+ description: Report a problem with PyRoboReplay
3
+ labels: ["bug"]
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: What happened?
9
+ description: Clear description of the bug.
10
+ validations:
11
+ required: true
12
+
13
+ - type: textarea
14
+ id: repro
15
+ attributes:
16
+ label: Steps to reproduce
17
+ description: Minimal steps or code to reproduce the issue.
18
+ placeholder: |
19
+ 1. Run `pyroboreplay analyze mission.bag --detect-gaps`
20
+ 2. ...
21
+ validations:
22
+ required: true
23
+
24
+ - type: textarea
25
+ id: expected
26
+ attributes:
27
+ label: Expected vs actual behavior
28
+ validations:
29
+ required: true
30
+
31
+ - type: input
32
+ id: version
33
+ attributes:
34
+ label: PyRoboReplay version
35
+ description: Output of `pyroboreplay --version` or `pip show pyroboreplay`
36
+ validations:
37
+ required: true
38
+
39
+ - type: input
40
+ id: environment
41
+ attributes:
42
+ label: Environment
43
+ description: OS, Rust version (`rustc --version`), Python version (`python --version`)
44
+ placeholder: "e.g. macOS 15, rustc 1.97.1, Python 3.11"
45
+ validations:
46
+ required: true
47
+
48
+ - type: textarea
49
+ id: logs
50
+ attributes:
51
+ label: Relevant logs/output
52
+ render: shell
@@ -0,0 +1,34 @@
1
+ name: Feature request
2
+ description: Suggest an idea for PyRoboReplay
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: textarea
6
+ id: problem
7
+ attributes:
8
+ label: What problem does this solve?
9
+ description: What are you trying to do that PyRoboReplay doesn't support today?
10
+ validations:
11
+ required: true
12
+
13
+ - type: textarea
14
+ id: solution
15
+ attributes:
16
+ label: Proposed solution
17
+ description: What would you like to see happen? A CLI flag, a Python API addition, etc.
18
+ validations:
19
+ required: false
20
+
21
+ - type: textarea
22
+ id: alternatives
23
+ attributes:
24
+ label: Alternatives considered
25
+ validations:
26
+ required: false
27
+
28
+ - type: checkboxes
29
+ id: checked-roadmap
30
+ attributes:
31
+ label: Checklist
32
+ options:
33
+ - label: I checked ROADMAP_HONEST.md and this isn't already listed as built-but-unexposed
34
+ required: false
@@ -0,0 +1,19 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "cargo"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ open-pull-requests-limit: 10
8
+
9
+ - package-ecosystem: "pip"
10
+ directory: "/"
11
+ schedule:
12
+ interval: "weekly"
13
+ open-pull-requests-limit: 10
14
+
15
+ - package-ecosystem: "github-actions"
16
+ directory: "/"
17
+ schedule:
18
+ interval: "weekly"
19
+ open-pull-requests-limit: 10
@@ -0,0 +1,20 @@
1
+ ## Description
2
+ Brief summary of changes and why.
3
+
4
+ ## Type of change
5
+ - [ ] Bug fix
6
+ - [ ] New feature
7
+ - [ ] Breaking change
8
+ - [ ] Documentation update
9
+
10
+ ## Testing
11
+ - [ ] `cargo test --lib` passes
12
+ - [ ] `cargo fmt --check` passes
13
+ - [ ] New code has tests (unit tests co-located with `#[cfg(test)]`, or `tests/` for integration)
14
+ - [ ] Ran the relevant example/CLI command manually, if applicable
15
+
16
+ ## Related issues
17
+ Fixes #
18
+
19
+ ## Notes for reviewers
20
+ Anything that needs special attention (perf implications, known limitations, follow-up work).
@@ -26,19 +26,19 @@ jobs:
26
26
  toolchain: ${{ matrix.rust }}
27
27
 
28
28
  - name: Cache cargo registry
29
- uses: actions/cache@v3
29
+ uses: actions/cache@v4
30
30
  with:
31
31
  path: ~/.cargo/registry
32
32
  key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
33
33
 
34
34
  - name: Cache cargo index
35
- uses: actions/cache@v3
35
+ uses: actions/cache@v4
36
36
  with:
37
37
  path: ~/.cargo/git
38
38
  key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }}
39
39
 
40
40
  - name: Cache cargo build
41
- uses: actions/cache@v3
41
+ uses: actions/cache@v4
42
42
  with:
43
43
  path: target
44
44
  key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
@@ -74,7 +74,7 @@ jobs:
74
74
  - uses: actions/checkout@v4
75
75
 
76
76
  - name: Set up Python
77
- uses: actions/setup-python@v4
77
+ uses: actions/setup-python@v5
78
78
  with:
79
79
  python-version: ${{ matrix.python-version }}
80
80
 
@@ -88,7 +88,7 @@ jobs:
88
88
  run: maturin build --release
89
89
 
90
90
  - name: Upload wheels
91
- uses: actions/upload-artifact@v3
91
+ uses: actions/upload-artifact@v4
92
92
  with:
93
93
  name: wheels-${{ matrix.os }}-py${{ matrix.python-version }}
94
94
  path: target/wheels/
@@ -102,7 +102,7 @@ jobs:
102
102
  - uses: actions/checkout@v4
103
103
 
104
104
  - name: Set up Python
105
- uses: actions/setup-python@v4
105
+ uses: actions/setup-python@v5
106
106
  with:
107
107
  python-version: '3.11'
108
108
 
@@ -33,5 +33,5 @@ jobs:
33
33
 
34
34
  - name: Validate markdown
35
35
  run: |
36
- pip install markdownlint-cli
37
- markdownlint README.md CLAUDE.md || true
36
+ npm install -g markdownlint-cli
37
+ markdownlint README.md docs/CLAUDE.md || true
@@ -8,25 +8,24 @@ on:
8
8
  env:
9
9
  CARGO_TERM_COLOR: always
10
10
 
11
+ permissions:
12
+ contents: write
13
+
11
14
  jobs:
12
15
  create-release:
13
16
  name: Create GitHub Release
14
17
  runs-on: ubuntu-latest
15
- outputs:
16
- upload_url: ${{ steps.create_release.outputs.upload_url }}
17
18
  steps:
18
19
  - uses: actions/checkout@v4
19
20
 
20
21
  - name: Create Release
21
- id: create_release
22
- uses: actions/create-release@v1
23
- env:
24
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22
+ uses: softprops/action-gh-release@v2
25
23
  with:
26
- tag_name: ${{ github.ref }}
27
- release_name: Release ${{ github.ref }}
24
+ name: Release ${{ github.ref_name }}
28
25
  draft: false
29
26
  prerelease: false
27
+ env:
28
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
29
 
31
30
  build-and-publish:
32
31
  name: Build and Publish Wheel
@@ -40,7 +39,7 @@ jobs:
40
39
  - uses: actions/checkout@v4
41
40
 
42
41
  - name: Set up Python
43
- uses: actions/setup-python@v4
42
+ uses: actions/setup-python@v5
44
43
  with:
45
44
  python-version: ${{ matrix.python-version }}
46
45
 
@@ -54,14 +53,11 @@ jobs:
54
53
  run: maturin build --release
55
54
 
56
55
  - name: Upload Release Asset
57
- uses: actions/upload-release-asset@v1
56
+ uses: softprops/action-gh-release@v2
57
+ with:
58
+ files: target/wheels/pyroboreplay-*.whl
58
59
  env:
59
60
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60
- with:
61
- upload_url: ${{ needs.create-release.outputs.upload_url }}
62
- asset_path: ./target/wheels/pyroboreplay-*.whl
63
- asset_name: pyroboreplay-${{ github.ref }}-${{ matrix.os }}-py${{ matrix.python-version }}.whl
64
- asset_content_type: application/zip
65
61
 
66
62
  - name: Install dependencies
67
63
  run: pip install twine
@@ -23,7 +23,15 @@ jobs:
23
23
  run: cargo install cargo-audit
24
24
 
25
25
  - name: Run security audit
26
- run: cargo audit
26
+ # RUSTSEC-2026-0258 (h2), -0104/-0098/-0099 (rustls-webpki) all come
27
+ # from the same source: aws-smithy-http-client's hyper-0.14 compat
28
+ # path still pins hyper-rustls 0.24 -> rustls 0.21 -> the old h2/
29
+ # webpki. aws-smithy-http-client 1.4.2 is the latest published
30
+ # release as of this writing and still carries this; no version
31
+ # bump on our end resolves it. Everything else cargo-audit flagged
32
+ # (paste/lru/chacha20) is a warning, not an error, and already
33
+ # doesn't fail this step.
34
+ run: cargo audit --ignore RUSTSEC-2026-0258 --ignore RUSTSEC-2026-0104 --ignore RUSTSEC-2026-0098 --ignore RUSTSEC-2026-0099
27
35
 
28
36
  dependencies:
29
37
  name: Check Outdated Dependencies
@@ -57,7 +65,7 @@ jobs:
57
65
  continue-on-error: true
58
66
 
59
67
  - name: Upload coverage to Codecov
60
- uses: codecov/codecov-action@v3
68
+ uses: codecov/codecov-action@v4
61
69
  with:
62
70
  files: ./cobertura.xml
63
71
  fail_ci_if_error: false
@@ -34,10 +34,14 @@ env/
34
34
 
35
35
  # Rust
36
36
  target/
37
- Cargo.lock
37
+ # Cargo.lock is intentionally committed: this crate ships a real binary
38
+ # (`pyroboreplay`, src/main.rs) in addition to the library, so the lockfile
39
+ # is kept for reproducible builds (see ROADMAP_HONEST.md technical debt notes).
38
40
 
39
41
  # Temp files
40
42
  *.tmp
41
43
  *.log
42
44
  temp/
43
45
  tmp/
46
+
47
+ graphify-out/
@@ -0,0 +1,31 @@
1
+ # Graphify ignore file - https://docs.graphify.com/reference/configuration
2
+ # Keep the scan (and therefore the agent's graph) focused on real source.
3
+ .git/
4
+ .github/
5
+ graphify-out/
6
+
7
+ # Build output / artifacts
8
+ target/
9
+ dist/
10
+ build/
11
+ *.egg-info/
12
+ node_modules/
13
+ .venv/
14
+ venv/
15
+ env/
16
+
17
+ # Caches
18
+ __pycache__/
19
+ *.pyc
20
+ .pytest_cache/
21
+ .mypy_cache/
22
+ .ruff_cache/
23
+ .tox/
24
+ .nox/
25
+ .coverage
26
+ htmlcov/
27
+
28
+ # Vendored / generated
29
+ *.min.js
30
+ *.min.css
31
+ *.lock
@@ -0,0 +1,150 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented here. Format follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
+
6
+ This file was started 2026-09-20, during an OSS-hygiene pass. It is not
7
+ backfilled with invented entries for prior releases — that history is real
8
+ but wasn't written down in this format as it happened, and reconstructing it
9
+ now from commit messages risks getting dates/scope wrong. For the actual
10
+ history of prior versions (v0.1 through v2.10.0), see `git log` and
11
+ `docs/archive/` (old release notes, phase-completion reports, etc.). Going
12
+ forward, new changes should be added here under `[Unreleased]` and moved to a
13
+ dated section when released.
14
+
15
+ ## [2.10.1] - 2026-10-12
16
+
17
+ ### Fixed
18
+ - CI is green again: `cargo clippy --all-targets --all-features -- -D warnings`
19
+ and `cargo fmt --check` now pass. Cleared all 47 pre-existing lib warnings
20
+ and the denials in tests/examples — unused/dead fields now carry explicit
21
+ `#[allow(dead_code)]` (intentional storage for future use), logic lints were
22
+ genuinely fixed (collapsed redundant `if`/`else if` branches in
23
+ `core/evidence_discovery.rs` and `phase17/counterfactual.rs`, replaced
24
+ `sort_by` closures with `sort_by_key`, `vec![..]` instead of
25
+ init-then-push, `matches!`, `checked_div`, iterator loops,
26
+ `format!`-in-`format!`, `Default` impl for `CausalGraph`, `&mut [_]`
27
+ over `&mut Vec`), and meaningless always-true assertions (`assert!(true)`,
28
+ `len() >= 0`, `u8 >= 0`) in tests were removed.
29
+ - `PYRAMID`/`PI`/`TAU` literals in tests/examples now use
30
+ `std::f32::consts::{PI,TAU}`.
31
+
32
+ ### Changed
33
+ - Added an optional, isolated Graphify code knowledge-graph backend (`tools/graphify/`, `.graphifyignore`, optional workflow, README badge).
34
+
35
+ ## [Unreleased]
36
+
37
+ ### Fixed
38
+ - **CRITICAL: the ROS2 adapter never read real message content, for any
39
+ sensor type** (found 2026-09-27, fixed 2026-09-29). Every parser in
40
+ `src/adapters/ros2.rs` (`parse_lidar_message`, `parse_camera_message`,
41
+ `parse_imu_message`, `parse_odometry_message`, `parse_pose_message`) took
42
+ an unused `_msg: &RosMessage` and returned a hardcoded constant event
43
+ regardless of the message's real CDR-encoded bytes. Added
44
+ `src/adapters/cdr.rs`, a real CDR (Common Data Representation) decoder —
45
+ the real OMG CDR encapsulation header, real little-endian primitive
46
+ decoding, and the real alignment rules the format requires — and rewired
47
+ all 5 parsers to decode the actual standard `sensor_msgs`/`nav_msgs`/
48
+ `geometry_msgs` binary layouts (`LaserScan`, `Image`, `Imu`, `Odometry`,
49
+ `PoseWithCovarianceStamped`). `parse_pose_message`'s `confidence` is now
50
+ derived from the message's real position-covariance trace instead of a
51
+ hardcoded `0.95`, so `detect_localization_loss`'s `confidence < 0.5` check
52
+ can actually fire on real data — verified against a real 901-message
53
+ benchmark bag with an injected covariance spike: 81/81 real
54
+ localization-loss frames now correctly detected (previously 0/81). Added
55
+ `tests/test_ros2_cdr_decoding.rs` (7 tests) against a real,
56
+ independently-generated fixture (`tests/fixtures/ros2_cdr_fixture.db3`,
57
+ built with the third-party `rosbags` Python library) as a permanent
58
+ regression test. Full detail in `ROADMAP_HONEST.md` and README's "vs
59
+ Rerun" section.
60
+ - `src/lib.rs:504` — `Hypothesis`'s `#[pyclass]` relied on PyO3's deprecated
61
+ automatic `FromPyObject` derive for `Clone` types; migrated to the explicit
62
+ opt-in `#[pyclass(from_py_object)]` (current recommended pattern for pyo3
63
+ 0.29, matching the pinned version in `Cargo.toml`). Preserves existing
64
+ behavior; verified the deprecation warning is gone from `cargo build --lib`
65
+ and `cargo clippy --all-targets --all-features`, and `cargo test --lib`
66
+ still passes (834/834).
67
+ - 22 clippy `manual_clamp` findings across `src/analyzers/`, `src/cli/`,
68
+ `src/core/`, `src/intelligence/`, `src/phase19/`, and `src/streaming/`
69
+ (e.g. `src/analyzers/scoring.rs:91,108,125,144`,
70
+ `src/analyzers/adaptive_recalibration.rs:121,162,204,260,266`) — replaced
71
+ manual `.max(a).min(b)` / `.min(b).max(a)` chains with `.clamp(a, b)`, using
72
+ clippy's own machine-generated replacement suggestions.
73
+ - 9 clippy `approx_constant` findings (imprecise `PI`/`TAU` float literals:
74
+ `3.14`, `-3.14`, `6.28`) in test fixtures across `src/core/event.rs:392-393`,
75
+ `src/core/timeline.rs:345-346,360-361,390-391`, `src/cli/causal_viz.rs:351`,
76
+ and `tests/test_python_api_integration.rs` — replaced with
77
+ `std::f32::consts::PI` / `std::f32::consts::TAU`.
78
+ - 3 clippy findings for `drop()` called on a `&mut` reference (a no-op) in
79
+ `src/analyzers/robot_calibration.rs:339,358,375` — replaced with
80
+ `let _ = profile;` per clippy's suggested fix.
81
+ - `.github/workflows/release.yml` used the archived/deprecated
82
+ `actions/create-release@v1` and `actions/upload-release-asset@v1`; replaced
83
+ both with `softprops/action-gh-release@v2` (used once to create the release,
84
+ once per build matrix leg to attach wheel assets) and added an explicit
85
+ `permissions: contents: write` block. Validated with `actionlint` (clean);
86
+ not exercised against a real tag push (no network/GitHub access in this
87
+ environment).
88
+ - `pyproject.toml`'s `[tool.maturin.sdist]` `include` list referenced a
89
+ top-level `CLAUDE.md` that doesn't exist (the real file is at
90
+ `docs/CLAUDE.md`); corrected the path.
91
+ - `.github/workflows/docs.yml`'s `readme` job ran `markdownlint README.md
92
+ CLAUDE.md` against a nonexistent path; corrected to `docs/CLAUDE.md`.
93
+ - Outdated GitHub Actions versions flagged by `actionlint`: `actions/cache@v3`
94
+ to `@v4`, `actions/setup-python@v4` to `@v5`, `codecov/codecov-action@v3`
95
+ to `@v4`.
96
+ - `Cargo.lock` was gitignored despite this crate shipping a real binary
97
+ (`pyroboreplay` CLI); now committed for reproducible builds.
98
+ - Removed stale `git.example.com` placeholder URLs from `CONTRIBUTING.md`,
99
+ `docs/GITHUB_SETTINGS.md`, and `docs/QUICKSTART.md`, replaced with the real
100
+ GitHub repo URL.
101
+ - `CONTRIBUTING.md` referenced a root-level `CLAUDE.md` and `CODE_OF_CONDUCT.md`
102
+ that lived at different paths (or, for the latter, under `docs/`); fixed
103
+ links and moved `docs/CODE_OF_CONDUCT.md` to the repository root (the
104
+ conventional location).
105
+ - README version references (`2.9.2` in badges/text) were out of sync with
106
+ `Cargo.toml`/`pyproject.toml` (`2.10.0`); updated, and the pinned
107
+ `pip install pyroboreplay==2.9.2` install command was changed to an
108
+ unpinned `pip install pyroboreplay` since this pass could not verify which
109
+ version is actually live on PyPI (no network access in this environment).
110
+
111
+ ### Changed
112
+ - `CONTRIBUTING.md`'s "Areas We're Looking For Help" and "Roadmap" sections
113
+ contained a stale, fabricated-sounding quarterly roadmap (Q4 2026 / 2027
114
+ dates) that pre-dated the actual v2.10.0 codebase and listed already-shipped
115
+ work (Postgres/S3/BigQuery backends) as still-needed. Replaced with a
116
+ pointer to `ROADMAP_HONEST.md`.
117
+ - Renamed `ROADMAP.md` to `ROADMAP_HONEST.md` and added a "Technical debt"
118
+ section with concrete `file:line` findings (see that file).
119
+ - Moved 19 stale phase/status/strategy/testing snapshot docs (from both the
120
+ repo root and `docs/`) into `docs/archive/` with an index explaining why
121
+ each was archived, rather than deleting them.
122
+ - Consolidated three overlapping stats-dashboard docs into one canonical
123
+ `docs/STATS_DASHBOARD.md` (kept current; the flag it documents,
124
+ `--stats-dashboard`, is real and verified against `src/cli/args.rs`).
125
+
126
+ ### Removed
127
+ - `pyroboreplay/scripts/__init__.py.bak` — an empty, tracked backup file with
128
+ no purpose.
129
+
130
+ ## Known issues as of this pass
131
+
132
+ See `ROADMAP_HONEST.md` for the full, current list. Highlights:
133
+ - The MCP tool integration (`pyroboreplay/_mcp_tools.py`, `_mcp_connector.py`)
134
+ is unshippable dead code — it lives outside the directory maturin actually
135
+ packages, so it's not importable from an installed wheel, despite
136
+ `pyroboreplay.toml` claiming all 13 MCP tools are enabled. Not addressed in
137
+ this pass (needs a real wire-up-or-delete decision).
138
+ - `cargo clippy --all-targets --all-features -- -D warnings` now fails with 61
139
+ errors (down from 96 — the mechanical `manual_clamp`, `approx_constant`, and
140
+ no-op-`drop` categories were fixed in this pass). The remainder is 3
141
+ `>7-arg` function signatures and 15+ dead struct fields/methods that need a
142
+ real refactor-or-delete decision, plus a handful of smaller style lints, none
143
+ touched in this pass.
144
+ - `459` `.unwrap()` calls in `src/` (~208 estimated outside test modules) —
145
+ not audited in this pass, too large a surface for a quick-fix pass.
146
+ - `src/adapters/ros2.rs` — every `parse_*_message` helper (lidar, camera, IMU,
147
+ odometry, pose) ignores the actual message payload bytes (`msg.data`) and
148
+ returns hardcoded zero/empty values; real per-topic CDR deserialization is
149
+ unimplemented. Checked in this pass and confirmed to be real feature work,
150
+ not a quick fix — left untouched.
@@ -6,7 +6,7 @@ Thanks for your interest in contributing! We welcome contributions of all kinds.
6
6
 
7
7
  ### Report Bugs 🐛
8
8
 
9
- Found a bug? [Open an issue](https://git.example.com/user/pyroboreplay/issues) with:
9
+ Found a bug? [Open an issue](https://github.com/Mullassery/pyroboreplay/issues) with:
10
10
  - Clear title: "Bug: [component] description"
11
11
  - Steps to reproduce
12
12
  - Expected vs actual behavior
@@ -15,7 +15,7 @@ Found a bug? [Open an issue](https://git.example.com/user/pyroboreplay/issues) w
15
15
 
16
16
  ### Suggest Features 💡
17
17
 
18
- Have an idea? Start a [discussion](https://git.example.com/user/pyroboreplay/discussions) or [issue](https://git.example.com/user/pyroboreplay/issues) with:
18
+ Have an idea? Start a [discussion](https://github.com/Mullassery/pyroboreplay/discussions) or [issue](https://github.com/Mullassery/pyroboreplay/issues) with:
19
19
  - Use case: why would this be useful?
20
20
  - Proposed solution (if you have one)
21
21
  - Alternative approaches you've considered
@@ -27,7 +27,7 @@ Have an idea? Start a [discussion](https://git.example.com/user/pyroboreplay/dis
27
27
 
28
28
  ```bash
29
29
  # Clone repo
30
- git clone https://git.example.com/user/pyroboreplay.git
30
+ git clone https://github.com/Mullassery/pyroboreplay.git
31
31
  cd pyroboreplay
32
32
 
33
33
  # Install Rust (if needed)
@@ -166,23 +166,20 @@ None / Describe any perf implications
166
166
 
167
167
  ## Areas We're Looking For Help
168
168
 
169
- ### High Priority
170
- - **Performance:** Optimize large mission analysis (1M+ events)
171
- - **Storage:** Add PostgreSQL, BigQuery adapters
172
- - **Streaming:** Real-time event ingestion from live robots
173
- - **Testing:** Integration tests for complex scenarios
174
- - **Documentation:** Tutorials, blog posts, video demos
169
+ See [ROADMAP_HONEST.md](ROADMAP_HONEST.md) for the current, code-verified list of
170
+ what's built, what's partial, and what's missing. As of this writing, the
171
+ highest-leverage gap is CLI/Python exposure for Phases 12-20 (the analysis
172
+ logic already exists in the Rust core with unit tests; it just isn't wired up
173
+ to `src/cli/` or `src/pyroboreplay/__init__.py` yet). Note: Postgres, S3, and
174
+ BigQuery storage backends already exist with dedicated integration test
175
+ suites — that work is done, not needed.
175
176
 
176
- ### Medium Priority
177
- - **CLI:** New commands (e.g., `export-video`, `batch-analyze`)
178
- - **Visualization:** Web dashboard for fleet monitoring
179
- - **Analysis:** Failure prediction ML models
180
- - **Compliance:** Additional regulatory standards (e.g., ISO 13849-1)
177
+ ### Good First Issues
181
178
 
182
179
  ### Good First Issues
183
- - Look for [good-first-issue](https://git.example.com/user/pyroboreplay/labels/good-first-issue) label
180
+ - Look for [good-first-issue](https://github.com/Mullassery/pyroboreplay/labels/good-first-issue) label
184
181
  - Start with documentation or small bug fixes
185
- - Ask questions in [discussions](https://git.example.com/user/pyroboreplay/discussions) if stuck
182
+ - Ask questions in [discussions](https://github.com/Mullassery/pyroboreplay/discussions) if stuck
186
183
 
187
184
  ---
188
185
 
@@ -215,12 +212,12 @@ rust-gdb --args target/debug/my_binary
215
212
  # Create feature branch
216
213
  git checkout -b feat/my-feature
217
214
 
218
- # Keep updated with main
215
+ # Keep updated with master (the default branch)
219
216
  git fetch origin
220
- git rebase origin/main
217
+ git rebase origin/master
221
218
 
222
219
  # Before pushing, squash if needed
223
- git rebase -i origin/main
220
+ git rebase -i origin/master
224
221
 
225
222
  # Push and open PR
226
223
  git push origin feat/my-feature
@@ -233,31 +230,16 @@ Workflows run automatically on push/PR:
233
230
  - **security.yml**: Vulnerability scanning, coverage
234
231
  - **release.yml**: Auto-publish on version tags
235
232
 
236
- Check status in [Actions](https://git.example.com/user/pyroboreplay/actions).
233
+ Check status in [Actions](https://github.com/Mullassery/pyroboreplay/actions).
237
234
 
238
235
  ---
239
236
 
240
237
  ## Architecture & Design
241
238
 
242
- - **[CLAUDE.md](CLAUDE.md)** — Product vision, principles, long-term roadmap
239
+ - **[docs/CLAUDE.md](docs/CLAUDE.md)** — Product vision, principles
240
+ - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — System architecture
243
241
  - **[.github/CI_SETUP.md](.github/CI_SETUP.md)** — CI/CD architecture
244
- - **[Roadmap](#-roadmap)** below
245
-
246
- ### Roadmap
247
-
248
- **v0.9** (Q4 2026): AI-Driven Remediation
249
- - Automated fix suggestions
250
- - Reinforcement learning for strategy optimization
251
-
252
- **v1.0** (Q4 2026): Production Scale
253
- - Distributed analysis across multiple machines
254
- - Enterprise observability integrations
255
- - Advanced security audit trails
256
-
257
- **v1.1+** (2027): Autonomous Systems
258
- - Fleet coordination layer
259
- - Real-time mission optimization
260
- - Cross-mission knowledge graphs
242
+ - **[ROADMAP_HONEST.md](ROADMAP_HONEST.md)** — What's actually built, partial, or missing (no fabricated timelines)
261
243
 
262
244
  ---
263
245
 
@@ -274,9 +256,9 @@ Check status in [Actions](https://git.example.com/user/pyroboreplay/actions).
274
256
 
275
257
  ## Getting Help
276
258
 
277
- - **Questions?** Ask in [GitHub Discussions](https://git.example.com/user/pyroboreplay/discussions)
259
+ - **Questions?** Ask in [GitHub Discussions](https://github.com/Mullassery/pyroboreplay/discussions)
278
260
  - **Stuck?** Open an issue and label it `help-wanted`
279
- - **Chat?** Connect via GitHub issues/discussions (we respond within 24h)
261
+ - **Chat?** Connect via GitHub issues/discussions. This is currently maintained by one person in their spare time — there is no guaranteed response time.
280
262
 
281
263
  ---
282
264