pyroboreplay 0.2.0__tar.gz → 2.7.0__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 (281) hide show
  1. pyroboreplay-2.7.0/.env.example +27 -0
  2. pyroboreplay-2.7.0/.gitattributes +42 -0
  3. pyroboreplay-2.7.0/.github/CI_SETUP.md +223 -0
  4. pyroboreplay-2.7.0/.github/workflows/ci.yml +125 -0
  5. pyroboreplay-2.7.0/.github/workflows/docs.yml +37 -0
  6. pyroboreplay-2.7.0/.github/workflows/release.yml +74 -0
  7. pyroboreplay-2.7.0/.github/workflows/security.yml +64 -0
  8. pyroboreplay-2.7.0/.gitignore +43 -0
  9. pyroboreplay-2.7.0/CAUSALITY_DECISION_ENGINE_VISION.md +295 -0
  10. pyroboreplay-2.7.0/CLI_STATS_DASHBOARD_FEATURE.md +360 -0
  11. pyroboreplay-2.7.0/CONTRIBUTING.md +294 -0
  12. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/Cargo.lock +1088 -24
  13. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/Cargo.toml +20 -1
  14. pyroboreplay-2.7.0/FINAL_REPORT.txt +2 -0
  15. pyroboreplay-2.7.0/IMPLEMENTATION_SUMMARY.md +341 -0
  16. pyroboreplay-2.7.0/LICENSE +32 -0
  17. pyroboreplay-2.7.0/OTEL_SETUP_GUIDE.md +319 -0
  18. pyroboreplay-2.7.0/PHASE16_CAUSAL_GRAPHS_ROADMAP.md +572 -0
  19. pyroboreplay-2.7.0/PKG-INFO +441 -0
  20. pyroboreplay-2.7.0/PRODUCTION_DEPLOYMENT.md +512 -0
  21. pyroboreplay-2.7.0/README.md +403 -0
  22. pyroboreplay-2.7.0/ROADMAP.md +192 -0
  23. pyroboreplay-2.7.0/SECURITY.md +44 -0
  24. pyroboreplay-2.7.0/STATS_DASHBOARD.md +245 -0
  25. pyroboreplay-2.7.0/STATS_DASHBOARD_QUICKSTART.md +235 -0
  26. pyroboreplay-2.7.0/docs/ARCHITECTURE_COMPLETE.md +415 -0
  27. pyroboreplay-2.7.0/docs/BUILD_SUMMARY.md +366 -0
  28. pyroboreplay-2.7.0/docs/CODE_OF_CONDUCT.md +65 -0
  29. pyroboreplay-2.7.0/docs/GITHUB_SETTINGS.md +239 -0
  30. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0/docs}/IMPLEMENTATION_STATUS.md +40 -7
  31. pyroboreplay-2.7.0/docs/MLRIAS_ARCHITECTURE.md +539 -0
  32. pyroboreplay-2.7.0/docs/MLRIAS_PHASES_COMPLETE.md +346 -0
  33. pyroboreplay-2.7.0/docs/PHASE1_COMPLETION_REPORT.md +326 -0
  34. pyroboreplay-2.7.0/docs/PHASE1_IMPLEMENTATION.md +583 -0
  35. pyroboreplay-2.7.0/docs/PHASE2_ADAPTER_STRATEGY.md +293 -0
  36. pyroboreplay-2.7.0/docs/PHASE2_TESTING_COMPLETE.md +387 -0
  37. pyroboreplay-2.7.0/docs/PHASE3_COMPLETE.md +269 -0
  38. pyroboreplay-2.7.0/docs/PHASE3_PHASE4_ROADMAP.md +102 -0
  39. pyroboreplay-2.7.0/docs/PHASE4_COMPLETE.md +266 -0
  40. pyroboreplay-2.7.0/docs/PRODUCT_STRATEGY.md +1183 -0
  41. pyroboreplay-2.7.0/docs/PUBLISH.md +192 -0
  42. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/docs/QUICKSTART.md +2 -2
  43. pyroboreplay-2.7.0/docs/RELEASES.md +199 -0
  44. pyroboreplay-2.7.0/docs/RELEASE_v2.0.0.md +217 -0
  45. pyroboreplay-2.7.0/docs/REVISED_ROADMAP_PHASES_5_ONWARDS.md +712 -0
  46. pyroboreplay-2.7.0/docs/TESTING_COMPLETE.md +431 -0
  47. pyroboreplay-2.7.0/docs/TESTING_PLAN.md +1091 -0
  48. pyroboreplay-2.7.0/docs/TESTING_STATUS.md +319 -0
  49. pyroboreplay-2.7.0/examples/causal_analysis_demo.rs +238 -0
  50. pyroboreplay-2.7.0/examples/causal_query_engine_demo.rs +234 -0
  51. pyroboreplay-2.7.0/examples/causal_visualization_demo.rs +166 -0
  52. pyroboreplay-2.7.0/examples/compliance_report_demo.rs +184 -0
  53. pyroboreplay-2.7.0/examples/correlation_analysis_demo.rs +268 -0
  54. pyroboreplay-2.7.0/examples/counterfactual_reasoning_demo.rs +234 -0
  55. pyroboreplay-2.7.0/examples/coverage_evolution_demo.rs +199 -0
  56. pyroboreplay-2.7.0/examples/deterministic_replay_demo.rs +122 -0
  57. pyroboreplay-2.7.0/examples/diagnostic_report_demo.rs +163 -0
  58. pyroboreplay-2.7.0/examples/failover_demo.rs +110 -0
  59. pyroboreplay-2.7.0/examples/fleet_monitor_demo.rs +163 -0
  60. pyroboreplay-2.7.0/examples/multi_robot_coordination_demo.rs +263 -0
  61. pyroboreplay-2.7.0/examples/phase1_complete_diagnostics.py +218 -0
  62. pyroboreplay-2.7.0/examples/pyterrain_bridge_demo.rs +277 -0
  63. pyroboreplay-2.7.0/examples/recommendation_engine_demo.rs +165 -0
  64. pyroboreplay-2.7.0/examples/root_cause_analysis_demo.rs +186 -0
  65. pyroboreplay-2.7.0/examples/spatial_causality_demo.rs +131 -0
  66. pyroboreplay-2.7.0/examples/sqlite_backend_demo.rs +187 -0
  67. pyroboreplay-2.7.0/examples/stats_dashboard_demo.rs +101 -0
  68. pyroboreplay-2.7.0/examples/storage_backend_demo.rs +201 -0
  69. pyroboreplay-2.7.0/examples/streaming_demo.rs +207 -0
  70. pyroboreplay-2.7.0/otel_exporter.py +189 -0
  71. pyroboreplay-2.7.0/pyproject.toml +62 -0
  72. pyroboreplay-2.7.0/pyroboreplay/_mcp_connector.py +105 -0
  73. pyroboreplay-2.7.0/pyroboreplay/_mcp_tools.py +309 -0
  74. pyroboreplay-2.7.0/pyroboreplay/scripts/__init__.py.bak +0 -0
  75. pyroboreplay-2.7.0/pyroboreplay.toml +22 -0
  76. pyroboreplay-2.7.0/scripts/test_dashboards_crossplatform.sh +208 -0
  77. pyroboreplay-2.7.0/src/adapters/configuration.rs +298 -0
  78. pyroboreplay-2.7.0/src/adapters/linux_log.rs +403 -0
  79. pyroboreplay-2.7.0/src/adapters/metrics.rs +314 -0
  80. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/adapters/mod.rs +11 -0
  81. pyroboreplay-2.7.0/src/analyzers/adaptive_recalibration.rs +436 -0
  82. pyroboreplay-2.7.0/src/analyzers/aggregation.rs +265 -0
  83. pyroboreplay-2.7.0/src/analyzers/coordination/mod.rs +33 -0
  84. pyroboreplay-2.7.0/src/analyzers/drift_detection.rs +352 -0
  85. pyroboreplay-2.7.0/src/analyzers/environmental/mod.rs +33 -0
  86. pyroboreplay-2.7.0/src/analyzers/evidence_quality_scoring.rs +420 -0
  87. pyroboreplay-2.7.0/src/analyzers/feedback_loop.rs +370 -0
  88. pyroboreplay-2.7.0/src/analyzers/fleet_learning.rs +509 -0
  89. pyroboreplay-2.7.0/src/analyzers/gap_narrative_pipeline.rs +395 -0
  90. pyroboreplay-2.7.0/src/analyzers/gap_to_causal.rs +459 -0
  91. pyroboreplay-2.7.0/src/analyzers/historical.rs +337 -0
  92. pyroboreplay-2.7.0/src/analyzers/incident_narrative.rs +479 -0
  93. pyroboreplay-2.7.0/src/analyzers/mod.rs +407 -0
  94. pyroboreplay-2.7.0/src/analyzers/multi_factor_causality.rs +468 -0
  95. pyroboreplay-2.7.0/src/analyzers/phase3_validation.rs +329 -0
  96. pyroboreplay-2.7.0/src/analyzers/phase4_integration.rs +247 -0
  97. pyroboreplay-2.7.0/src/analyzers/physical/mechanical_degradation.rs +269 -0
  98. pyroboreplay-2.7.0/src/analyzers/physical/mod.rs +66 -0
  99. pyroboreplay-2.7.0/src/analyzers/physical/structural_dynamics.rs +132 -0
  100. pyroboreplay-2.7.0/src/analyzers/physical/thermal_effects.rs +146 -0
  101. pyroboreplay-2.7.0/src/analyzers/predictive_gaps.rs +441 -0
  102. pyroboreplay-2.7.0/src/analyzers/quality_confidence.rs +378 -0
  103. pyroboreplay-2.7.0/src/analyzers/recalibration.rs +365 -0
  104. pyroboreplay-2.7.0/src/analyzers/robot_calibration.rs +388 -0
  105. pyroboreplay-2.7.0/src/analyzers/scoring.rs +256 -0
  106. pyroboreplay-2.7.0/src/analyzers/sensor/detection_robustness.rs +466 -0
  107. pyroboreplay-2.7.0/src/analyzers/sensor/mod.rs +48 -0
  108. pyroboreplay-2.7.0/src/analyzers/sensor/optical_contamination.rs +243 -0
  109. pyroboreplay-2.7.0/src/analyzers/severity.rs +218 -0
  110. pyroboreplay-2.7.0/src/analyzers/severity_contracts.rs +423 -0
  111. pyroboreplay-2.7.0/src/analyzers/system/clock_drift.rs +265 -0
  112. pyroboreplay-2.7.0/src/analyzers/system/mod.rs +42 -0
  113. pyroboreplay-2.7.0/src/analyzers/telemetry.rs +342 -0
  114. pyroboreplay-2.7.0/src/analyzers/test_data.rs +456 -0
  115. pyroboreplay-2.7.0/src/analyzers/validation.rs +259 -0
  116. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/args.rs +21 -1
  117. pyroboreplay-2.7.0/src/cli/causal_viz.rs +370 -0
  118. pyroboreplay-2.7.0/src/cli/consolidated_output.rs +399 -0
  119. pyroboreplay-2.7.0/src/cli/gap_analysis.rs +356 -0
  120. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/mod.rs +83 -3
  121. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/sensor_stats.rs +9 -1
  122. pyroboreplay-2.7.0/src/cli/stats_dashboard.rs +380 -0
  123. pyroboreplay-2.7.0/src/cli/tests_consolidation_integration.rs +181 -0
  124. pyroboreplay-2.7.0/src/core/anomaly_detector.rs +488 -0
  125. pyroboreplay-2.7.0/src/core/causality.rs +710 -0
  126. pyroboreplay-2.7.0/src/core/compliance.rs +570 -0
  127. pyroboreplay-2.7.0/src/core/confidence_scoring.rs +326 -0
  128. pyroboreplay-2.7.0/src/core/correlation.rs +463 -0
  129. pyroboreplay-2.7.0/src/core/counterfactual.rs +521 -0
  130. pyroboreplay-2.7.0/src/core/coverage_evolution.rs +577 -0
  131. pyroboreplay-2.7.0/src/core/cross_mission.rs +486 -0
  132. pyroboreplay-2.7.0/src/core/deterministic_replay.rs +451 -0
  133. pyroboreplay-2.7.0/src/core/diagnostic_report.rs +451 -0
  134. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/core/event.rs +96 -1
  135. pyroboreplay-2.7.0/src/core/evidence_discovery.rs +284 -0
  136. pyroboreplay-2.7.0/src/core/explanation.rs +247 -0
  137. pyroboreplay-2.7.0/src/core/failure_actions.rs +391 -0
  138. pyroboreplay-2.7.0/src/core/failure_detection/localization.rs +190 -0
  139. pyroboreplay-2.7.0/src/core/failure_detection/middleware.rs +239 -0
  140. pyroboreplay-2.7.0/src/core/failure_detection/mod.rs +225 -0
  141. pyroboreplay-2.7.0/src/core/failure_detection/navigation.rs +294 -0
  142. pyroboreplay-2.7.0/src/core/failure_detection/perception.rs +203 -0
  143. pyroboreplay-2.7.0/src/core/failure_detection/system.rs +270 -0
  144. pyroboreplay-2.7.0/src/core/geospatial_export.rs +299 -0
  145. pyroboreplay-2.7.0/src/core/incident_analysis.rs +344 -0
  146. pyroboreplay-2.7.0/src/core/incident_bundle.rs +295 -0
  147. pyroboreplay-2.7.0/src/core/mod.rs +79 -0
  148. pyroboreplay-2.7.0/src/core/multi_robot.rs +524 -0
  149. pyroboreplay-2.7.0/src/core/pyterrain_bridge.rs +388 -0
  150. pyroboreplay-2.7.0/src/core/recommendation.rs +508 -0
  151. pyroboreplay-2.7.0/src/core/recommendations_engine.rs +541 -0
  152. pyroboreplay-2.7.0/src/core/root_cause.rs +449 -0
  153. pyroboreplay-2.7.0/src/core/spatial_causality.rs +376 -0
  154. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/core/timeline.rs +55 -11
  155. pyroboreplay-2.7.0/src/core/timeline_correlation.rs +456 -0
  156. pyroboreplay-2.7.0/src/fusion/forensic_reporter.rs +352 -0
  157. pyroboreplay-2.7.0/src/fusion/invisible_person_detector.rs +307 -0
  158. pyroboreplay-2.7.0/src/fusion/mod.rs +18 -0
  159. pyroboreplay-2.7.0/src/fusion/rgb_thermal_fusion.rs +378 -0
  160. pyroboreplay-2.7.0/src/fusion/thermal_model.rs +373 -0
  161. pyroboreplay-2.7.0/src/intelligence/agent_friendly_output.rs +58 -0
  162. pyroboreplay-2.7.0/src/intelligence/event_extraction.rs +72 -0
  163. pyroboreplay-2.7.0/src/intelligence/hidden_explanations.rs +374 -0
  164. pyroboreplay-2.7.0/src/intelligence/mod.rs +21 -0
  165. pyroboreplay-2.7.0/src/intelligence/perception_gap_analysis.rs +428 -0
  166. pyroboreplay-2.7.0/src/intelligence/scene_reconstruction.rs +485 -0
  167. pyroboreplay-2.7.0/src/knowledge/change_detection.rs +312 -0
  168. pyroboreplay-2.7.0/src/knowledge/fleet_terrain_learning.rs +438 -0
  169. pyroboreplay-2.7.0/src/knowledge/knowledge_graph.rs +76 -0
  170. pyroboreplay-2.7.0/src/knowledge/longitudinal_reasoning.rs +154 -0
  171. pyroboreplay-2.7.0/src/knowledge/mod.rs +34 -0
  172. pyroboreplay-2.7.0/src/knowledge/multi_mission_learning.rs +388 -0
  173. pyroboreplay-2.7.0/src/knowledge/spatial_grounding.rs +468 -0
  174. pyroboreplay-2.7.0/src/knowledge/temporal_analysis.rs +62 -0
  175. pyroboreplay-2.7.0/src/knowledge/terrain_integration.rs +481 -0
  176. pyroboreplay-2.7.0/src/knowledge/world_model.rs +479 -0
  177. pyroboreplay-2.7.0/src/lib.rs +763 -0
  178. pyroboreplay-2.7.0/src/perception/detection_backends.rs +403 -0
  179. pyroboreplay-2.7.0/src/perception/detection_orchestrator.rs +385 -0
  180. pyroboreplay-2.7.0/src/perception/gap_context_analyzer.rs +416 -0
  181. pyroboreplay-2.7.0/src/perception/mod.rs +22 -0
  182. pyroboreplay-2.7.0/src/perception/object_detection.rs +395 -0
  183. pyroboreplay-2.7.0/src/perception/object_tracking.rs +396 -0
  184. pyroboreplay-2.7.0/src/perception/perception_analysis.rs +352 -0
  185. pyroboreplay-2.7.0/src/perception/retrospective_detection.rs +550 -0
  186. pyroboreplay-2.7.0/src/perception/scene_understanding.rs +271 -0
  187. pyroboreplay-2.7.0/src/phase14/analyzer_capabilities.rs +423 -0
  188. pyroboreplay-2.7.0/src/phase14/mod.rs +53 -0
  189. pyroboreplay-2.7.0/src/phase14/modality_adapters.rs +701 -0
  190. pyroboreplay-2.7.0/src/phase14/navigation_session.rs +334 -0
  191. pyroboreplay-2.7.0/src/phase14/temporal_sync.rs +455 -0
  192. pyroboreplay-2.7.0/src/phase14/timeline_indexing.rs +504 -0
  193. pyroboreplay-2.7.0/src/phase14/video_processing.rs +387 -0
  194. pyroboreplay-2.7.0/src/phase15/costmap_analyzer.rs +97 -0
  195. pyroboreplay-2.7.0/src/phase15/dynamic_obstacle_analyzer.rs +49 -0
  196. pyroboreplay-2.7.0/src/phase15/failure_detector.rs +310 -0
  197. pyroboreplay-2.7.0/src/phase15/finding_generator.rs +69 -0
  198. pyroboreplay-2.7.0/src/phase15/localization_analyzer.rs +235 -0
  199. pyroboreplay-2.7.0/src/phase15/mod.rs +48 -0
  200. pyroboreplay-2.7.0/src/phase15/nav2_limitation_detector.rs +99 -0
  201. pyroboreplay-2.7.0/src/phase15/planner_analyzer.rs +242 -0
  202. pyroboreplay-2.7.0/src/phase15/root_cause_generator.rs +57 -0
  203. pyroboreplay-2.7.0/src/phase15/semantic_gap_analyzer.rs +39 -0
  204. pyroboreplay-2.7.0/src/phase16/causal_builder.rs +416 -0
  205. pyroboreplay-2.7.0/src/phase16/decision_reconstructor.rs +398 -0
  206. pyroboreplay-2.7.0/src/phase16/graph_validator.rs +239 -0
  207. pyroboreplay-2.7.0/src/phase16/mod.rs +14 -0
  208. pyroboreplay-2.7.0/src/phase16/pattern_matcher.rs +308 -0
  209. pyroboreplay-2.7.0/src/phase17/alternative_timeline.rs +261 -0
  210. pyroboreplay-2.7.0/src/phase17/counterfactual.rs +248 -0
  211. pyroboreplay-2.7.0/src/phase17/mod.rs +12 -0
  212. pyroboreplay-2.7.0/src/phase17/outcome_influence.rs +251 -0
  213. pyroboreplay-2.7.0/src/phase18/decision_clustering.rs +266 -0
  214. pyroboreplay-2.7.0/src/phase18/fleet_learning.rs +367 -0
  215. pyroboreplay-2.7.0/src/phase18/mod.rs +12 -0
  216. pyroboreplay-2.7.0/src/phase18/pattern_discovery.rs +236 -0
  217. pyroboreplay-2.7.0/src/phase19/mod.rs +14 -0
  218. pyroboreplay-2.7.0/src/phase19/temporal_patterns.rs +301 -0
  219. pyroboreplay-2.7.0/src/phase19/trend_detector.rs +309 -0
  220. pyroboreplay-2.7.0/src/phase19/window_analyzer.rs +290 -0
  221. pyroboreplay-2.7.0/src/pyroboreplay/__init__.py +44 -0
  222. pyroboreplay-2.7.0/src/reasoning/explanation_generator.rs +191 -0
  223. pyroboreplay-2.7.0/src/reasoning/incident_patterns.rs +213 -0
  224. pyroboreplay-2.7.0/src/reasoning/llm_integration.rs +327 -0
  225. pyroboreplay-2.7.0/src/reasoning/mod.rs +16 -0
  226. pyroboreplay-2.7.0/src/reasoning/semantic_search.rs +388 -0
  227. pyroboreplay-2.7.0/src/storage/audit.rs +239 -0
  228. pyroboreplay-2.7.0/src/storage/backend.rs +152 -0
  229. pyroboreplay-2.7.0/src/storage/backends.rs +241 -0
  230. pyroboreplay-2.7.0/src/storage/failover.rs +440 -0
  231. pyroboreplay-2.7.0/src/storage/inmemory.rs +294 -0
  232. pyroboreplay-2.7.0/src/storage/mod.rs +13 -0
  233. pyroboreplay-2.7.0/src/storage/sqlite.rs +573 -0
  234. pyroboreplay-2.7.0/src/streaming/channel.rs +323 -0
  235. pyroboreplay-2.7.0/src/streaming/fleet_monitor.rs +500 -0
  236. pyroboreplay-2.7.0/src/streaming/kafka_stub.rs +113 -0
  237. pyroboreplay-2.7.0/src/streaming/live_diagnostics.rs +435 -0
  238. pyroboreplay-2.7.0/src/streaming/mod.rs +18 -0
  239. pyroboreplay-2.7.0/src/streaming/processor.rs +365 -0
  240. pyroboreplay-2.7.0/src/streaming/sla.rs +492 -0
  241. pyroboreplay-2.7.0/tests/test_actions.rs +298 -0
  242. pyroboreplay-2.7.0/tests/test_anomaly_detector.rs +323 -0
  243. pyroboreplay-2.7.0/tests/test_edge_cases.rs +477 -0
  244. pyroboreplay-2.7.0/tests/test_explanation.rs +207 -0
  245. pyroboreplay-2.7.0/tests/test_geospatial_export.rs +305 -0
  246. pyroboreplay-2.7.0/tests/test_mlrias_integration.rs +358 -0
  247. pyroboreplay-2.7.0/tests/test_performance.rs +374 -0
  248. pyroboreplay-2.7.0/tests/test_phase2_patterns.rs +451 -0
  249. pyroboreplay-2.7.0/tests/test_phase2_prediction.rs +433 -0
  250. pyroboreplay-2.7.0/tests/test_python_api_integration.rs +414 -0
  251. pyroboreplay-0.2.0/.gitignore +0 -34
  252. pyroboreplay-0.2.0/PKG-INFO +0 -275
  253. pyroboreplay-0.2.0/README.md +0 -248
  254. pyroboreplay-0.2.0/pyproject.toml +0 -46
  255. pyroboreplay-0.2.0/src/core/mod.rs +0 -5
  256. pyroboreplay-0.2.0/src/lib.rs +0 -201
  257. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/docs/API.md +0 -0
  258. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/docs/ARCHITECTURE.md +0 -0
  259. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/docs/CAMERA_EXPORT.md +0 -0
  260. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0/docs}/CLAUDE.md +0 -0
  261. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/docs/IMU_VISUALIZATION.md +0 -0
  262. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/docs/KEYBOARD_SHORTCUTS.md +0 -0
  263. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/docs/LIDAR_VISUALIZATION.md +0 -0
  264. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0/docs}/ROADMAP.md +0 -0
  265. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/docs/SENSOR_METADATA.md +0 -0
  266. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/examples/camera_export_demo.rs +0 -0
  267. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/examples/generate_warehouse_mission.rs +0 -0
  268. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/examples/imu_visualization_demo.rs +0 -0
  269. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/examples/keyboard_shortcuts_demo.rs +0 -0
  270. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/examples/lidar_visualization_demo.rs +0 -0
  271. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/examples/sensor_metadata_demo.rs +0 -0
  272. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/examples/test_python_api.py +0 -0
  273. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/adapters/ros2.rs +0 -0
  274. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/camera_export.rs +0 -0
  275. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/imu_viz.rs +0 -0
  276. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/json_output.rs +0 -0
  277. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/keyboard.rs +0 -0
  278. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/lidar_viz.rs +0 -0
  279. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/cli/replay_ui.rs +0 -0
  280. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/src/main.rs +0 -0
  281. {pyroboreplay-0.2.0 → pyroboreplay-2.7.0}/tests/integration_tests.rs +0 -0
@@ -0,0 +1,27 @@
1
+ # API Configuration
2
+ API_KEY=your_api_key_here
3
+ API_SECRET=your_api_secret_here
4
+
5
+ # Database
6
+ DATABASE_URL=postgresql://user:password@localhost/database_name
7
+ DB_HOST=localhost
8
+ DB_PORT=5432
9
+ DB_USER=user
10
+ DB_PASSWORD=password
11
+ DB_NAME=database
12
+
13
+ # Security
14
+ SECRET_KEY=your_secret_key_here
15
+ ENCRYPTION_KEY=your_encryption_key_here
16
+
17
+ # Environment
18
+ ENVIRONMENT=development
19
+ DEBUG=False
20
+
21
+ # Logging
22
+ LOG_LEVEL=INFO
23
+ LOG_FILE=app.log
24
+
25
+ # Optional features
26
+ REDIS_URL=redis://localhost:6379
27
+ ELASTICSEARCH_URL=http://localhost:9200
@@ -0,0 +1,42 @@
1
+ # Aggressive language detection: mark everything non-Python as non-detectable
2
+
3
+ # Hide all C/C++ files
4
+ *.c linguist-detectable=false
5
+ *.h linguist-detectable=false
6
+ *.cpp linguist-detectable=false
7
+ *.cc linguist-detectable=false
8
+ *.cxx linguist-detectable=false
9
+ *.C linguist-detectable=false
10
+ *.c++ linguist-detectable=false
11
+
12
+ # Hide Rust
13
+ *.rs linguist-detectable=false
14
+
15
+ # Hide Pawn
16
+ *.pwn linguist-detectable=false
17
+ *.pawn linguist-detectable=false
18
+
19
+ # Hide Makefiles and build config
20
+ Makefile linguist-detectable=false
21
+ makefile linguist-detectable=false
22
+ *.make linguist-detectable=false
23
+
24
+ # Hide DTrace
25
+ *.d linguist-detectable=false
26
+
27
+ # Hide all build/generated artifacts
28
+ build/** linguist-detectable=false
29
+ dist/** linguist-detectable=false
30
+ target/** linguist-detectable=false
31
+ *.so linguist-detectable=false
32
+ *.pyd linguist-detectable=false
33
+ *.dylib linguist-detectable=false
34
+ *.dll linguist-detectable=false
35
+ *.a linguist-detectable=false
36
+ *.o linguist-detectable=false
37
+
38
+ # Force Python as the ONLY detectable language
39
+ *.py linguist-detectable=true
40
+ *.pyi linguist-detectable=true
41
+ pyproject.toml linguist-detectable=true
42
+ setup.py linguist-detectable=true
@@ -0,0 +1,223 @@
1
+ # GitHub Actions CI/CD Setup
2
+
3
+ ## Overview
4
+
5
+ Comprehensive CI/CD pipeline for PyRoboReplay with automated testing, linting, building, security audits, and PyPI publishing.
6
+
7
+ ## Workflows
8
+
9
+ ### 1. **ci.yml** - Main Continuous Integration
10
+
11
+ Runs on every push to `main`, `master`, `develop` and on all pull requests.
12
+
13
+ **Matrix Testing:**
14
+ - OS: Ubuntu, macOS
15
+ - Rust: stable, beta
16
+ - Python: 3.10, 3.11, 3.12, 3.13
17
+
18
+ **Jobs:**
19
+ - **Test Suite**: `cargo test --lib --verbose`
20
+ - Runs on Ubuntu + macOS with latest Rust
21
+ - Caches dependencies for faster runs
22
+ - ~2-3 min per matrix combination
23
+
24
+ - **Lint & Format**:
25
+ - `cargo fmt -- --check` (Rustfmt validation)
26
+ - `cargo clippy --all-targets --all-features -- -D warnings`
27
+ - Runs on Ubuntu with Rust stable
28
+ - Treats warnings as errors (strict quality gate)
29
+
30
+ - **Build Wheels**:
31
+ - Builds Python wheels using maturin
32
+ - Matrix: Ubuntu + macOS × Python 3.10-3.13
33
+ - Uploads wheels as GitHub artifacts for inspection
34
+ - Validates packaging works across platforms
35
+
36
+ - **Publish** (conditional):
37
+ - Only runs on tags matching `refs/tags/v*`
38
+ - Publishes all wheels to PyPI
39
+ - Requires `PYPI_TOKEN` secret configured in GitHub
40
+
41
+ ### 2. **security.yml** - Security & Vulnerability Auditing
42
+
43
+ Runs on every push, pull request, and weekly on schedule (Sunday 00:00 UTC).
44
+
45
+ **Jobs:**
46
+ - **Cargo Audit**:
47
+ - Checks for known security vulnerabilities in dependencies
48
+ - Uses official RustSec advisory database
49
+ - Fails if vulnerabilities found (unless whitelisted)
50
+
51
+ - **Dependency Check**:
52
+ - Identifies outdated/stale dependencies
53
+ - Runs `cargo outdated` for visibility
54
+ - Informational only (doesn't fail)
55
+
56
+ - **Code Coverage**:
57
+ - Generates code coverage reports using `cargo-tarpaulin`
58
+ - Uploads to Codecov for tracking
59
+ - Timeout: 5 minutes per test
60
+ - Excludes benchmark code
61
+
62
+ ### 3. **release.yml** - Automated Release Pipeline
63
+
64
+ Triggered automatically when pushing version tags matching pattern `v*` (e.g., `v0.7.0`).
65
+
66
+ **Jobs:**
67
+ - **Create GitHub Release**:
68
+ - Creates a draft release on GitHub with tag info
69
+ - Outputs upload URL for assets
70
+
71
+ - **Build & Publish**:
72
+ - Builds wheels for Python 3.10-3.13 on Ubuntu & macOS
73
+ - Uploads each wheel as release asset
74
+ - Automatically publishes to PyPI
75
+ - Skips duplicates if re-run
76
+
77
+ **Usage:**
78
+ ```bash
79
+ git tag v0.8.0
80
+ git push origin v0.8.0
81
+ # Workflow automatically runs, builds, and publishes
82
+ ```
83
+
84
+ ### 4. **docs.yml** - Documentation Validation
85
+
86
+ Runs on every push to main branches and all PRs.
87
+
88
+ **Jobs:**
89
+ - **Documentation Build**:
90
+ - Builds Rust documentation: `cargo doc --no-deps`
91
+ - Includes private items for complete API docs
92
+ - Validates all doc comments compile
93
+
94
+ - **README Validation**:
95
+ - Checks README.md and CLAUDE.md exist
96
+ - Runs markdownlint for markdown compliance
97
+ - Non-blocking (informational only)
98
+
99
+ ## GitHub Secrets Required
100
+
101
+ ### `PYPI_TOKEN` (Required for PyPI Publishing)
102
+
103
+ 1. Generate token at https://pypi.org/manage/account/tokens/
104
+ 2. Create token with scope: "Entire account"
105
+ 3. Copy token value
106
+ 4. In GitHub repo:
107
+ - Settings → Secrets and variables → Actions
108
+ - New repository secret
109
+ - Name: `PYPI_TOKEN`
110
+ - Value: `pypi-AgEI...` (your token)
111
+
112
+ **Note:** Token is automatically masked in logs.
113
+
114
+ ## Performance & Caching
115
+
116
+ **Cargo Caching Strategy:**
117
+ - Registry cache: `~/.cargo/registry`
118
+ - Index cache: `~/.cargo/git`
119
+ - Build cache: `target/` directory
120
+
121
+ Cache keys use `Cargo.lock` hash to invalidate when dependencies change.
122
+
123
+ **Build Times (approximate):**
124
+ - Clean build: 2-3 min (Ubuntu), 3-4 min (macOS)
125
+ - Cached build: 30-60 sec
126
+ - Full test suite: 1-2 min
127
+ - Linting: 1-2 min
128
+
129
+ ## Status Badges
130
+
131
+ Add to README.md:
132
+
133
+ ```markdown
134
+ ![CI Status](https://github.com/mullassery/pyroboreplay/actions/workflows/ci.yml/badge.svg)
135
+ ![Security Audit](https://github.com/mullassery/pyroboreplay/actions/workflows/security.yml/badge.svg)
136
+ ```
137
+
138
+ ## Workflow Status & Logs
139
+
140
+ View workflow runs:
141
+ - GitHub repo → Actions tab
142
+ - Click workflow name to see runs
143
+ - Click run to see detailed logs
144
+ - Failed jobs show error messages
145
+
146
+ ## Common Issues & Troubleshooting
147
+
148
+ ### Issue: "Clippy warnings treated as errors"
149
+ **Solution:** Fix warnings before pushing. Run locally:
150
+ ```bash
151
+ cargo clippy --all-targets --all-features -- -D warnings
152
+ ```
153
+
154
+ ### Issue: "Format check failed"
155
+ **Solution:** Auto-format code:
156
+ ```bash
157
+ cargo fmt
158
+ git add .
159
+ git commit -m "Format code"
160
+ ```
161
+
162
+ ### Issue: "Security vulnerability detected"
163
+ **Solution:** Update affected dependency:
164
+ ```bash
165
+ cargo update package-name
166
+ cargo test
167
+ git add Cargo.lock
168
+ git commit -m "Update vulnerable dependency"
169
+ ```
170
+
171
+ ### Issue: "PyPI publishing failed"
172
+ **Causes:**
173
+ - `PYPI_TOKEN` not configured in secrets
174
+ - Token expired or revoked
175
+ - Version already published (use `--skip-existing` flag)
176
+ - Package metadata invalid
177
+
178
+ **Debug:** Check workflow logs in Actions tab.
179
+
180
+ ## Extending Workflows
181
+
182
+ ### Add new test matrix:
183
+ Edit `ci.yml`, add OS/Rust version to matrix:
184
+ ```yaml
185
+ strategy:
186
+ matrix:
187
+ os: [ubuntu-latest, macos-latest, windows-latest]
188
+ rust: [stable, beta, nightly]
189
+ ```
190
+
191
+ ### Add custom lint rule:
192
+ ```yaml
193
+ - name: Custom Linter
194
+ run: |
195
+ cargo clippy --all-targets -- -W clippy::pedantic
196
+ ```
197
+
198
+ ### Deploy documentation:
199
+ Add step to release workflow to publish docs to GitHub Pages.
200
+
201
+ ## Best Practices
202
+
203
+ ✅ **DO:**
204
+ - Run `cargo test` and `cargo clippy` locally before pushing
205
+ - Test on macOS if targeting Apple Silicon
206
+ - Keep dependencies updated
207
+ - Review security audit results weekly
208
+ - Use meaningful commit messages
209
+
210
+ ❌ **DON'T:**
211
+ - Force-push to main (breaks workflow artifacts)
212
+ - Commit `Cargo.lock` changes carelessly (affects build reproducibility)
213
+ - Ignore security warnings
214
+ - Use `--skip-existing` to hide publishing errors
215
+ - Configure credentials in workflow files (use Secrets)
216
+
217
+ ## References
218
+
219
+ - [GitHub Actions Documentation](https://docs.github.com/en/actions)
220
+ - [Rust Toolchain GitHub Action](https://github.com/dtolnay/rust-toolchain)
221
+ - [Maturin Documentation](https://maturin.rs/)
222
+ - [PyPI Token Setup](https://pypi.org/help/#apitoken)
223
+ - [RustSec Advisory Database](https://rustsec.org/)
@@ -0,0 +1,125 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master, develop]
6
+ pull_request:
7
+ branches: [main, master, develop]
8
+
9
+ env:
10
+ CARGO_TERM_COLOR: always
11
+
12
+ jobs:
13
+ test:
14
+ name: Test Suite
15
+ runs-on: ${{ matrix.os }}
16
+ strategy:
17
+ matrix:
18
+ os: [ubuntu-latest, macos-latest]
19
+ rust: [stable, beta]
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+
23
+ - name: Install Rust
24
+ uses: dtolnay/rust-toolchain@master
25
+ with:
26
+ toolchain: ${{ matrix.rust }}
27
+
28
+ - name: Cache cargo registry
29
+ uses: actions/cache@v3
30
+ with:
31
+ path: ~/.cargo/registry
32
+ key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
33
+
34
+ - name: Cache cargo index
35
+ uses: actions/cache@v3
36
+ with:
37
+ path: ~/.cargo/git
38
+ key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }}
39
+
40
+ - name: Cache cargo build
41
+ uses: actions/cache@v3
42
+ with:
43
+ path: target
44
+ key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
45
+
46
+ - name: Run tests
47
+ run: cargo test --lib --verbose
48
+
49
+ lint:
50
+ name: Clippy & Format
51
+ runs-on: ubuntu-latest
52
+ steps:
53
+ - uses: actions/checkout@v4
54
+
55
+ - name: Install Rust
56
+ uses: dtolnay/rust-toolchain@stable
57
+ with:
58
+ components: rustfmt, clippy
59
+
60
+ - name: Check formatting
61
+ run: cargo fmt -- --check
62
+
63
+ - name: Run clippy
64
+ run: cargo clippy --all-targets --all-features -- -D warnings
65
+
66
+ build:
67
+ name: Build Wheel
68
+ runs-on: ${{ matrix.os }}
69
+ strategy:
70
+ matrix:
71
+ os: [ubuntu-latest, macos-latest]
72
+ python-version: ['3.10', '3.11', '3.12', '3.13']
73
+ steps:
74
+ - uses: actions/checkout@v4
75
+
76
+ - name: Set up Python
77
+ uses: actions/setup-python@v4
78
+ with:
79
+ python-version: ${{ matrix.python-version }}
80
+
81
+ - name: Install Rust
82
+ uses: dtolnay/rust-toolchain@stable
83
+
84
+ - name: Install maturin
85
+ run: pip install maturin
86
+
87
+ - name: Build wheel
88
+ run: maturin build --release
89
+
90
+ - name: Upload wheels
91
+ uses: actions/upload-artifact@v3
92
+ with:
93
+ name: wheels-${{ matrix.os }}-py${{ matrix.python-version }}
94
+ path: target/wheels/
95
+
96
+ publish:
97
+ name: Publish to PyPI
98
+ needs: [test, lint, build]
99
+ runs-on: ubuntu-latest
100
+ if: startsWith(github.ref, 'refs/tags/v')
101
+ steps:
102
+ - uses: actions/checkout@v4
103
+
104
+ - name: Set up Python
105
+ uses: actions/setup-python@v4
106
+ with:
107
+ python-version: '3.11'
108
+
109
+ - name: Install Rust
110
+ uses: dtolnay/rust-toolchain@stable
111
+
112
+ - name: Install dependencies
113
+ run: |
114
+ python -m pip install --upgrade pip
115
+ pip install maturin twine
116
+
117
+ - name: Build wheels
118
+ run: maturin build --release
119
+
120
+ - name: Publish to PyPI
121
+ env:
122
+ TWINE_USERNAME: __token__
123
+ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
124
+ run: |
125
+ twine upload target/wheels/* --skip-existing
@@ -0,0 +1,37 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master, develop]
6
+ pull_request:
7
+ branches: [main, master, develop]
8
+
9
+ jobs:
10
+ docs:
11
+ name: Build Documentation
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Install Rust
17
+ uses: dtolnay/rust-toolchain@stable
18
+
19
+ - name: Build docs
20
+ run: cargo doc --no-deps --document-private-items
21
+
22
+ - name: Check doc links
23
+ run: cargo doc --no-deps --document-private-items 2>&1 | grep -E "warning|error" || true
24
+
25
+ readme:
26
+ name: Validate README
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+
31
+ - name: Check README exists
32
+ run: test -f README.md && echo "README.md found"
33
+
34
+ - name: Validate markdown
35
+ run: |
36
+ pip install markdownlint-cli
37
+ markdownlint README.md CLAUDE.md || true
@@ -0,0 +1,74 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ env:
9
+ CARGO_TERM_COLOR: always
10
+
11
+ jobs:
12
+ create-release:
13
+ name: Create GitHub Release
14
+ runs-on: ubuntu-latest
15
+ outputs:
16
+ upload_url: ${{ steps.create_release.outputs.upload_url }}
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Create Release
21
+ id: create_release
22
+ uses: actions/create-release@v1
23
+ env:
24
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25
+ with:
26
+ tag_name: ${{ github.ref }}
27
+ release_name: Release ${{ github.ref }}
28
+ draft: false
29
+ prerelease: false
30
+
31
+ build-and-publish:
32
+ name: Build and Publish Wheel
33
+ needs: create-release
34
+ runs-on: ${{ matrix.os }}
35
+ strategy:
36
+ matrix:
37
+ os: [ubuntu-latest, macos-latest]
38
+ python-version: ['3.10', '3.11', '3.12', '3.13']
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+
42
+ - name: Set up Python
43
+ uses: actions/setup-python@v4
44
+ with:
45
+ python-version: ${{ matrix.python-version }}
46
+
47
+ - name: Install Rust
48
+ uses: dtolnay/rust-toolchain@stable
49
+
50
+ - name: Install maturin
51
+ run: pip install maturin
52
+
53
+ - name: Build wheel
54
+ run: maturin build --release
55
+
56
+ - name: Upload Release Asset
57
+ uses: actions/upload-release-asset@v1
58
+ env:
59
+ 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
+
66
+ - name: Install dependencies
67
+ run: pip install twine
68
+
69
+ - name: Publish to PyPI
70
+ env:
71
+ TWINE_USERNAME: __token__
72
+ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
73
+ run: |
74
+ twine upload target/wheels/pyroboreplay-*.whl --skip-existing
@@ -0,0 +1,64 @@
1
+ name: Security Audit
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master, develop]
6
+ pull_request:
7
+ branches: [main, master, develop]
8
+ schedule:
9
+ # Weekly security audit
10
+ - cron: '0 0 * * 0'
11
+
12
+ jobs:
13
+ audit:
14
+ name: Cargo Audit
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Install Rust
20
+ uses: dtolnay/rust-toolchain@stable
21
+
22
+ - name: Install cargo-audit
23
+ run: cargo install cargo-audit
24
+
25
+ - name: Run security audit
26
+ run: cargo audit
27
+
28
+ dependencies:
29
+ name: Check Outdated Dependencies
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+
34
+ - name: Install Rust
35
+ uses: dtolnay/rust-toolchain@stable
36
+
37
+ - name: Install cargo-outdated
38
+ run: cargo install cargo-outdated
39
+
40
+ - name: Check outdated dependencies
41
+ run: cargo outdated --format list
42
+
43
+ coverage:
44
+ name: Code Coverage
45
+ runs-on: ubuntu-latest
46
+ steps:
47
+ - uses: actions/checkout@v4
48
+
49
+ - name: Install Rust
50
+ uses: dtolnay/rust-toolchain@stable
51
+
52
+ - name: Install tarpaulin
53
+ run: cargo install cargo-tarpaulin
54
+
55
+ - name: Generate coverage
56
+ run: cargo tarpaulin --out Xml --exclude-files benches/* --timeout 600
57
+ continue-on-error: true
58
+
59
+ - name: Upload coverage to Codecov
60
+ uses: codecov/codecov-action@v3
61
+ with:
62
+ files: ./cobertura.xml
63
+ fail_ci_if_error: false
64
+ continue-on-error: true
@@ -0,0 +1,43 @@
1
+ # Sensitive files and credentials
2
+ .env
3
+ .env.local
4
+ .env.*.local
5
+ *.key
6
+ *.pem
7
+ *.crt
8
+ credentials.json
9
+ secrets.json
10
+ .credentials
11
+ config.local.*
12
+ .config.local
13
+ oauth_tokens.json
14
+
15
+ # IDE files
16
+ .vscode/
17
+ .idea/
18
+ *.swp
19
+ *~
20
+ .DS_Store
21
+
22
+ # Python
23
+ __pycache__/
24
+ *.py[cod]
25
+ *.egg-info/
26
+ dist/
27
+ build/
28
+ .pytest_cache/
29
+
30
+ # Virtual environments
31
+ venv/
32
+ env/
33
+ .venv
34
+
35
+ # Rust
36
+ target/
37
+ Cargo.lock
38
+
39
+ # Temp files
40
+ *.tmp
41
+ *.log
42
+ temp/
43
+ tmp/