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.
- pyroboreplay-2.10.1/.github/ISSUE_TEMPLATE/bug_report.yml +52 -0
- pyroboreplay-2.10.1/.github/ISSUE_TEMPLATE/feature_request.yml +34 -0
- pyroboreplay-2.10.1/.github/dependabot.yml +19 -0
- pyroboreplay-2.10.1/.github/pull_request_template.md +20 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/workflows/ci.yml +6 -6
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/workflows/docs.yml +2 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/workflows/release.yml +11 -15
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/workflows/security.yml +10 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.gitignore +5 -1
- pyroboreplay-2.10.1/.graphifyignore +31 -0
- pyroboreplay-2.10.1/CHANGELOG.md +150 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/CONTRIBUTING.md +22 -40
- pyroboreplay-2.10.1/Cargo.lock +5324 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/Cargo.toml +24 -9
- pyroboreplay-2.10.1/LICENSE +202 -0
- pyroboreplay-2.10.1/PKG-INFO +183 -0
- pyroboreplay-2.10.1/README.md +146 -0
- pyroboreplay-2.10.1/ROADMAP_HONEST.md +281 -0
- pyroboreplay-2.10.1/build.rs +27 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/GITHUB_SETTINGS.md +2 -2
- pyroboreplay-2.10.1/docs/IMPLEMENTATION_STATUS.md +229 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/QUICKSTART.md +2 -2
- pyroboreplay-2.7.0/docs/ROADMAP.md → pyroboreplay-2.10.1/docs/archive/OLD_docs_ROADMAP.md +16 -6
- pyroboreplay-2.10.1/docs/archive/README.md +26 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/camera_export_demo.rs +8 -6
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/causal_analysis_demo.rs +9 -11
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/causal_query_engine_demo.rs +17 -7
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/causal_visualization_demo.rs +28 -10
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/compliance_report_demo.rs +18 -16
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/correlation_analysis_demo.rs +33 -15
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/counterfactual_reasoning_demo.rs +36 -13
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/coverage_evolution_demo.rs +20 -20
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/deterministic_replay_demo.rs +13 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/diagnostic_report_demo.rs +60 -21
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/failover_demo.rs +95 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/fleet_monitor_demo.rs +26 -9
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/generate_warehouse_mission.rs +8 -9
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/imu_visualization_demo.rs +2 -3
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/keyboard_shortcuts_demo.rs +1 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/lidar_visualization_demo.rs +3 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/multi_robot_coordination_demo.rs +15 -8
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/pyterrain_bridge_demo.rs +42 -35
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/recommendation_engine_demo.rs +61 -22
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/root_cause_analysis_demo.rs +38 -13
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/sensor_metadata_demo.rs +10 -6
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/spatial_causality_demo.rs +43 -14
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/sqlite_backend_demo.rs +15 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/stats_dashboard_demo.rs +2 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/storage_backend_demo.rs +19 -7
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/streaming_demo.rs +4 -1
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/pyproject.toml +17 -7
- pyroboreplay-2.10.1/scripts/test_ollama_integration.sh +58 -0
- pyroboreplay-2.10.1/src/adapters/cdr.rs +272 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/adapters/configuration.rs +64 -40
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/adapters/linux_log.rs +25 -17
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/adapters/metrics.rs +32 -13
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/adapters/mod.rs +4 -3
- pyroboreplay-2.10.1/src/adapters/ros2.rs +383 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/adaptive_recalibration.rs +42 -33
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/aggregation.rs +14 -18
- pyroboreplay-2.10.1/src/analyzers/coordination/control_loop_stall.rs +174 -0
- pyroboreplay-2.10.1/src/analyzers/coordination/mod.rs +61 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/drift_detection.rs +30 -29
- pyroboreplay-2.10.1/src/analyzers/environmental/lighting_variability.rs +187 -0
- pyroboreplay-2.10.1/src/analyzers/environmental/mod.rs +58 -0
- pyroboreplay-2.10.1/src/analyzers/environmental/thermal_drift.rs +179 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/evidence_quality_scoring.rs +14 -14
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/feedback_loop.rs +4 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/fleet_learning.rs +39 -36
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/gap_narrative_pipeline.rs +28 -14
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/gap_to_causal.rs +82 -52
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/historical.rs +8 -13
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/incident_narrative.rs +42 -57
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/mod.rs +29 -26
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/multi_factor_causality.rs +21 -19
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/phase3_validation.rs +7 -12
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/phase4_integration.rs +18 -16
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/physical/mechanical_degradation.rs +20 -14
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/physical/structural_dynamics.rs +23 -8
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/physical/thermal_effects.rs +21 -13
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/predictive_gaps.rs +19 -15
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/quality_confidence.rs +22 -31
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/recalibration.rs +11 -17
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/robot_calibration.rs +37 -26
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/scoring.rs +10 -21
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/sensor/detection_robustness.rs +40 -38
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/sensor/optical_contamination.rs +12 -6
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/severity.rs +5 -12
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/severity_contracts.rs +18 -45
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/system/clock_drift.rs +12 -3
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/telemetry.rs +116 -22
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/test_data.rs +2 -3
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/validation.rs +35 -35
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/camera_export.rs +5 -10
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/causal_viz.rs +41 -42
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/consolidated_output.rs +17 -11
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/gap_analysis.rs +37 -15
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/imu_viz.rs +13 -33
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/json_output.rs +3 -8
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/keyboard.rs +10 -18
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/lidar_viz.rs +12 -10
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/mod.rs +28 -29
- pyroboreplay-2.10.1/src/cli/replay_ui.rs +664 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/sensor_stats.rs +22 -35
- pyroboreplay-2.10.1/src/cli/stats_dashboard.rs +682 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/tests_consolidation_integration.rs +10 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/anomaly_detector.rs +66 -53
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/causality.rs +94 -54
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/compliance.rs +21 -7
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/confidence_scoring.rs +30 -31
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/correlation.rs +20 -16
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/counterfactual.rs +21 -16
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/coverage_evolution.rs +11 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/cross_mission.rs +24 -6
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/deterministic_replay.rs +27 -9
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/event.rs +5 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/evidence_discovery.rs +74 -41
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/explanation.rs +10 -3
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_actions.rs +3 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/localization.rs +5 -6
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/middleware.rs +6 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/mod.rs +16 -9
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/navigation.rs +16 -6
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/perception.rs +0 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/failure_detection/system.rs +0 -1
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/geospatial_export.rs +15 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/incident_analysis.rs +54 -23
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/incident_bundle.rs +46 -10
- pyroboreplay-2.10.1/src/core/mod.rs +97 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/multi_robot.rs +27 -19
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/pyterrain_bridge.rs +12 -7
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/recommendation.rs +53 -15
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/recommendations_engine.rs +26 -14
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/root_cause.rs +40 -28
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/spatial_causality.rs +38 -30
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/timeline.rs +31 -22
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/timeline_correlation.rs +16 -8
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/forensic_reporter.rs +19 -34
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/invisible_person_detector.rs +1 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/mod.rs +7 -7
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/rgb_thermal_fusion.rs +26 -13
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/fusion/thermal_model.rs +10 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/agent_friendly_output.rs +1 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/event_extraction.rs +4 -1
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/hidden_explanations.rs +30 -36
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/mod.rs +8 -8
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/perception_gap_analysis.rs +22 -27
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/intelligence/scene_reconstruction.rs +51 -36
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/change_detection.rs +37 -22
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/fleet_terrain_learning.rs +2 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/knowledge_graph.rs +2 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/longitudinal_reasoning.rs +2 -9
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/mod.rs +20 -12
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/multi_mission_learning.rs +3 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/spatial_grounding.rs +37 -29
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/terrain_integration.rs +7 -10
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/world_model.rs +11 -10
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/lib.rs +53 -40
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/detection_backends.rs +9 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/detection_orchestrator.rs +45 -58
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/gap_context_analyzer.rs +10 -20
- pyroboreplay-2.10.1/src/perception/mod.rs +32 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/object_detection.rs +4 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/object_tracking.rs +11 -14
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/perception_analysis.rs +24 -12
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/retrospective_detection.rs +14 -15
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/perception/scene_understanding.rs +4 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/analyzer_capabilities.rs +33 -18
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/mod.rs +9 -18
- pyroboreplay-2.10.1/src/phase14/modality_adapters.rs +1976 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/navigation_session.rs +80 -31
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/temporal_sync.rs +32 -39
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase14/timeline_indexing.rs +39 -28
- pyroboreplay-2.10.1/src/phase14/video_processing.rs +830 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/costmap_analyzer.rs +10 -8
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/dynamic_obstacle_analyzer.rs +2 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/failure_detector.rs +13 -12
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/finding_generator.rs +9 -11
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/localization_analyzer.rs +38 -17
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/mod.rs +12 -11
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/nav2_limitation_detector.rs +11 -8
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/planner_analyzer.rs +30 -12
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/root_cause_generator.rs +1 -1
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase15/semantic_gap_analyzer.rs +1 -1
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/causal_builder.rs +74 -33
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/decision_reconstructor.rs +47 -20
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/graph_validator.rs +27 -9
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/mod.rs +8 -3
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase16/pattern_matcher.rs +17 -19
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase17/alternative_timeline.rs +24 -17
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase17/counterfactual.rs +59 -30
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase17/mod.rs +3 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase17/outcome_influence.rs +30 -29
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase18/decision_clustering.rs +22 -23
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase18/fleet_learning.rs +80 -43
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase18/mod.rs +4 -5
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase18/pattern_discovery.rs +28 -18
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase19/mod.rs +2 -3
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase19/temporal_patterns.rs +27 -14
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase19/trend_detector.rs +38 -36
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/phase19/window_analyzer.rs +20 -11
- pyroboreplay-2.10.1/src/phase20/counterfactual_scenarios.rs +307 -0
- pyroboreplay-2.10.1/src/phase20/decision_tree.rs +477 -0
- pyroboreplay-2.10.1/src/phase20/mod.rs +11 -0
- pyroboreplay-2.10.1/src/phase20/rule_extraction.rs +301 -0
- pyroboreplay-2.10.1/src/pyroboreplay/__init__.py +42 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/reasoning/explanation_generator.rs +13 -10
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/reasoning/incident_patterns.rs +9 -3
- pyroboreplay-2.10.1/src/reasoning/llm_integration.rs +535 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/reasoning/semantic_search.rs +10 -21
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/audit.rs +6 -10
- pyroboreplay-2.10.1/src/storage/backends.rs +1624 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/failover.rs +25 -15
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/inmemory.rs +16 -10
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/mod.rs +8 -6
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/sqlite.rs +68 -84
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/channel.rs +8 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/fleet_monitor.rs +24 -9
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/live_diagnostics.rs +7 -13
- pyroboreplay-2.10.1/src/streaming/mod.rs +19 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/processor.rs +12 -23
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/streaming/sla.rs +16 -6
- pyroboreplay-2.10.1/tests/fixtures/ros2_cdr_fixture.db3 +0 -0
- pyroboreplay-2.10.1/tests/fixtures/test.zip +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/integration_tests.rs +11 -10
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_actions.rs +39 -33
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_anomaly_detector.rs +20 -11
- pyroboreplay-2.10.1/tests/test_bigquery_backend_integration.rs +193 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_edge_cases.rs +52 -50
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_explanation.rs +35 -12
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_geospatial_export.rs +8 -9
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_mlrias_integration.rs +15 -10
- pyroboreplay-2.10.1/tests/test_ollama_integration.rs +89 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_performance.rs +13 -7
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_phase2_patterns.rs +69 -50
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_phase2_prediction.rs +38 -18
- pyroboreplay-2.10.1/tests/test_postgres_backend_integration.rs +175 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/tests/test_python_api_integration.rs +68 -41
- pyroboreplay-2.10.1/tests/test_ros2_cdr_decoding.rs +189 -0
- pyroboreplay-2.10.1/tests/test_s3_backend_integration.rs +199 -0
- pyroboreplay-2.10.1/tools/graphify/README.md +63 -0
- pyroboreplay-2.10.1/tools/graphify/graphify_adapter.py +242 -0
- pyroboreplay-2.7.0/Cargo.lock +0 -2557
- pyroboreplay-2.7.0/LICENSE +0 -32
- pyroboreplay-2.7.0/OTEL_SETUP_GUIDE.md +0 -319
- pyroboreplay-2.7.0/PKG-INFO +0 -441
- pyroboreplay-2.7.0/PRODUCTION_DEPLOYMENT.md +0 -512
- pyroboreplay-2.7.0/README.md +0 -403
- pyroboreplay-2.7.0/ROADMAP.md +0 -192
- pyroboreplay-2.7.0/docs/IMPLEMENTATION_STATUS.md +0 -383
- pyroboreplay-2.7.0/otel_exporter.py +0 -189
- pyroboreplay-2.7.0/pyroboreplay/scripts/__init__.py.bak +0 -0
- pyroboreplay-2.7.0/src/adapters/ros2.rs +0 -303
- pyroboreplay-2.7.0/src/analyzers/coordination/mod.rs +0 -33
- pyroboreplay-2.7.0/src/analyzers/environmental/mod.rs +0 -33
- pyroboreplay-2.7.0/src/cli/replay_ui.rs +0 -331
- pyroboreplay-2.7.0/src/cli/stats_dashboard.rs +0 -380
- pyroboreplay-2.7.0/src/core/mod.rs +0 -79
- pyroboreplay-2.7.0/src/perception/mod.rs +0 -22
- pyroboreplay-2.7.0/src/phase14/modality_adapters.rs +0 -701
- pyroboreplay-2.7.0/src/phase14/video_processing.rs +0 -387
- pyroboreplay-2.7.0/src/pyroboreplay/__init__.py +0 -44
- pyroboreplay-2.7.0/src/reasoning/llm_integration.rs +0 -327
- pyroboreplay-2.7.0/src/storage/backends.rs +0 -241
- pyroboreplay-2.7.0/src/streaming/mod.rs +0 -18
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.env.example +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.gitattributes +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/.github/CI_SETUP.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1}/CODE_OF_CONDUCT.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/SECURITY.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/API.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/ARCHITECTURE.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/CAMERA_EXPORT.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/CLAUDE.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/IMU_VISUALIZATION.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/KEYBOARD_SHORTCUTS.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/LIDAR_VISUALIZATION.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/docs/SENSOR_METADATA.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs}/STATS_DASHBOARD.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/ARCHITECTURE_COMPLETE.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/BUILD_SUMMARY.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/CAUSALITY_DECISION_ENGINE_VISION.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/CLI_STATS_DASHBOARD_FEATURE.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/FINAL_REPORT.txt +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/IMPLEMENTATION_SUMMARY.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/MLRIAS_ARCHITECTURE.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/MLRIAS_PHASES_COMPLETE.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/PHASE16_CAUSAL_GRAPHS_ROADMAP.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE1_COMPLETION_REPORT.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE1_IMPLEMENTATION.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE2_ADAPTER_STRATEGY.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE2_TESTING_COMPLETE.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE3_COMPLETE.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE3_PHASE4_ROADMAP.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PHASE4_COMPLETE.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PRODUCT_STRATEGY.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/PUBLISH.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/RELEASES.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/RELEASE_v2.0.0.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/REVISED_ROADMAP_PHASES_5_ONWARDS.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1/docs/archive}/STATS_DASHBOARD_QUICKSTART.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/TESTING_COMPLETE.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/TESTING_PLAN.md +0 -0
- {pyroboreplay-2.7.0/docs → pyroboreplay-2.10.1/docs/archive}/TESTING_STATUS.md +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/phase1_complete_diagnostics.py +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/examples/test_python_api.py +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/pyroboreplay/_mcp_connector.py +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/pyroboreplay/_mcp_tools.py +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/pyroboreplay.toml +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/scripts/test_dashboards_crossplatform.sh +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/physical/mod.rs +2 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/sensor/mod.rs +2 -2
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/analyzers/system/mod.rs +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/cli/args.rs +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/core/diagnostic_report.rs +1 -1
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/knowledge/temporal_analysis.rs +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/main.rs +0 -0
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/reasoning/mod.rs +4 -4
- {pyroboreplay-2.7.0 → pyroboreplay-2.10.1}/src/storage/backend.rs +0 -0
- {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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
105
|
+
uses: actions/setup-python@v5
|
|
106
106
|
with:
|
|
107
107
|
python-version: '3.11'
|
|
108
108
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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@
|
|
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:
|
|
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
|
-
|
|
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@
|
|
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://
|
|
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://
|
|
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://
|
|
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
|
-
|
|
170
|
-
|
|
171
|
-
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
###
|
|
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://
|
|
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://
|
|
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
|
|
215
|
+
# Keep updated with master (the default branch)
|
|
219
216
|
git fetch origin
|
|
220
|
-
git rebase origin/
|
|
217
|
+
git rebase origin/master
|
|
221
218
|
|
|
222
219
|
# Before pushing, squash if needed
|
|
223
|
-
git rebase -i origin/
|
|
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://
|
|
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
|
|
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
|
-
- **[
|
|
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://
|
|
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
|
|
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
|
|