diff --git a/docs/ci/runtime_intelligence_gitlab_artifacts.md b/docs/ci/runtime_intelligence_gitlab_artifacts.md index f40fe9e..0412652 100644 --- a/docs/ci/runtime_intelligence_gitlab_artifacts.md +++ b/docs/ci/runtime_intelligence_gitlab_artifacts.md @@ -142,9 +142,10 @@ The initial gate is conservative: the bundle gate verifies those requirements against the bundled `guard_analysis.evidence` type set - if the handoff declares `optional_aiguard_evidence_types`, the bundle gate - validates the known stale-drop labels (`stale_frame_risk` and - `edgeenv_orchestrator_stale_drop_summary`) as optional context that remains - separate from the required AIGuard evidence set + validates the known optional labels (`stale_frame_risk`, + `edgeenv_orchestrator_stale_drop_summary`, and + `edgeenv_orchestrator_pressure_window_summary`) as optional context that + remains separate from the required AIGuard evidence set - if the handoff declares `optional_aiguard_source_traceability`, the bundle gate validates the `read_only_optional_source_traceability` AIGuard source artifact path and reproduction command as read-only metadata, without making @@ -188,6 +189,7 @@ packaging runs. That marker set preserves `Runtime Intelligence Risk Summary`, `AIGuard scheduler fairness evidence`, `AIGuard worker health trend evidence`, `AIGuard policy pressure evidence`, +`AIGuard pressure window evidence`, `AIGuard runtime operation anomalies`, `AIGuard remote dispatch event summary`, `AIGuard remote event summary consistency`, @@ -275,9 +277,9 @@ marker enforcement to Lab's bundle/report gates. The same alignment artifact also preserves `optional_aiguard_evidence_types` as `read_only_optional_guard_context`. The CI artifact gate checks `aiguard_validates_optional_evidence_as_required=false`, -records which optional stale-drop evidence labels are absent from the bundled -guard artifact, and keeps those absences out of the required evidence failure -path. A companion +records which optional stale-drop and pressure-window evidence labels are +absent from the bundled guard artifact, and keeps those absences out of the +required evidence failure path. A companion `aiguard_edgeenv_handoff_alignment_optional_present.json/.md` fixture exercises the same optional labels when they are present, proving the gate can record `optional_guard_evidence_types_present` without promoting those labels to diff --git a/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md b/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md index bd29d69..086120e 100644 --- a/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md +++ b/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md @@ -148,10 +148,11 @@ This second smoke uses committed lightweight artifacts to represent the cross-re - `examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json` mirrors the EdgeEnv producer-side handoff manifest and its `lab_bundle_alignment` metadata, so Lab can verify EdgeEnv-produced file keys separately from external AIGuard evidence. - The same handoff declares `external_aiguard_required_evidence_types`; Lab's bundle gate checks that those types are present in the external `guard_analysis.evidence` list without making AIGuard the final decision owner. - If the handoff also declares `optional_aiguard_evidence_types`, Lab validates - the known optional stale-drop evidence labels (`stale_frame_risk` and - `edgeenv_orchestrator_stale_drop_summary`) as optional context only. Those - labels must remain separate from the required Guard evidence set and do not - become a Lab deployment-decision requirement. + the known optional evidence labels (`stale_frame_risk`, + `edgeenv_orchestrator_stale_drop_summary`, and + `edgeenv_orchestrator_pressure_window_summary`) as optional context only. + Those labels must remain separate from the required Guard evidence set and do + not become a Lab deployment-decision requirement. - If the handoff also declares `optional_aiguard_source_traceability`, Lab validates the `read_only_optional_source_traceability` source artifact path and AIGuard reproduction command as read-only metadata. This links the @@ -192,7 +193,7 @@ Expected Lab behavior: - The same gate requires EdgeEnv-preserved Orchestrator producer markers to carry `source_repository=InferEdgeOrchestrator`, `artifact_role=orchestrator-supplemental-operation-context`, and `producer_contract=inferedge-orchestrator-edgeenv-runtime-telemetry-feed-v1`. - When EdgeEnv preservation context is present, Lab renders `Lab EdgeEnv preservation context` with `lab_report_preservation_context_present=True`, `lab_preservation=present`, and `lab_context=present` so the Runtime Intelligence report gate and entrypoint evidence index use the same Lab-owned marker vocabulary. - When an EdgeEnv handoff manifest is provided, the bundle gate requires EdgeEnv-produced file keys, external AIGuard file keys, source repository mapping, artifact roles, producer contracts, and boundary flags to match Lab's Runtime Intelligence bundle contract. -- The same manifest gate requires `expected_report_markers` to preserve these exact Lab-owned report markers: `Runtime Intelligence Risk Summary`, `Runtime replay duration scope`, `Orchestrator operation feed context`, `EdgeEnv fixture matrix coverage`, `Reviewer operation quick scan`, `Orchestrator task event rollup`, `Lab EdgeEnv preservation context`, `AIGuard operation risk rollup evidence`, `AIGuard task event rollup evidence`, `AIGuard operation timeline evidence`, `AIGuard scheduler fairness evidence`, `AIGuard worker health trend evidence`, `AIGuard policy pressure evidence`, `AIGuard runtime operation anomalies`, `AIGuard remote dispatch event summary`, `AIGuard remote event summary consistency`, `Remote fallback starter evidence`, `lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback`, `AIGuard producer-lineage guard alignment`, and `Lab remains the final deployment decision owner.`. +- The same manifest gate requires `expected_report_markers` to preserve these exact Lab-owned report markers: `Runtime Intelligence Risk Summary`, `Runtime replay duration scope`, `Orchestrator operation feed context`, `EdgeEnv fixture matrix coverage`, `Reviewer operation quick scan`, `Orchestrator task event rollup`, `Lab EdgeEnv preservation context`, `AIGuard operation risk rollup evidence`, `AIGuard task event rollup evidence`, `AIGuard operation timeline evidence`, `AIGuard scheduler fairness evidence`, `AIGuard worker health trend evidence`, `AIGuard policy pressure evidence`, `AIGuard pressure window evidence`, `AIGuard runtime operation anomalies`, `AIGuard remote dispatch event summary`, `AIGuard remote event summary consistency`, `Remote fallback starter evidence`, `lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback`, `AIGuard producer-lineage guard alignment`, and `Lab remains the final deployment decision owner.`. - Reviewer navigation can trace Orchestrator curated samples through AIGuard evidence into Lab report rows: `agent_scheduler_delay_sample.json` -> `scheduler_delay_pattern` -> `Reviewer operation quick scan` / `Orchestrator queue/deadline/fallback markers`, and `remote_fallback_recovery_sample.json` -> `remote_execution_recovered_by_fallback` -> `Remote fallback starter evidence`. Lab does not treat those curated samples as benchmark outputs, production retry proof, or deployment policy inputs. - The external AIGuard artifact gate also requires `runtime_queue_overload` raw context to preserve diff --git a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.json b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.json index c6d6c7f..2cc20e0 100644 --- a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.json +++ b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.json @@ -6,10 +6,10 @@ "diagnosis_owner": "aiguard", "handoff_schema_version": "edgeenv.runtime-intelligence-lab-handoff.v1", "guard_analysis_schema_version": "inferedge-aiguard-diagnosis-v1", - "required_evidence_type_count": 10, - "optional_evidence_type_count": 2, - "guard_evidence_type_count": 11, - "lab_expected_report_marker_count": 19, + "required_evidence_type_count": 12, + "optional_evidence_type_count": 3, + "guard_evidence_type_count": 14, + "lab_expected_report_marker_count": 21, "lab_expected_report_markers": [ "Runtime Intelligence Risk Summary", "Runtime replay duration scope", @@ -22,7 +22,9 @@ "AIGuard task event rollup evidence", "AIGuard operation timeline evidence", "AIGuard scheduler fairness evidence", + "AIGuard worker health trend evidence", "AIGuard policy pressure evidence", + "AIGuard pressure window evidence", "AIGuard runtime operation anomalies", "AIGuard remote dispatch event summary", "AIGuard remote event summary consistency", @@ -51,11 +53,13 @@ "runtime_history_seed_run_config_traceability", "runtime_queue_overload", "runtime_thermal_instability", - "remote_execution_recovered_by_fallback" + "remote_execution_recovered_by_fallback", + "edgeenv_orchestrator_worker_health_trend" ], "optional_aiguard_evidence_types": [ "stale_frame_risk", - "edgeenv_orchestrator_stale_drop_summary" + "edgeenv_orchestrator_stale_drop_summary", + "edgeenv_orchestrator_pressure_window_summary" ], "guard_analysis_evidence_types": [ "runtime_telemetry_context_coverage", @@ -65,20 +69,25 @@ "edgeenv_orchestrator_task_event_rollup", "edgeenv_orchestrator_operation_timeline_summary", "edgeenv_orchestrator_scheduler_fairness_summary", + "edgeenv_orchestrator_worker_health_trend", "edgeenv_orchestrator_policy_pressure_summary", + "edgeenv_orchestrator_pressure_window_summary", "runtime_history_seed_run_config_traceability", "runtime_thermal_instability", "runtime_queue_overload", "remote_execution_recovered_by_fallback" ], "missing_required_evidence_types": [], - "optional_guard_evidence_types_present": [], + "optional_guard_evidence_types_present": [ + "edgeenv_orchestrator_pressure_window_summary" + ], "missing_optional_evidence_types": [ "edgeenv_orchestrator_stale_drop_summary", "stale_frame_risk" ], "supplemental_guard_evidence_types": [ - "edgeenv_orchestrator_operation_risk_summary" + "edgeenv_orchestrator_operation_risk_summary", + "edgeenv_orchestrator_pressure_window_summary" ], "invalid_required_evidence_types": [], "invalid_optional_evidence_types": [], @@ -99,13 +108,16 @@ "edgeenv-smoke-candidate", "edgeenv-smoke-missing" ], - "handoff_policy_pressure_summary_run_ids": [ + "guard_alignment_summary_errors": [], + "handoff_policy_pressure_summary_run_ids": [], + "guard_analysis_policy_pressure_summary_run_ids": [], + "policy_pressure_summary_errors": [], + "handoff_pressure_window_summary_run_ids": [ "edgeenv-smoke-candidate" ], - "guard_analysis_policy_pressure_summary_run_ids": [ + "guard_analysis_pressure_window_summary_run_ids": [ "edgeenv-smoke-candidate" ], - "policy_pressure_summary_errors": [], - "guard_alignment_summary_errors": [], + "pressure_window_summary_errors": [], "errors": [] } diff --git a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.md b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.md index 1754e8b..6f6f929 100644 --- a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.md +++ b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.md @@ -8,10 +8,10 @@ | recommendation | alignment_satisfied | | decision_owner | lab | | diagnosis_owner | aiguard | -| required_evidence_type_count | 10 | -| optional_evidence_type_count | 2 | -| guard_evidence_type_count | 11 | -| lab_expected_report_marker_count | 18 | +| required_evidence_type_count | 12 | +| optional_evidence_type_count | 3 | +| guard_evidence_type_count | 14 | +| lab_expected_report_marker_count | 21 | | lab_report_marker_owner | lab | | report_marker_context_role | lab_report_contract_context | | aiguard_validates_expected_report_markers | False | @@ -23,14 +23,14 @@ | Field | Values | | --- | --- | -| required_evidence_types | runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback | -| optional_aiguard_evidence_types | stale_frame_risk, edgeenv_orchestrator_stale_drop_summary | -| guard_analysis_evidence_types | runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_thermal_instability, runtime_queue_overload, remote_execution_recovered_by_fallback | +| required_evidence_types | runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback, edgeenv_orchestrator_worker_health_trend | +| optional_aiguard_evidence_types | stale_frame_risk, edgeenv_orchestrator_stale_drop_summary, edgeenv_orchestrator_pressure_window_summary | +| guard_analysis_evidence_types | runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_worker_health_trend, edgeenv_orchestrator_policy_pressure_summary, edgeenv_orchestrator_pressure_window_summary, runtime_history_seed_run_config_traceability, runtime_thermal_instability, runtime_queue_overload, remote_execution_recovered_by_fallback | | missing_required_evidence_types | [] | -| optional_guard_evidence_types_present | [] | +| optional_guard_evidence_types_present | edgeenv_orchestrator_pressure_window_summary | | missing_optional_evidence_types | edgeenv_orchestrator_stale_drop_summary, stale_frame_risk | -| supplemental_guard_evidence_types | edgeenv_orchestrator_operation_risk_summary | -| lab_expected_report_markers | Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard policy pressure evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner. | +| supplemental_guard_evidence_types | edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_pressure_window_summary | +| lab_expected_report_markers | Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard worker health trend evidence, AIGuard policy pressure evidence, AIGuard pressure window evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner. | | handoff_duration_sources | [] | | handoff_duration_scope_labels | [] | | errors | [] | @@ -43,22 +43,24 @@ InferEdgeAIGuard EdgeEnv handoff alignment summary - recommendation: alignment_satisfied - decision_owner: lab - diagnosis_owner: aiguard -- lab_expected_report_markers: [Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard policy pressure evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner.] +- lab_expected_report_markers: [Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard worker health trend evidence, AIGuard policy pressure evidence, AIGuard pressure window evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner.] - report_marker_context_role: lab_report_contract_context - aiguard_validates_expected_report_markers: False - optional_evidence_context_role: read_only_optional_guard_context - aiguard_validates_optional_evidence_as_required: False - handoff_duration_sources: [] - handoff_duration_scope_labels: [] -- required_evidence_types: [runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback] -- optional_aiguard_evidence_types: [stale_frame_risk, edgeenv_orchestrator_stale_drop_summary] -- guard_analysis_evidence_types: [runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_thermal_instability, runtime_queue_overload, remote_execution_recovered_by_fallback] +- required_evidence_types: [runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback, edgeenv_orchestrator_worker_health_trend] +- optional_aiguard_evidence_types: [stale_frame_risk, edgeenv_orchestrator_stale_drop_summary, edgeenv_orchestrator_pressure_window_summary] +- guard_analysis_evidence_types: [runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_worker_health_trend, edgeenv_orchestrator_policy_pressure_summary, edgeenv_orchestrator_pressure_window_summary, runtime_history_seed_run_config_traceability, runtime_thermal_instability, runtime_queue_overload, remote_execution_recovered_by_fallback] - missing_required_evidence_types: [] -- optional_guard_evidence_types_present: [] +- optional_guard_evidence_types_present: [edgeenv_orchestrator_pressure_window_summary] - missing_optional_evidence_types: [edgeenv_orchestrator_stale_drop_summary, stale_frame_risk] -- supplemental_guard_evidence_types: [edgeenv_orchestrator_operation_risk_summary] +- supplemental_guard_evidence_types: [edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_pressure_window_summary] - handoff_producer_lineage_guard_alignment_run_ids: [edgeenv-smoke-candidate, edgeenv-smoke-missing] - guard_analysis_producer_lineage_guard_alignment_run_ids: [edgeenv-smoke-candidate, edgeenv-smoke-missing] -- handoff_policy_pressure_summary_run_ids: [edgeenv-smoke-candidate] -- guard_analysis_policy_pressure_summary_run_ids: [edgeenv-smoke-candidate] +- handoff_policy_pressure_summary_run_ids: [] +- guard_analysis_policy_pressure_summary_run_ids: [] +- handoff_pressure_window_summary_run_ids: [edgeenv-smoke-candidate] +- guard_analysis_pressure_window_summary_run_ids: [edgeenv-smoke-candidate] ``` diff --git a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment_optional_present.json b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment_optional_present.json index 3064c06..b8f9104 100644 --- a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment_optional_present.json +++ b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment_optional_present.json @@ -6,10 +6,10 @@ "diagnosis_owner": "aiguard", "handoff_schema_version": "edgeenv.runtime-intelligence-lab-handoff.v1", "guard_analysis_schema_version": "inferedge-aiguard-diagnosis-v1", - "required_evidence_type_count": 10, - "optional_evidence_type_count": 2, - "guard_evidence_type_count": 13, - "lab_expected_report_marker_count": 19, + "required_evidence_type_count": 12, + "optional_evidence_type_count": 3, + "guard_evidence_type_count": 16, + "lab_expected_report_marker_count": 21, "lab_expected_report_markers": [ "Runtime Intelligence Risk Summary", "Runtime replay duration scope", @@ -22,7 +22,9 @@ "AIGuard task event rollup evidence", "AIGuard operation timeline evidence", "AIGuard scheduler fairness evidence", + "AIGuard worker health trend evidence", "AIGuard policy pressure evidence", + "AIGuard pressure window evidence", "AIGuard runtime operation anomalies", "AIGuard remote dispatch event summary", "AIGuard remote event summary consistency", @@ -51,11 +53,13 @@ "runtime_history_seed_run_config_traceability", "runtime_queue_overload", "runtime_thermal_instability", - "remote_execution_recovered_by_fallback" + "remote_execution_recovered_by_fallback", + "edgeenv_orchestrator_worker_health_trend" ], "optional_aiguard_evidence_types": [ "stale_frame_risk", - "edgeenv_orchestrator_stale_drop_summary" + "edgeenv_orchestrator_stale_drop_summary", + "edgeenv_orchestrator_pressure_window_summary" ], "guard_analysis_evidence_types": [ "runtime_telemetry_context_coverage", @@ -65,43 +69,26 @@ "edgeenv_orchestrator_task_event_rollup", "edgeenv_orchestrator_operation_timeline_summary", "edgeenv_orchestrator_scheduler_fairness_summary", + "edgeenv_orchestrator_worker_health_trend", "edgeenv_orchestrator_policy_pressure_summary", + "edgeenv_orchestrator_pressure_window_summary", "runtime_history_seed_run_config_traceability", "runtime_thermal_instability", "runtime_queue_overload", "remote_execution_recovered_by_fallback", - "stale_frame_risk", - "edgeenv_orchestrator_stale_drop_summary" + "edgeenv_orchestrator_stale_drop_summary", + "stale_frame_risk" ], "missing_required_evidence_types": [], "optional_guard_evidence_types_present": [ + "edgeenv_orchestrator_pressure_window_summary", "edgeenv_orchestrator_stale_drop_summary", "stale_frame_risk" ], "missing_optional_evidence_types": [], - "optional_present_source_artifact": { - "repository": "InferEdgeAIGuard", - "path": "examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json", - "schema_version": "inferedge-aiguard-diagnosis-v1", - "role": "aiguard-optional-stale-drop-full-evidence-source", - "context_role": "read_only_cross_repo_traceability", - "reproduction_command": [ - "python", - "-m", - "inferedge_aiguard.cli", - "build-runtime-intelligence-optional-stale-drop", - "--edgeenv-regression", - "examples/runtime_intelligence/edgeenv_runtime_regression_with_optional_stale_drop_context.json", - "--remote-dispatch", - "examples/runtime_intelligence/remote_dispatch_fallback_recovered_result.json", - "--orchestration-summary", - "examples/runtime_intelligence/orchestrator_multi_workload_sustained_summary.json", - "--save-json", - "examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json" - ] - }, "supplemental_guard_evidence_types": [ "edgeenv_orchestrator_operation_risk_summary", + "edgeenv_orchestrator_pressure_window_summary", "edgeenv_orchestrator_stale_drop_summary", "stale_frame_risk" ], @@ -124,13 +111,38 @@ "edgeenv-smoke-candidate", "edgeenv-smoke-missing" ], - "handoff_policy_pressure_summary_run_ids": [ + "guard_alignment_summary_errors": [], + "handoff_policy_pressure_summary_run_ids": [], + "guard_analysis_policy_pressure_summary_run_ids": [], + "policy_pressure_summary_errors": [], + "handoff_pressure_window_summary_run_ids": [ "edgeenv-smoke-candidate" ], - "guard_analysis_policy_pressure_summary_run_ids": [ + "guard_analysis_pressure_window_summary_run_ids": [ "edgeenv-smoke-candidate" ], - "policy_pressure_summary_errors": [], - "guard_alignment_summary_errors": [], - "errors": [] + "pressure_window_summary_errors": [], + "errors": [], + "optional_present_source_artifact": { + "repository": "InferEdgeAIGuard", + "path": "examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json", + "schema_version": "inferedge-aiguard-diagnosis-v1", + "role": "aiguard-optional-stale-drop-full-evidence-source", + "context_role": "read_only_cross_repo_traceability", + "reproduction_command": [ + "python", + "-m", + "inferedge_aiguard.cli", + "build-runtime-intelligence-optional-stale-drop", + "--edgeenv-regression", + "examples/runtime_intelligence/edgeenv_runtime_regression_with_optional_stale_drop_context.json", + "--remote-dispatch", + "examples/runtime_intelligence/remote_dispatch_fallback_recovered_result.json", + "--orchestration-summary", + "examples/runtime_intelligence/orchestrator_multi_workload_sustained_summary.json", + "--save-json", + "examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json" + ] + }, + "optional_present_reproduction_command": "python -m inferedge_aiguard.cli build-runtime-intelligence-optional-stale-drop --edgeenv-regression examples/runtime_intelligence/edgeenv_runtime_regression_with_optional_stale_drop_context.json --remote-dispatch examples/runtime_intelligence/remote_dispatch_fallback_recovered_result.json --orchestration-summary examples/runtime_intelligence/orchestrator_multi_workload_sustained_summary.json --save-json examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json" } diff --git a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment_optional_present.md b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment_optional_present.md index ffe8282..71c0644 100644 --- a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment_optional_present.md +++ b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment_optional_present.md @@ -8,10 +8,10 @@ | recommendation | alignment_satisfied | | decision_owner | lab | | diagnosis_owner | aiguard | -| required_evidence_type_count | 10 | -| optional_evidence_type_count | 2 | -| guard_evidence_type_count | 13 | -| lab_expected_report_marker_count | 18 | +| required_evidence_type_count | 12 | +| optional_evidence_type_count | 3 | +| guard_evidence_type_count | 16 | +| lab_expected_report_marker_count | 21 | | lab_report_marker_owner | lab | | report_marker_context_role | lab_report_contract_context | | aiguard_validates_expected_report_markers | False | @@ -23,16 +23,16 @@ | Field | Values | | --- | --- | -| required_evidence_types | runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback | -| optional_aiguard_evidence_types | stale_frame_risk, edgeenv_orchestrator_stale_drop_summary | -| guard_analysis_evidence_types | runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_thermal_instability, runtime_queue_overload, remote_execution_recovered_by_fallback, stale_frame_risk, edgeenv_orchestrator_stale_drop_summary | +| required_evidence_types | runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback, edgeenv_orchestrator_worker_health_trend | +| optional_aiguard_evidence_types | stale_frame_risk, edgeenv_orchestrator_stale_drop_summary, edgeenv_orchestrator_pressure_window_summary | +| guard_analysis_evidence_types | runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_worker_health_trend, edgeenv_orchestrator_policy_pressure_summary, edgeenv_orchestrator_pressure_window_summary, runtime_history_seed_run_config_traceability, runtime_thermal_instability, runtime_queue_overload, remote_execution_recovered_by_fallback, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk | | missing_required_evidence_types | [] | -| optional_guard_evidence_types_present | edgeenv_orchestrator_stale_drop_summary, stale_frame_risk | +| optional_guard_evidence_types_present | edgeenv_orchestrator_pressure_window_summary, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk | | missing_optional_evidence_types | [] | | optional_present_source_artifact | InferEdgeAIGuard/examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json | | optional_present_reproduction_command | python -m inferedge_aiguard.cli build-runtime-intelligence-optional-stale-drop --edgeenv-regression examples/runtime_intelligence/edgeenv_runtime_regression_with_optional_stale_drop_context.json --remote-dispatch examples/runtime_intelligence/remote_dispatch_fallback_recovered_result.json --orchestration-summary examples/runtime_intelligence/orchestrator_multi_workload_sustained_summary.json --save-json examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json | -| supplemental_guard_evidence_types | edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk | -| lab_expected_report_markers | Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard policy pressure evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner. | +| supplemental_guard_evidence_types | edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_pressure_window_summary, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk | +| lab_expected_report_markers | Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard worker health trend evidence, AIGuard policy pressure evidence, AIGuard pressure window evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner. | | handoff_duration_sources | [] | | handoff_duration_scope_labels | [] | | errors | [] | @@ -45,24 +45,26 @@ InferEdgeAIGuard EdgeEnv handoff alignment summary - recommendation: alignment_satisfied - decision_owner: lab - diagnosis_owner: aiguard -- lab_expected_report_markers: [Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard policy pressure evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner.] +- lab_expected_report_markers: [Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard worker health trend evidence, AIGuard policy pressure evidence, AIGuard pressure window evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner.] - report_marker_context_role: lab_report_contract_context - aiguard_validates_expected_report_markers: False - optional_evidence_context_role: read_only_optional_guard_context - aiguard_validates_optional_evidence_as_required: False -- handoff_duration_sources: [] -- handoff_duration_scope_labels: [] -- required_evidence_types: [runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback] -- optional_aiguard_evidence_types: [stale_frame_risk, edgeenv_orchestrator_stale_drop_summary] -- guard_analysis_evidence_types: [runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_thermal_instability, runtime_queue_overload, remote_execution_recovered_by_fallback, stale_frame_risk, edgeenv_orchestrator_stale_drop_summary] -- missing_required_evidence_types: [] -- optional_guard_evidence_types_present: [edgeenv_orchestrator_stale_drop_summary, stale_frame_risk] +- handoff_duration_sources: [[]] +- handoff_duration_scope_labels: [[]] +- required_evidence_types: [runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_policy_pressure_summary, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback, edgeenv_orchestrator_worker_health_trend] +- optional_aiguard_evidence_types: [stale_frame_risk, edgeenv_orchestrator_stale_drop_summary, edgeenv_orchestrator_pressure_window_summary] +- guard_analysis_evidence_types: [runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_operation_risk_rollup, edgeenv_orchestrator_task_event_rollup, edgeenv_orchestrator_operation_timeline_summary, edgeenv_orchestrator_scheduler_fairness_summary, edgeenv_orchestrator_worker_health_trend, edgeenv_orchestrator_policy_pressure_summary, edgeenv_orchestrator_pressure_window_summary, runtime_history_seed_run_config_traceability, runtime_thermal_instability, runtime_queue_overload, remote_execution_recovered_by_fallback, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk] +- missing_required_evidence_types: [[]] +- optional_guard_evidence_types_present: [edgeenv_orchestrator_pressure_window_summary, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk] - missing_optional_evidence_types: [] - optional_present_source_artifact: InferEdgeAIGuard/examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json - optional_present_reproduction_command: python -m inferedge_aiguard.cli build-runtime-intelligence-optional-stale-drop --edgeenv-regression examples/runtime_intelligence/edgeenv_runtime_regression_with_optional_stale_drop_context.json --remote-dispatch examples/runtime_intelligence/remote_dispatch_fallback_recovered_result.json --orchestration-summary examples/runtime_intelligence/orchestrator_multi_workload_sustained_summary.json --save-json examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json -- supplemental_guard_evidence_types: [edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk] +- supplemental_guard_evidence_types: [edgeenv_orchestrator_operation_risk_summary, edgeenv_orchestrator_pressure_window_summary, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk] - handoff_producer_lineage_guard_alignment_run_ids: [edgeenv-smoke-candidate, edgeenv-smoke-missing] - guard_analysis_producer_lineage_guard_alignment_run_ids: [edgeenv-smoke-candidate, edgeenv-smoke-missing] -- handoff_policy_pressure_summary_run_ids: [edgeenv-smoke-candidate] -- guard_analysis_policy_pressure_summary_run_ids: [edgeenv-smoke-candidate] +- handoff_policy_pressure_summary_run_ids: [] +- guard_analysis_policy_pressure_summary_run_ids: [] +- handoff_pressure_window_summary_run_ids: [edgeenv-smoke-candidate] +- guard_analysis_pressure_window_summary_run_ids: [edgeenv-smoke-candidate] ``` diff --git a/examples/runtime_intelligence_chain/aiguard_runtime_operation_guard_analysis.json b/examples/runtime_intelligence_chain/aiguard_runtime_operation_guard_analysis.json index a689379..192bd13 100644 --- a/examples/runtime_intelligence_chain/aiguard_runtime_operation_guard_analysis.json +++ b/examples/runtime_intelligence_chain/aiguard_runtime_operation_guard_analysis.json @@ -2857,6 +2857,1076 @@ } } }, + { + "type": "edgeenv_orchestrator_pressure_window_summary", + "metric_name": "orchestrator_pressure_window_count", + "observed_value": 1, + "baseline_value": 0, + "threshold": 1, + "delta": null, + "delta_pct": null, + "increase_factor": null, + "severity": "medium", + "status": "warning", + "explanation": "EdgeEnv preserved Orchestrator pressure_window summary with 1 sustained overload window(s).", + "why_it_matters": "The preserved pressure-window summary identifies when backlog pressure crossed the overload threshold and which workloads were limited, protected, or sent to fallback, while Lab remains the final deployment decision owner.", + "suspected_causes": [ + "sustained_pressure_window_context", + "queue_pressure_context", + "policy_pressure_context", + "workload_limited_by_policy", + "fallback_policy_context" + ], + "recommendation": "Review pressure_window in Lab alongside operation_timeline_summary, policy_pressure, stale_drop, and worker_health_trend before treating the operation profile as stable.", + "raw_context": { + "edgeenv_regression": { + "baseline_run_id": "edgeenv-smoke-baseline", + "candidate_run_id": "edgeenv-smoke-candidate", + "comparable": true, + "mode": "same-condition", + "regression_detected": false, + "regression_type": "operation-context", + "severity": "medium", + "recommendation": "review_required", + "mean_delta_pct": null, + "p95_delta_pct": null, + "p99_delta_pct": null, + "fps_delta_pct": null, + "memory_peak_delta_pct": null, + "triggered_thresholds": [], + "runtime_telemetry_context_present": true, + "runtime_telemetry_source": "result_artifacts+runtime_telemetry_history", + "runtime_telemetry_history_schema_version": "edgeenv.runtime-telemetry-history.v1", + "history_orchestrator_feed_runs": 1.0, + "history_registered_runs": 2.0, + "history_telemetry_runs": 2.0, + "history_telemetry_seed_runs": 2.0, + "history_telemetry_seed_run_config_runs": 2.0, + "baseline_runtime_telemetry_history_seed_schema_version": "inferedge-runtime-telemetry-history-seed-v1", + "candidate_runtime_telemetry_history_seed_schema_version": "inferedge-runtime-telemetry-history-seed-v1", + "baseline_runtime_telemetry_history_seed_registry_owner": "edgeenv", + "candidate_runtime_telemetry_history_seed_registry_owner": "edgeenv", + "baseline_runtime_telemetry_history_seed_decision_owner": "lab", + "candidate_runtime_telemetry_history_seed_decision_owner": "lab", + "candidate_runtime_telemetry_history_seed_production_monitoring": false, + "candidate_runtime_telemetry_history_seed_missing_telemetry_is_failure": false, + "candidate_runtime_telemetry_history_seed_point_count": 1.0, + "runtime_telemetry_history_seed_run_config_marker_fields": [ + "input_mode", + "input_preprocess", + "power_mode", + "jetson_clocks", + "warmup", + "runs" + ], + "runtime_telemetry_history_seed_run_config_marker_labels": [ + "baseline/candidate=shape=1x640x640, input_mode=dummy, input_preprocess=none, power_mode=unknown, jetson_clocks=unknown, warmup=1, runs=10" + ], + "baseline_runtime_telemetry_history_seed_run_config": { + "batch": 1, + "height": 640, + "width": 640, + "warmup": 1, + "runs": 10, + "timeout_ms": null, + "input_mode": "dummy", + "input_preprocess": "none", + "power_mode": "unknown", + "jetson_clocks": "unknown" + }, + "baseline_runtime_telemetry_history_seed_run_config_markers": { + "shape": "1x640x640", + "input_mode": "dummy", + "input_preprocess": "none", + "power_mode": "unknown", + "jetson_clocks": "unknown", + "warmup": 1, + "runs": 10 + }, + "candidate_runtime_telemetry_history_seed_run_config": { + "batch": 1, + "height": 640, + "width": 640, + "warmup": 1, + "runs": 10, + "timeout_ms": null, + "input_mode": "dummy", + "input_preprocess": "none", + "power_mode": "unknown", + "jetson_clocks": "unknown" + }, + "candidate_runtime_telemetry_history_seed_run_config_markers": { + "shape": "1x640x640", + "input_mode": "dummy", + "input_preprocess": "none", + "power_mode": "unknown", + "jetson_clocks": "unknown", + "warmup": 1, + "runs": 10 + }, + "candidate_runtime_telemetry_history_seed_run_config_present": true, + "history_missing_telemetry_runs": 0.0, + "history_missing_orchestrator_context_count": 0.0, + "history_missing_orchestrator_context_run_ids": [], + "history_missing_orchestrator_contexts": [], + "history_missing_orchestrator_source_repository": null, + "history_missing_orchestrator_artifact_role": null, + "history_missing_orchestrator_producer_contract": null, + "history_missing_orchestrator_candidate_context_telemetry_source": null, + "history_missing_orchestrator_candidate_context_producer": {}, + "history_missing_orchestrator_candidate_producer_sources": [], + "history_missing_orchestrator_candidate_device_local_producer_sources": [], + "history_missing_orchestrator_candidate_producer_sources_by_task": {}, + "history_missing_orchestrator_candidate_producer_stage_by_task": {}, + "history_missing_orchestrator_candidate_producer_event_count": null, + "history_missing_orchestrator_candidate_device_local_event_count": null, + "history_missing_orchestrator_candidate_device_local_task_count": null, + "history_missing_orchestrator_candidate_operation_context_role": null, + "history_missing_orchestrator_remote_runtime_event_summary": {}, + "history_missing_orchestrator_remote_runtime_event_summary_present": false, + "history_missing_orchestrator_remote_runtime_event_summary_evidence_role": null, + "history_missing_orchestrator_remote_runtime_event_summary_operation_boundary": null, + "history_missing_orchestrator_remote_runtime_event_summary_production_remote_execution": null, + "history_missing_orchestrator_operation_risk_summary": {}, + "history_missing_orchestrator_operation_risk_summary_present": false, + "history_missing_orchestrator_operation_risk_summary_evidence_role": null, + "history_missing_orchestrator_operation_risk_summary_decision_owner": null, + "history_missing_orchestrator_operation_risk_summary_scheduler_owner": null, + "history_missing_orchestrator_operation_risk_summary_not_a_deployment_decision": null, + "history_missing_orchestrator_edgeenv_mapping_hint": {}, + "history_missing_orchestrator_mapping_hint_aiguard_evidence_candidates": [], + "history_missing_orchestrator_downstream_guard_alignment": {}, + "history_missing_orchestrator_guard_alignment_declared_by": null, + "history_missing_orchestrator_guard_alignment_producer_lineage_evidence_type": null, + "history_missing_orchestrator_guard_alignment_operation_evidence_candidates": [], + "history_missing_orchestrator_guard_alignment_orchestrator_is_final_decision_owner": null, + "history_missing_orchestrator_guard_alignment_lab_is_final_decision_owner": null, + "telemetry_coverage_source": "history_telemetry_coverage", + "history_telemetry_coverage_missing_field_run_count": 1.0, + "history_telemetry_coverage_missing_field_runs": [ + { + "run_id": "edgeenv-smoke-candidate", + "missing_fields": [ + "queue_depth" + ], + "missing_field_count": 1, + "missing_telemetry_is_failure": false + } + ], + "history_telemetry_coverage_run_summaries_present": true, + "baseline_telemetry_present": true, + "candidate_telemetry_present": true, + "baseline_history_entry_present": true, + "candidate_history_entry_present": true, + "baseline_telemetry_coverage_ratio": 1.0, + "candidate_telemetry_coverage_ratio": 0.666667, + "baseline_telemetry_coverage_missing_fields": [], + "candidate_telemetry_coverage_missing_fields": [ + "queue_depth" + ], + "telemetry_coverage_missing_field_count": 1.0, + "baseline_missing_telemetry_is_failure": false, + "candidate_missing_telemetry_is_failure": false, + "baseline_execution_sequence_id": 1.0, + "candidate_execution_sequence_id": 2.0, + "execution_sequence_order_valid": true, + "baseline_orchestrator_context_present": false, + "candidate_orchestrator_context_present": true, + "orchestrator_source_repository": "InferEdgeOrchestrator", + "orchestrator_artifact_role": "orchestrator-supplemental-operation-context", + "orchestrator_producer_contract": "inferedge-orchestrator-edgeenv-runtime-telemetry-feed-v1", + "orchestrator_candidate_context_telemetry_source": "inferedge_orchestrator_operation_summary", + "orchestrator_candidate_context_producer": { + "operation_context_role": "supplemental", + "producer_sources": [ + "device_local_cli_override", + "orchestration_summary" + ], + "device_local_producer_sources": [ + "device_local_cli_override" + ], + "producer_sources_by_task": { + "vision_agent": [ + "device_local_cli_override" + ] + }, + "producer_stage_by_task": { + "vision_agent": "device_local_starter" + }, + "producer_event_count": 4, + "device_local_event_count": 2, + "device_local_task_count": 1 + }, + "orchestrator_candidate_producer_sources": [ + "device_local_cli_override", + "orchestration_summary" + ], + "orchestrator_candidate_device_local_producer_sources": [ + "device_local_cli_override" + ], + "orchestrator_candidate_producer_sources_by_task": { + "vision_agent": [ + "device_local_cli_override" + ] + }, + "orchestrator_candidate_producer_stage_by_task": { + "vision_agent": "device_local_starter" + }, + "orchestrator_candidate_producer_event_count": 4.0, + "orchestrator_candidate_device_local_event_count": 2.0, + "orchestrator_candidate_device_local_task_count": 1.0, + "orchestrator_candidate_operation_context_role": "supplemental", + "orchestrator_remote_runtime_event_summary": { + "event_count": 4, + "runtime_event_count": 4, + "production_remote_execution": false, + "evidence_role": "remote_dispatch_runtime_event_compact_summary", + "operation_boundary": "remote dispatch starter evidence only" + }, + "orchestrator_remote_runtime_event_summary_present": true, + "orchestrator_remote_runtime_event_summary_evidence_role": "remote_dispatch_runtime_event_compact_summary", + "orchestrator_remote_runtime_event_summary_operation_boundary": "remote dispatch starter evidence only", + "orchestrator_remote_runtime_event_summary_production_remote_execution": false, + "orchestrator_operation_risk_summary": { + "schema_version": "inferedge-entrypoint-operation-risk-summary-v1", + "evidence_role": "derived_navigation_context", + "decision_owner": "lab", + "scheduler_owner": "orchestrator", + "not_a_deployment_decision": true, + "queue_pressure_reason": "queue_backlog_threshold_exceeded", + "max_pressure_task": "vision_agent", + "primary_health_reason": "worker_queue_pressure", + "degraded_worker_ids": [ + "worker-jetson-01" + ], + "device_local_event_count": 2, + "producer_event_count": 4 + }, + "orchestrator_operation_risk_summary_present": true, + "orchestrator_operation_risk_summary_schema_version": "inferedge-entrypoint-operation-risk-summary-v1", + "orchestrator_operation_risk_summary_evidence_role": "derived_navigation_context", + "orchestrator_operation_risk_summary_decision_owner": "lab", + "orchestrator_operation_risk_summary_scheduler_owner": "orchestrator", + "orchestrator_operation_risk_summary_not_a_deployment_decision": true, + "orchestrator_operation_risk_summary_queue_pressure_reason": "queue_backlog_threshold_exceeded", + "orchestrator_operation_risk_summary_max_pressure_task": "vision_agent", + "orchestrator_operation_risk_summary_primary_health_reason": "worker_queue_pressure", + "orchestrator_operation_risk_summary_degraded_worker_ids": [ + "worker-jetson-01" + ], + "orchestrator_operation_risk_summary_device_local_event_count": 2.0, + "orchestrator_operation_risk_summary_producer_event_count": 4.0, + "orchestrator_operation_risk_rollup": {}, + "orchestrator_operation_risk_rollup_present": false, + "orchestrator_operation_risk_rollup_schema_version": null, + "orchestrator_operation_risk_rollup_operation_context_role": null, + "orchestrator_operation_risk_rollup_decision_owner": null, + "orchestrator_operation_risk_rollup_scheduler_owner": null, + "orchestrator_operation_risk_rollup_not_a_deployment_decision": null, + "orchestrator_operation_risk_rollup_risk_level": null, + "orchestrator_operation_risk_rollup_first_read": null, + "orchestrator_operation_risk_rollup_primary_reasons": [], + "orchestrator_operation_risk_rollup_affected_tasks": {}, + "orchestrator_operation_risk_rollup_affected_deadline_missed_tasks": [], + "orchestrator_operation_risk_rollup_affected_fallback_tasks": [], + "orchestrator_operation_risk_rollup_affected_scheduler_delay_tasks": [], + "orchestrator_operation_risk_rollup_affected_degraded_tasks": [], + "orchestrator_operation_risk_rollup_affected_constrained_tasks": [], + "orchestrator_operation_risk_rollup_queue_pressure_state": null, + "orchestrator_operation_risk_rollup_queue_pressure_reason": null, + "orchestrator_operation_risk_rollup_max_total_queue_depth": null, + "orchestrator_operation_risk_rollup_deadline_missed_count": null, + "orchestrator_operation_risk_rollup_fallback_count": null, + "orchestrator_operation_risk_rollup_drop_count": null, + "orchestrator_operation_risk_rollup_scheduler_delay_event_count": null, + "orchestrator_operation_risk_rollup_policy_decision_count": null, + "orchestrator_operation_risk_rollup_resource_snapshot_count": null, + "orchestrator_latency_budget_protection": { + "schema_version": "inferedge-orchestrator-latency-budget-protection-v1", + "evidence_role": "latency_budget_protection_context", + "decision_owner": "lab", + "scheduler_owner": "orchestrator", + "regression_owner": "edgeenv", + "not_a_deployment_decision": true, + "protected_high_priority_task_candidates": [ + "safety_monitor_agent" + ], + "tasks_with_latency_budget_risk": [ + "vision_agent" + ], + "risk_reasons": [ + "deadline_missed", + "scheduler_delay_observed", + "queue_backlog_threshold_exceeded" + ], + "per_task_budget_context": { + "safety_monitor_agent": { + "latency_budget_ms": 20.0, + "deadline_missed_count": 0, + "scheduler_delay_event_count": 0, + "protected_priority": true + }, + "vision_agent": { + "latency_budget_ms": 33.0, + "deadline_missed_count": 1, + "scheduler_delay_event_count": 1, + "max_scheduler_delay_cycles": 3 + } + } + }, + "orchestrator_latency_budget_protection_present": true, + "orchestrator_latency_budget_protection_schema_version": "inferedge-orchestrator-latency-budget-protection-v1", + "orchestrator_latency_budget_protection_evidence_role": "latency_budget_protection_context", + "orchestrator_latency_budget_protection_decision_owner": "lab", + "orchestrator_latency_budget_protection_scheduler_owner": "orchestrator", + "orchestrator_latency_budget_protection_regression_owner": "edgeenv", + "orchestrator_latency_budget_protection_not_a_deployment_decision": true, + "orchestrator_latency_budget_protection_protected_tasks": [ + "safety_monitor_agent" + ], + "orchestrator_latency_budget_protection_risk_tasks": [ + "vision_agent" + ], + "orchestrator_latency_budget_protection_risk_reasons": [ + "deadline_missed", + "scheduler_delay_observed", + "queue_backlog_threshold_exceeded" + ], + "orchestrator_latency_budget_protection_per_task_budget_context": { + "safety_monitor_agent": { + "latency_budget_ms": 20.0, + "deadline_missed_count": 0, + "scheduler_delay_event_count": 0, + "protected_priority": true + }, + "vision_agent": { + "latency_budget_ms": 33.0, + "deadline_missed_count": 1, + "scheduler_delay_event_count": 1, + "max_scheduler_delay_cycles": 3 + } + }, + "orchestrator_operation_timeline_summary": { + "schema_version": "inferedge-orchestrator-operation-timeline-summary-v1", + "source": "queue_depth_timeline+latency_timeline+policy_decision_log+runtime_event_summary", + "sample_counts": { + "queue_depth": 2, + "latency": 2, + "policy_decision": 2, + "runtime_event": 15 + }, + "queue": { + "max_total_queue_depth": 7, + "average_total_queue_depth": 5.5, + "overload_backlog_threshold": 3, + "pressure_state": "overloaded", + "pressure_reason": "queue_backlog_threshold_exceeded", + "max_pressure_task": "vision_agent", + "max_queue_depth_by_task": { + "vision_agent": 5, + "voice_command_agent": 2 + } + }, + "latency": { + "sample_count": 2, + "max_latency_ms": 72.0, + "max_queue_wait_ms": 15.0, + "max_queue_wait_ms_by_task": { + "vision_agent": 15.0 + }, + "tasks_with_deadline_miss": [ + "vision_agent" + ] + }, + "policy": { + "decision_count": 2, + "decision_reasons": [ + "queue_backlog_threshold_exceeded" + ], + "first_decision": { + "task": "vision_agent", + "decision_reason": "queue_backlog_threshold_exceeded" + }, + "latest_decision": { + "task": "voice_command_agent", + "decision_reason": "queue_backlog_threshold_exceeded" + } + }, + "affected_tasks": { + "deadline_missed": [ + "vision_agent" + ], + "fallback": [ + "voice_command_agent" + ], + "scheduler_delay": [ + "vision_agent" + ], + "degraded": [ + "vision_agent" + ], + "constrained": [], + "pressure_window": [ + "vision_agent", + "voice_command_agent" + ] + }, + "review_hints": [ + "review_queue_pressure", + "review_scheduler_delay", + "review_deadline_miss", + "review_fallback_use", + "review_sustained_pressure_window" + ], + "policy_pressure": { + "schema_version": "inferedge-orchestrator-policy-pressure-summary-v1", + "operation_context_role": "supplemental", + "scheduler_owner": "orchestrator", + "decision_owner": "lab", + "not_a_deployment_decision": true, + "source": "policy_decision_log+runtime_event_summary", + "first_read": "review_policy_pressure_context", + "decision_count": 2, + "decision_reason_counts": { + "queue_backlog_threshold_exceeded": 2 + }, + "limited_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "protected_tasks": [ + "safety_monitor_agent" + ], + "fallback_tasks": [ + "voice_command_agent" + ], + "fallback_decision_count": 1, + "backlog_thresholds": [ + 3 + ], + "max_total_backlog_before": 7, + "max_backlog_over_threshold": 4, + "pressure_markers": [ + "policy_decision_present", + "backlog_exceeded_threshold", + "fallback_policy_used", + "workload_limited_by_policy", + "scheduler_delay_present" + ], + "interpretation": "Policy pressure is supplemental operation evidence showing which scheduler decisions limited or protected work under backlog pressure; Lab remains the final deployment decision owner." + }, + "pressure_window": { + "schema_version": "inferedge-orchestrator-pressure-window-summary-v1", + "operation_context_role": "supplemental", + "scheduler_owner": "orchestrator", + "decision_owner": "lab", + "not_a_deployment_decision": true, + "source": "queue_depth_timeline+policy_decision_log", + "first_read": "review_sustained_pressure_window", + "overload_backlog_threshold": 3, + "window_count": 1, + "longest_window_cycles": 2, + "peak_total_queue_depth": 7, + "peak_window": { + "start_cycle": 1, + "end_cycle": 2, + "peak_total_queue_depth": 7 + }, + "longest_window": { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2 + }, + "windows": [ + { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2, + "peak_total_queue_depth": 7 + } + ], + "limited_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "protected_tasks": [ + "safety_monitor_agent" + ], + "fallback_tasks": [ + "voice_command_agent" + ], + "pressure_reasons": [ + "queue_backlog_threshold_exceeded" + ], + "policy_decision_count": 2, + "interpretation": "Pressure window is supplemental operation evidence; Lab remains the final deployment decision owner." + } + }, + "orchestrator_operation_timeline_summary_present": true, + "orchestrator_operation_timeline_summary_schema_version": "inferedge-orchestrator-operation-timeline-summary-v1", + "orchestrator_operation_timeline_review_hints": [ + "review_queue_pressure", + "review_scheduler_delay", + "review_deadline_miss", + "review_fallback_use", + "review_sustained_pressure_window" + ], + "orchestrator_operation_timeline_queue_pressure_state": "overloaded", + "orchestrator_operation_timeline_queue_pressure_reason": "queue_backlog_threshold_exceeded", + "orchestrator_operation_timeline_max_pressure_task": "vision_agent", + "orchestrator_operation_timeline_max_queue_wait_ms": 15.0, + "orchestrator_operation_timeline_max_latency_ms": 72.0, + "orchestrator_operation_timeline_policy_decision_count": 2.0, + "orchestrator_operation_timeline_policy_decision_reasons": [ + "queue_backlog_threshold_exceeded" + ], + "orchestrator_policy_pressure_summary": { + "schema_version": "inferedge-orchestrator-policy-pressure-summary-v1", + "operation_context_role": "supplemental", + "scheduler_owner": "orchestrator", + "decision_owner": "lab", + "not_a_deployment_decision": true, + "source": "policy_decision_log+runtime_event_summary", + "first_read": "review_policy_pressure_context", + "decision_count": 2, + "decision_reason_counts": { + "queue_backlog_threshold_exceeded": 2 + }, + "limited_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "protected_tasks": [ + "safety_monitor_agent" + ], + "fallback_tasks": [ + "voice_command_agent" + ], + "fallback_decision_count": 1, + "backlog_thresholds": [ + 3 + ], + "max_total_backlog_before": 7, + "max_backlog_over_threshold": 4, + "pressure_markers": [ + "policy_decision_present", + "backlog_exceeded_threshold", + "fallback_policy_used", + "workload_limited_by_policy", + "scheduler_delay_present" + ], + "interpretation": "Policy pressure is supplemental operation evidence showing which scheduler decisions limited or protected work under backlog pressure; Lab remains the final deployment decision owner." + }, + "orchestrator_policy_pressure_summary_present": true, + "orchestrator_policy_pressure_summary_schema_version": "inferedge-orchestrator-policy-pressure-summary-v1", + "orchestrator_policy_pressure_decision_count": 2.0, + "orchestrator_policy_pressure_decision_reason_counts": { + "queue_backlog_threshold_exceeded": 2 + }, + "orchestrator_policy_pressure_limited_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "orchestrator_policy_pressure_protected_tasks": [ + "safety_monitor_agent" + ], + "orchestrator_policy_pressure_fallback_tasks": [ + "voice_command_agent" + ], + "orchestrator_policy_pressure_markers": [ + "policy_decision_present", + "backlog_exceeded_threshold", + "fallback_policy_used", + "workload_limited_by_policy", + "scheduler_delay_present" + ], + "orchestrator_policy_pressure_marker_count": 5.0, + "orchestrator_policy_pressure_max_backlog_over_threshold": 4.0, + "orchestrator_policy_pressure_decision_owner": "lab", + "orchestrator_policy_pressure_scheduler_owner": "orchestrator", + "orchestrator_policy_pressure_not_a_deployment_decision": true, + "orchestrator_pressure_window_summary": { + "schema_version": "inferedge-orchestrator-pressure-window-summary-v1", + "operation_context_role": "supplemental", + "scheduler_owner": "orchestrator", + "decision_owner": "lab", + "not_a_deployment_decision": true, + "source": "queue_depth_timeline+policy_decision_log", + "first_read": "review_sustained_pressure_window", + "overload_backlog_threshold": 3, + "window_count": 1, + "longest_window_cycles": 2, + "peak_total_queue_depth": 7, + "peak_window": { + "start_cycle": 1, + "end_cycle": 2, + "peak_total_queue_depth": 7 + }, + "longest_window": { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2 + }, + "windows": [ + { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2, + "peak_total_queue_depth": 7 + } + ], + "limited_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "protected_tasks": [ + "safety_monitor_agent" + ], + "fallback_tasks": [ + "voice_command_agent" + ], + "pressure_reasons": [ + "queue_backlog_threshold_exceeded" + ], + "policy_decision_count": 2, + "interpretation": "Pressure window is supplemental operation evidence; Lab remains the final deployment decision owner." + }, + "orchestrator_pressure_window_summary_present": true, + "orchestrator_pressure_window_summary_schema_version": "inferedge-orchestrator-pressure-window-summary-v1", + "orchestrator_pressure_window_operation_context_role": "supplemental", + "orchestrator_pressure_window_decision_owner": "lab", + "orchestrator_pressure_window_scheduler_owner": "orchestrator", + "orchestrator_pressure_window_not_a_deployment_decision": true, + "orchestrator_pressure_window_first_read": "review_sustained_pressure_window", + "orchestrator_pressure_window_overload_backlog_threshold": 3.0, + "orchestrator_pressure_window_count": 1.0, + "orchestrator_pressure_window_longest_window_cycles": 2.0, + "orchestrator_pressure_window_peak_total_queue_depth": 7.0, + "orchestrator_pressure_window_peak_window": { + "start_cycle": 1, + "end_cycle": 2, + "peak_total_queue_depth": 7 + }, + "orchestrator_pressure_window_longest_window": { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2 + }, + "orchestrator_pressure_window_windows": [ + { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2, + "peak_total_queue_depth": 7 + } + ], + "orchestrator_pressure_window_limited_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "orchestrator_pressure_window_protected_tasks": [ + "safety_monitor_agent" + ], + "orchestrator_pressure_window_fallback_tasks": [ + "voice_command_agent" + ], + "orchestrator_pressure_window_pressure_reasons": [ + "queue_backlog_threshold_exceeded" + ], + "orchestrator_pressure_window_policy_decision_count": 2.0, + "orchestrator_operation_timeline_affected_deadline_missed_tasks": [ + "vision_agent" + ], + "orchestrator_operation_timeline_affected_fallback_tasks": [ + "voice_command_agent" + ], + "orchestrator_operation_timeline_affected_scheduler_delay_tasks": [ + "vision_agent" + ], + "orchestrator_operation_timeline_affected_degraded_tasks": [ + "vision_agent" + ], + "orchestrator_operation_timeline_affected_constrained_tasks": [], + "orchestrator_scheduler_fairness_summary": { + "schema_version": "inferedge-orchestrator-scheduler-fairness-summary-v1", + "operation_context_role": "supplemental", + "scheduler_owner": "orchestrator", + "decision_owner": "lab", + "not_a_deployment_decision": true, + "protected_high_priority_tasks": [ + "safety_monitor_agent" + ], + "tasks_with_starvation_risk": [ + "vision_agent", + "voice_command_agent" + ], + "tasks_with_scheduler_delay": [ + "vision_agent" + ], + "tasks_with_degradation": [ + "vision_agent", + "voice_command_agent" + ], + "task_fairness": { + "safety_monitor_agent": { + "priority": 100, + "executed_count": 20, + "dropped_count": 0, + "fallback_count": 0, + "scheduler_delay_event_count": 0, + "health_state": "healthy", + "starvation_risk": false, + "starvation_reasons": [] + }, + "vision_agent": { + "priority": 80, + "executed_count": 18, + "dropped_count": 4, + "fallback_count": 0, + "scheduler_delay_event_count": 1, + "max_scheduler_delay_cycles": 3, + "health_state": "degraded", + "starvation_risk": true, + "starvation_reasons": [ + "scheduler_delay_present", + "worker_degraded" + ] + }, + "voice_command_agent": { + "priority": 50, + "executed_count": 4, + "dropped_count": 1, + "fallback_count": 1, + "scheduler_delay_event_count": 0, + "health_state": "degraded", + "starvation_risk": true, + "starvation_reasons": [ + "fallback_policy_used", + "worker_degraded" + ] + } + }, + "interpretation": "Scheduler fairness is supplemental operation evidence; Lab remains the final deployment decision owner." + }, + "orchestrator_scheduler_fairness_summary_present": true, + "orchestrator_scheduler_fairness_summary_schema_version": "inferedge-orchestrator-scheduler-fairness-summary-v1", + "orchestrator_scheduler_fairness_protected_high_priority_tasks": [ + "safety_monitor_agent" + ], + "orchestrator_scheduler_fairness_starvation_risk_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "orchestrator_scheduler_fairness_scheduler_delay_tasks": [ + "vision_agent" + ], + "orchestrator_scheduler_fairness_degraded_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "orchestrator_scheduler_fairness_task_context": { + "safety_monitor_agent": { + "priority": 100, + "executed_count": 20, + "dropped_count": 0, + "fallback_count": 0, + "scheduler_delay_event_count": 0, + "health_state": "healthy", + "starvation_risk": false, + "starvation_reasons": [] + }, + "vision_agent": { + "priority": 80, + "executed_count": 18, + "dropped_count": 4, + "fallback_count": 0, + "scheduler_delay_event_count": 1, + "max_scheduler_delay_cycles": 3, + "health_state": "degraded", + "starvation_risk": true, + "starvation_reasons": [ + "scheduler_delay_present", + "worker_degraded" + ] + }, + "voice_command_agent": { + "priority": 50, + "executed_count": 4, + "dropped_count": 1, + "fallback_count": 1, + "scheduler_delay_event_count": 0, + "health_state": "degraded", + "starvation_risk": true, + "starvation_reasons": [ + "fallback_policy_used", + "worker_degraded" + ] + } + }, + "orchestrator_scheduler_fairness_starvation_risk_count": 2.0, + "orchestrator_scheduler_fairness_decision_owner": "lab", + "orchestrator_scheduler_fairness_scheduler_owner": "orchestrator", + "orchestrator_scheduler_fairness_not_a_deployment_decision": true, + "orchestrator_worker_health_trend": {}, + "orchestrator_worker_health_trend_present": false, + "orchestrator_worker_health_trend_schema_version": null, + "orchestrator_worker_health_trend_operation_context_role": null, + "orchestrator_worker_health_trend_scheduler_owner": null, + "orchestrator_worker_health_trend_decision_owner": null, + "orchestrator_worker_health_trend_not_a_deployment_decision": null, + "orchestrator_worker_health_trend_health_state_counts": {}, + "orchestrator_worker_health_trend_tasks_by_health_state": {}, + "orchestrator_worker_health_trend_task_health_context": {}, + "orchestrator_worker_health_trend_degraded_workers": [], + "orchestrator_worker_health_trend_constrained_workers": [], + "orchestrator_worker_health_trend_review_hints": [], + "orchestrator_operation_timeline_affected_stale_drop_tasks": [], + "orchestrator_stale_drop_summary": {}, + "orchestrator_stale_drop_summary_present": false, + "orchestrator_stale_drop_summary_schema_version": null, + "orchestrator_stale_drop_count": 0.0, + "orchestrator_stale_drop_total_count": 0.0, + "orchestrator_stale_drop_rate": 0.0, + "orchestrator_stale_drop_reasons": {}, + "orchestrator_stale_drop_reason_classes": [], + "orchestrator_tasks_with_stale_drop": [], + "orchestrator_latest_stale_drop_event": {}, + "orchestrator_stale_drop_decision_owner": null, + "orchestrator_stale_drop_scheduler_owner": null, + "orchestrator_stale_drop_not_a_deployment_decision": null, + "orchestrator_runtime_task_event_summary": { + "vision_agent": { + "event_count": 9, + "event_type_counts": { + "schedule": 3, + "execution": 3, + "policy_decision": 3 + }, + "reason_counts": { + "deadline_missed": 1, + "queue_backlog_threshold_exceeded": 1 + }, + "policy_decision_reason_counts": { + "queue_backlog_threshold_exceeded": 1 + }, + "drop_reason_counts": {}, + "deadline_missed_count": 1, + "fallback_decision_count": 0, + "scheduler_delay_event_count": 1, + "max_scheduler_delay_cycles": 3, + "max_queue_wait_ms": 15.0, + "latest_event_index": 42, + "latest_event_type": "execution" + }, + "voice_command_agent": { + "event_count": 6, + "event_type_counts": { + "drop": 1, + "policy_decision": 1, + "schedule": 2, + "execution": 2 + }, + "reason_counts": { + "queue_backlog_threshold_exceeded": 1, + "load_shedding_backlog_threshold_exceeded": 1 + }, + "policy_decision_reason_counts": { + "queue_backlog_threshold_exceeded": 1 + }, + "drop_reason_counts": { + "load_shedding_backlog_threshold_exceeded": 1 + }, + "deadline_missed_count": 0, + "fallback_decision_count": 1, + "scheduler_delay_event_count": 0, + "max_scheduler_delay_cycles": 0, + "max_queue_wait_ms": 0.0, + "latest_event_index": 39, + "latest_event_type": "policy_decision" + } + }, + "orchestrator_runtime_task_event_summary_present": true, + "orchestrator_tasks_with_deadline_miss": [ + "vision_agent" + ], + "orchestrator_tasks_with_fallback": [ + "voice_command_agent" + ], + "orchestrator_tasks_with_scheduler_delay": [ + "vision_agent" + ], + "orchestrator_edgeenv_mapping_hint": { + "copy_candidate_context_to": "runtime_telemetry_context.candidate", + "operation_context_role": "supplemental", + "coverage_summary_owner": "edgeenv", + "coverage_summary_path": "runtime_telemetry_context.history.telemetry_coverage", + "candidate_context_required_fields": [ + "run_id", + "telemetry_source", + "operation", + "resource" + ], + "aiguard_evidence_candidates": [ + "runtime_queue_overload", + "runtime_thermal_instability", + "edgeenv_orchestrator_latency_budget_protection", + "edgeenv_orchestrator_scheduler_fairness_summary" + ] + }, + "orchestrator_mapping_hint_copy_candidate_context_to": "runtime_telemetry_context.candidate", + "orchestrator_mapping_hint_operation_context_role": "supplemental", + "orchestrator_mapping_hint_coverage_summary_owner": "edgeenv", + "orchestrator_mapping_hint_coverage_summary_path": "runtime_telemetry_context.history.telemetry_coverage", + "orchestrator_mapping_hint_candidate_context_required_fields": [ + "run_id", + "telemetry_source", + "operation", + "resource" + ], + "orchestrator_mapping_hint_aiguard_evidence_candidates": [ + "runtime_queue_overload", + "runtime_thermal_instability", + "edgeenv_orchestrator_latency_budget_protection", + "edgeenv_orchestrator_scheduler_fairness_summary" + ], + "orchestrator_downstream_guard_alignment": { + "declared_by": "orchestrator", + "producer_lineage_evidence_type": "edgeenv_orchestrator_producer_lineage", + "operation_evidence_candidates": [ + "runtime_queue_overload", + "runtime_thermal_instability", + "edgeenv_orchestrator_latency_budget_protection", + "edgeenv_orchestrator_scheduler_fairness_summary" + ], + "validated_by": [ + "edgeenv runs telemetry inspect-history", + "inferedge-aiguard reason-edgeenv-regression", + "inferedgelab runtime-intelligence bundle manifest gate" + ], + "orchestrator_is_final_decision_owner": false, + "lab_is_final_decision_owner": true + }, + "orchestrator_guard_alignment_declared_by": "orchestrator", + "orchestrator_guard_alignment_producer_lineage_evidence_type": "edgeenv_orchestrator_producer_lineage", + "orchestrator_guard_alignment_operation_evidence_candidates": [ + "runtime_queue_overload", + "runtime_thermal_instability", + "edgeenv_orchestrator_latency_budget_protection", + "edgeenv_orchestrator_scheduler_fairness_summary" + ], + "orchestrator_guard_alignment_orchestrator_is_final_decision_owner": false, + "orchestrator_guard_alignment_lab_is_final_decision_owner": true, + "baseline_max_temperature_c": null, + "candidate_max_temperature_c": 78.5, + "baseline_throttling_detected": null, + "candidate_throttling_detected": true, + "baseline_queue_depth": null, + "candidate_queue_depth": 7.0, + "orchestrator_candidate_operation_max_total_queue_depth": 7.0, + "evidence_gap_count": 1.0, + "evidence_gaps": [] + }, + "pressure_window_summary": { + "summary": { + "schema_version": "inferedge-orchestrator-pressure-window-summary-v1", + "operation_context_role": "supplemental", + "scheduler_owner": "orchestrator", + "decision_owner": "lab", + "not_a_deployment_decision": true, + "source": "queue_depth_timeline+policy_decision_log", + "first_read": "review_sustained_pressure_window", + "overload_backlog_threshold": 3, + "window_count": 1, + "longest_window_cycles": 2, + "peak_total_queue_depth": 7, + "peak_window": { + "start_cycle": 1, + "end_cycle": 2, + "peak_total_queue_depth": 7 + }, + "longest_window": { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2 + }, + "windows": [ + { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2, + "peak_total_queue_depth": 7 + } + ], + "limited_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "protected_tasks": [ + "safety_monitor_agent" + ], + "fallback_tasks": [ + "voice_command_agent" + ], + "pressure_reasons": [ + "queue_backlog_threshold_exceeded" + ], + "policy_decision_count": 2, + "interpretation": "Pressure window is supplemental operation evidence; Lab remains the final deployment decision owner." + }, + "boundary_markers_valid": true, + "first_read": "review_sustained_pressure_window", + "window_count": 1.0, + "longest_window_cycles": 2.0, + "peak_total_queue_depth": 7.0, + "overload_backlog_threshold": 3.0, + "peak_window": { + "start_cycle": 1, + "end_cycle": 2, + "peak_total_queue_depth": 7 + }, + "longest_window": { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2 + }, + "windows": [ + { + "start_cycle": 1, + "end_cycle": 2, + "duration_cycles": 2, + "peak_total_queue_depth": 7 + } + ], + "limited_tasks": [ + "vision_agent", + "voice_command_agent" + ], + "protected_tasks": [ + "safety_monitor_agent" + ], + "fallback_tasks": [ + "voice_command_agent" + ], + "pressure_reasons": [ + "queue_backlog_threshold_exceeded" + ], + "policy_decision_count": 2.0, + "review_markers": [ + "pressure_window_present", + "peak_queue_depth_context", + "longest_window_context", + "pressure_reason_context", + "limited_task_context", + "protected_task_context", + "fallback_task_context", + "review_sustained_pressure_window" + ], + "decision_owner": "lab", + "scheduler_owner": "orchestrator", + "not_a_deployment_decision": true + } + } + }, { "type": "runtime_history_seed_run_config_traceability", "metric_name": "runtime_history_seed_run_config_runs", diff --git a/examples/runtime_intelligence_chain/bundle_manifest.json b/examples/runtime_intelligence_chain/bundle_manifest.json index 2d21f0c..4b0a067 100644 --- a/examples/runtime_intelligence_chain/bundle_manifest.json +++ b/examples/runtime_intelligence_chain/bundle_manifest.json @@ -59,6 +59,7 @@ "AIGuard scheduler fairness evidence", "AIGuard worker health trend evidence", "AIGuard policy pressure evidence", + "AIGuard pressure window evidence", "AIGuard runtime operation anomalies", "AIGuard remote dispatch event summary", "AIGuard remote event summary consistency", diff --git a/examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json b/examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json index 1a89b42..e65e959 100644 --- a/examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json +++ b/examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json @@ -73,7 +73,8 @@ ], "optional_aiguard_evidence_types": [ "stale_frame_risk", - "edgeenv_orchestrator_stale_drop_summary" + "edgeenv_orchestrator_stale_drop_summary", + "edgeenv_orchestrator_pressure_window_summary" ], "optional_aiguard_source_traceability": { "context_role": "read_only_optional_source_traceability", @@ -113,15 +114,16 @@ "AIGuard task event rollup evidence", "AIGuard operation timeline evidence", "AIGuard scheduler fairness evidence", + "AIGuard worker health trend evidence", "AIGuard policy pressure evidence", + "AIGuard pressure window evidence", "AIGuard runtime operation anomalies", "AIGuard remote dispatch event summary", "AIGuard remote event summary consistency", "Remote fallback starter evidence", "lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback", "AIGuard producer-lineage guard alignment", - "Lab remains the final deployment decision owner.", - "AIGuard worker health trend evidence" + "Lab remains the final deployment decision owner." ], "source_repositories": { "runtime_result": "InferEdge-Runtime", @@ -205,6 +207,10 @@ "orchestrator_worker_health_trend_present": true, "orchestrator_worker_health_trend_run_ids": [ "edgeenv-smoke-candidate" + ], + "orchestrator_pressure_window_summary_present": true, + "orchestrator_pressure_window_summary_run_ids": [ + "edgeenv-smoke-candidate" ] }, "notes": [ diff --git a/inferedgelab/report/runtime_intelligence.py b/inferedgelab/report/runtime_intelligence.py index b326b2a..88cbfa9 100644 --- a/inferedgelab/report/runtime_intelligence.py +++ b/inferedgelab/report/runtime_intelligence.py @@ -42,6 +42,10 @@ "edgeenv_orchestrator_policy_pressure_summary" ) +ORCHESTRATOR_PRESSURE_WINDOW_EVIDENCE_TYPE = ( + "edgeenv_orchestrator_pressure_window_summary" +) + RUN_CONFIG_TRACEABILITY_EVIDENCE_TYPE = "runtime_history_seed_run_config_traceability" REMOTE_RUNTIME_EVENT_SUMMARY_MISMATCH_EVIDENCE_TYPE = ( @@ -1592,6 +1596,16 @@ def _append_aiguard_runtime_operation_rows( ) ) + pressure_window_label = _aiguard_pressure_window_label(evidence_items) + if pressure_window_label: + rows.append( + ( + "AIGuard pressure window evidence", + pressure_window_label, + "AIGuard preserves sustained overload-window context as deterministic review evidence; Lab still owns the deployment decision.", + ) + ) + candidate_summary = guard_analysis.get("candidate_summary") if not isinstance(candidate_summary, dict): return @@ -2156,6 +2170,52 @@ def _aiguard_policy_pressure_label( return ", ".join(parts) +def _aiguard_pressure_window_label( + evidence_items: list[dict[str, Any]], +) -> str: + evidence = _find_evidence_item( + evidence_items, + ORCHESTRATOR_PRESSURE_WINDOW_EVIDENCE_TYPE, + ) + if evidence is None: + return "" + + parts: list[str] = [] + status = evidence.get("status") + if status is not None: + parts.append(f"status={status}") + observed = evidence.get("observed_value") + if observed is not None: + parts.append(f"windows={_format_compact_value(observed)}") + + raw_context = evidence.get("raw_context") + if isinstance(raw_context, dict): + context = raw_context.get("pressure_window_summary") + if isinstance(context, dict): + peak_depth = context.get("peak_total_queue_depth") + if peak_depth is not None: + parts.append(f"peak_queue={_format_compact_value(peak_depth)}") + longest = context.get("longest_window_cycles") + if longest is not None: + parts.append(f"longest_cycles={_format_compact_value(longest)}") + limited_tasks = _string_list(context.get("limited_tasks")) + if limited_tasks: + parts.append("limited=" + ",".join(limited_tasks)) + protected_tasks = _string_list(context.get("protected_tasks")) + if protected_tasks: + parts.append("protected=" + ",".join(protected_tasks)) + fallback_tasks = _string_list(context.get("fallback_tasks")) + if fallback_tasks: + parts.append("fallback=" + ",".join(fallback_tasks)) + first_read = context.get("first_read") + if first_read is not None: + parts.append(f"first_read={_format_compact_value(first_read)}") + boundary_valid = context.get("boundary_markers_valid") + if boundary_valid is not None: + parts.append(f"boundary_valid={boundary_valid}") + return ", ".join(parts) + + def _append_aiguard_remote_dispatch_rows( rows: list[tuple[str, str, str]], guard_analysis: dict[str, Any], diff --git a/scripts/check_runtime_intelligence_artifact_bundle.py b/scripts/check_runtime_intelligence_artifact_bundle.py index ad5863b..5039c2f 100644 --- a/scripts/check_runtime_intelligence_artifact_bundle.py +++ b/scripts/check_runtime_intelligence_artifact_bundle.py @@ -170,6 +170,13 @@ "aiguard_policy_pressure_type": ( "edgeenv_orchestrator_policy_pressure_summary" ), + "aiguard_pressure_window_evidence": ( + "| AIGuard pressure window evidence | " + "status=warning, windows=1" + ), + "aiguard_pressure_window_type": ( + "edgeenv_orchestrator_pressure_window_summary" + ), "aiguard_remote_dispatch_summary": ( "| AIGuard remote dispatch event summary | " "events=3, final=succeeded, fallback_recovered=True |" @@ -309,6 +316,10 @@ "aiguard_policy_pressure_type": ( "edgeenv_orchestrator_policy_pressure_summary" ), + "aiguard_pressure_window_evidence": "AIGuard pressure window evidence", + "aiguard_pressure_window_type": ( + "edgeenv_orchestrator_pressure_window_summary" + ), "aiguard_remote_dispatch_summary": "AIGuard remote dispatch event summary", "aiguard_remote_dispatch_label": ( "events=3, final=succeeded, fallback_recovered=True" diff --git a/scripts/check_runtime_intelligence_bundle_manifest.py b/scripts/check_runtime_intelligence_bundle_manifest.py index 0fd8da4..3beee9b 100644 --- a/scripts/check_runtime_intelligence_bundle_manifest.py +++ b/scripts/check_runtime_intelligence_bundle_manifest.py @@ -112,6 +112,7 @@ OPTIONAL_AIGUARD_EVIDENCE_TYPES = { "stale_frame_risk", "edgeenv_orchestrator_stale_drop_summary", + "edgeenv_orchestrator_pressure_window_summary", } OPTIONAL_AIGUARD_SOURCE_TRACEABILITY_CONTEXT_ROLE = ( "read_only_optional_source_traceability" @@ -182,6 +183,7 @@ "AIGuard scheduler fairness evidence", "AIGuard worker health trend evidence", "AIGuard policy pressure evidence", + "AIGuard pressure window evidence", "AIGuard runtime operation anomalies", "AIGuard remote dispatch event summary", "AIGuard remote event summary consistency", @@ -212,6 +214,7 @@ "aiguard_evidence: edgeenv_orchestrator_scheduler_fairness_summary validated", "aiguard_evidence: edgeenv_orchestrator_worker_health_trend validated", "aiguard_evidence: edgeenv_orchestrator_policy_pressure_summary validated", + "aiguard_evidence: edgeenv_orchestrator_pressure_window_summary validated", "aiguard_evidence: runtime_history_seed_run_config_traceability validated", "aiguard_evidence: remote_execution_recovered_by_fallback validated", "aiguard_raw_context: producer_lineage_shape preserved", @@ -219,6 +222,7 @@ "aiguard_raw_context: scheduler_fairness_summary preserved", "aiguard_raw_context: worker_health_trend preserved", "aiguard_raw_context: policy_pressure_summary preserved", + "aiguard_raw_context: pressure_window_summary preserved", "aiguard_raw_context: history_seed_run_config_traceability preserved", "aiguard_raw_context: remote_runtime_event_summary preserved", "aiguard_raw_context: remote_runtime_summary_boundary preserved", @@ -1946,6 +1950,8 @@ def _validate_guard_analysis(guard_analysis: dict[str, Any], errors: list[str]) _validate_worker_health_trend_evidence(item, index, errors) if item.get("type") == "edgeenv_orchestrator_policy_pressure_summary": _validate_policy_pressure_evidence(item, index, errors) + if item.get("type") == "edgeenv_orchestrator_pressure_window_summary": + _validate_pressure_window_evidence(item, index, errors) if item.get("type") == "runtime_history_seed_run_config_traceability": _validate_run_config_traceability_evidence(item, index, errors) if item.get("type") == "remote_execution_recovered_by_fallback": @@ -2685,6 +2691,92 @@ def _validate_policy_pressure_evidence( ) +def _validate_pressure_window_evidence( + item: dict[str, Any], + index: int, + errors: list[str], +) -> None: + _record( + item.get("status") == "warning", + errors, + f"AIGuard evidence[{index}] pressure window status must be warning", + ) + _record( + item.get("observed_value") == 1, + errors, + f"AIGuard evidence[{index}] pressure window observed_value must be 1", + ) + raw_context = item.get("raw_context") or {} + pressure = raw_context.get("pressure_window_summary") + _record( + isinstance(pressure, dict), + errors, + f"AIGuard evidence[{index}] raw_context.pressure_window_summary must be an object", + ) + if not isinstance(pressure, dict): + return + + _record( + pressure.get("boundary_markers_valid") is True, + errors, + f"AIGuard evidence[{index}] pressure_window_summary.boundary_markers_valid " + "must be true", + ) + _record( + pressure.get("first_read") == "review_sustained_pressure_window", + errors, + f"AIGuard evidence[{index}] pressure_window_summary.first_read must be review_sustained_pressure_window", + ) + _record( + pressure.get("window_count") == 1.0, + errors, + f"AIGuard evidence[{index}] pressure_window_summary.window_count must be 1.0", + ) + _record( + pressure.get("peak_total_queue_depth") == 7.0, + errors, + f"AIGuard evidence[{index}] pressure_window_summary.peak_total_queue_depth must be 7.0", + ) + _record( + pressure.get("longest_window_cycles") == 2.0, + errors, + f"AIGuard evidence[{index}] pressure_window_summary.longest_window_cycles must be 2.0", + ) + _record( + pressure.get("limited_tasks") == ["vision_agent", "voice_command_agent"], + errors, + f"AIGuard evidence[{index}] pressure_window_summary.limited_tasks " + "must preserve vision_agent and voice_command_agent", + ) + _record( + pressure.get("protected_tasks") == ["safety_monitor_agent"], + errors, + f"AIGuard evidence[{index}] pressure_window_summary.protected_tasks " + "must preserve safety_monitor_agent", + ) + _record( + pressure.get("fallback_tasks") == ["voice_command_agent"], + errors, + f"AIGuard evidence[{index}] pressure_window_summary.fallback_tasks " + "must preserve voice_command_agent", + ) + _record( + pressure.get("decision_owner") == "lab", + errors, + f"AIGuard evidence[{index}] pressure_window_summary.decision_owner must be lab", + ) + _record( + pressure.get("scheduler_owner") == "orchestrator", + errors, + f"AIGuard evidence[{index}] pressure_window_summary.scheduler_owner must be orchestrator", + ) + _record( + pressure.get("not_a_deployment_decision") is True, + errors, + f"AIGuard evidence[{index}] pressure_window_summary.not_a_deployment_decision must be true", + ) + + def _validate_run_config_traceability_evidence( item: dict[str, Any], index: int, diff --git a/scripts/check_runtime_intelligence_ci_artifacts.py b/scripts/check_runtime_intelligence_ci_artifacts.py index 7371586..e781c40 100644 --- a/scripts/check_runtime_intelligence_ci_artifacts.py +++ b/scripts/check_runtime_intelligence_ci_artifacts.py @@ -47,13 +47,17 @@ "aiguard_evidence: edgeenv_orchestrator_task_event_rollup validated", "aiguard_evidence: edgeenv_orchestrator_operation_timeline_summary validated", "aiguard_evidence: edgeenv_orchestrator_scheduler_fairness_summary validated", + "aiguard_evidence: edgeenv_orchestrator_worker_health_trend validated", "aiguard_evidence: edgeenv_orchestrator_policy_pressure_summary validated", + "aiguard_evidence: edgeenv_orchestrator_pressure_window_summary validated", "aiguard_evidence: runtime_history_seed_run_config_traceability validated", "aiguard_evidence: remote_execution_recovered_by_fallback validated", "aiguard_raw_context: producer_lineage_shape preserved", "aiguard_raw_context: task_event_rollup preserved", "aiguard_raw_context: scheduler_fairness_summary preserved", + "aiguard_raw_context: worker_health_trend preserved", "aiguard_raw_context: policy_pressure_summary preserved", + "aiguard_raw_context: pressure_window_summary preserved", "aiguard_raw_context: history_seed_run_config_traceability preserved", "aiguard_raw_context: remote_runtime_event_summary preserved", "aiguard_raw_context: remote_runtime_summary_boundary preserved", @@ -94,7 +98,9 @@ "AIGuard task event rollup evidence", "AIGuard operation timeline evidence", "AIGuard scheduler fairness evidence", + "AIGuard worker health trend evidence", "AIGuard policy pressure evidence", + "AIGuard pressure window evidence", "AIGuard runtime operation anomalies", "AIGuard remote dispatch event summary", "AIGuard remote event summary consistency", @@ -107,18 +113,24 @@ "edgeenv-smoke-candidate", "edgeenv-smoke-missing", ] -REQUIRED_AIGUARD_POLICY_PRESSURE_RUN_IDS = [ +REQUIRED_AIGUARD_POLICY_PRESSURE_RUN_IDS = [] +REQUIRED_AIGUARD_PRESSURE_WINDOW_RUN_IDS = [ "edgeenv-smoke-candidate", ] REQUIRED_AIGUARD_OPTIONAL_EVIDENCE_TYPES = [ "stale_frame_risk", "edgeenv_orchestrator_stale_drop_summary", + "edgeenv_orchestrator_pressure_window_summary", ] REQUIRED_AIGUARD_MISSING_OPTIONAL_EVIDENCE_TYPES = [ "edgeenv_orchestrator_stale_drop_summary", "stale_frame_risk", ] +REQUIRED_AIGUARD_DEFAULT_PRESENT_OPTIONAL_EVIDENCE_TYPES = [ + "edgeenv_orchestrator_pressure_window_summary", +] REQUIRED_AIGUARD_PRESENT_OPTIONAL_EVIDENCE_TYPES = [ + "edgeenv_orchestrator_pressure_window_summary", "edgeenv_orchestrator_stale_drop_summary", "stale_frame_risk", ] @@ -164,9 +176,11 @@ "## Validated AIGuard Optional Handoff Context", "aiguard_optional_context: read_only_optional_guard_context preserved", "aiguard_optional_requirement_boundary: optional evidence not validated as required", - "aiguard_optional_types: stale_frame_risk, edgeenv_orchestrator_stale_drop_summary", + "aiguard_optional_types: " + f"{', '.join(REQUIRED_AIGUARD_OPTIONAL_EVIDENCE_TYPES)}", "aiguard_missing_optional_types: edgeenv_orchestrator_stale_drop_summary, stale_frame_risk", - "aiguard_optional_present_types: edgeenv_orchestrator_stale_drop_summary, stale_frame_risk", + "aiguard_optional_present_types: " + f"{', '.join(REQUIRED_AIGUARD_PRESENT_OPTIONAL_EVIDENCE_TYPES)}", "aiguard_optional_present_missing_types: none", "aiguard_optional_present_source_artifact: " f"{REQUIRED_AIGUARD_OPTIONAL_PRESENT_SOURCE_ARTIFACT_MARKER}", @@ -397,7 +411,7 @@ def _validate_aiguard_handoff_alignment( expected_optional_guard_evidence_types_present = ( expected_optional_guard_evidence_types_present if expected_optional_guard_evidence_types_present is not None - else [] + else REQUIRED_AIGUARD_DEFAULT_PRESENT_OPTIONAL_EVIDENCE_TYPES ) expected_missing_optional_evidence_types = ( expected_missing_optional_evidence_types @@ -530,6 +544,23 @@ def _validate_aiguard_handoff_alignment( errors, "AIGuard alignment policy_pressure_summary_errors must be empty", ) + _record( + payload.get("handoff_pressure_window_summary_run_ids") + == REQUIRED_AIGUARD_PRESSURE_WINDOW_RUN_IDS, + errors, + "AIGuard alignment handoff pressure-window run IDs must match EdgeEnv summary", + ) + _record( + payload.get("guard_analysis_pressure_window_summary_run_ids") + == REQUIRED_AIGUARD_PRESSURE_WINDOW_RUN_IDS, + errors, + "AIGuard alignment guard_analysis pressure-window run IDs must match EdgeEnv summary", + ) + _record( + payload.get("pressure_window_summary_errors") == [], + errors, + "AIGuard alignment pressure_window_summary_errors must be empty", + ) _record( payload.get("guard_alignment_summary_errors") == [], errors, @@ -568,7 +599,9 @@ def _validate_aiguard_handoff_alignment( "AIGuard task event rollup evidence, " "AIGuard operation timeline evidence, " "AIGuard scheduler fairness evidence, " + "AIGuard worker health trend evidence, " "AIGuard policy pressure evidence, " + "AIGuard pressure window evidence, " "AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, " "AIGuard remote event summary consistency, " "Remote fallback starter evidence, " @@ -581,7 +614,8 @@ def _validate_aiguard_handoff_alignment( "optional_evidence_context_role: read_only_optional_guard_context", "aiguard_validates_optional_evidence_as_required: False", "optional_aiguard_evidence_types: " - "[stale_frame_risk, edgeenv_orchestrator_stale_drop_summary]", + "[stale_frame_risk, edgeenv_orchestrator_stale_drop_summary, " + "edgeenv_orchestrator_pressure_window_summary]", f"optional_guard_evidence_types_present: {expected_present_marker}", f"missing_optional_evidence_types: {expected_missing_marker}", "handoff_producer_lineage_guard_alignment_run_ids: " @@ -589,8 +623,12 @@ def _validate_aiguard_handoff_alignment( "guard_analysis_producer_lineage_guard_alignment_run_ids: " "[edgeenv-smoke-candidate, edgeenv-smoke-missing]", "handoff_policy_pressure_summary_run_ids: " - "[edgeenv-smoke-candidate]", + "[]", "guard_analysis_policy_pressure_summary_run_ids: " + "[]", + "handoff_pressure_window_summary_run_ids: " + "[edgeenv-smoke-candidate]", + "guard_analysis_pressure_window_summary_run_ids: " "[edgeenv-smoke-candidate]", ] if expected_optional_present_source_artifact is not None: diff --git a/tests/test_runtime_intelligence_ci_template.py b/tests/test_runtime_intelligence_ci_template.py index d6a68b9..ae7bcbe 100644 --- a/tests/test_runtime_intelligence_ci_template.py +++ b/tests/test_runtime_intelligence_ci_template.py @@ -226,13 +226,17 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p "- aiguard_evidence: edgeenv_orchestrator_task_event_rollup validated", "- aiguard_evidence: edgeenv_orchestrator_operation_timeline_summary validated", "- aiguard_evidence: edgeenv_orchestrator_scheduler_fairness_summary validated", - "- aiguard_evidence: edgeenv_orchestrator_policy_pressure_summary validated", + "- aiguard_evidence: edgeenv_orchestrator_worker_health_trend validated", + "- aiguard_evidence: edgeenv_orchestrator_policy_pressure_summary validated", + "- aiguard_evidence: edgeenv_orchestrator_pressure_window_summary validated", "- aiguard_evidence: runtime_history_seed_run_config_traceability validated", "- aiguard_evidence: remote_execution_recovered_by_fallback validated", "- aiguard_raw_context: producer_lineage_shape preserved", "- aiguard_raw_context: task_event_rollup preserved", "- aiguard_raw_context: scheduler_fairness_summary preserved", - "- aiguard_raw_context: policy_pressure_summary preserved", + "- aiguard_raw_context: worker_health_trend preserved", + "- aiguard_raw_context: policy_pressure_summary preserved", + "- aiguard_raw_context: pressure_window_summary preserved", "- aiguard_raw_context: history_seed_run_config_traceability preserved", "- aiguard_raw_context: remote_runtime_event_summary preserved", "- aiguard_raw_context: remote_runtime_summary_boundary preserved", @@ -276,7 +280,7 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p (report_dir / "aiguard_edgeenv_handoff_alignment.json").write_text( '{"schema_version":"inferedge-aiguard-edgeenv-handoff-alignment-v1",' '"status":"passed","decision_owner":"lab","diagnosis_owner":"aiguard",' - '"lab_expected_report_marker_count":19,' + '"lab_expected_report_marker_count":21,' '"lab_expected_report_markers":[' '"Runtime Intelligence Risk Summary",' '"Runtime replay duration scope",' @@ -289,7 +293,9 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p '"AIGuard task event rollup evidence",' '"AIGuard operation timeline evidence",' '"AIGuard scheduler fairness evidence",' + '"AIGuard worker health trend evidence",' '"AIGuard policy pressure evidence",' + '"AIGuard pressure window evidence",' '"AIGuard runtime operation anomalies",' '"AIGuard remote dispatch event summary",' '"AIGuard remote event summary consistency",' @@ -302,10 +308,12 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p '"aiguard_validates_expected_report_markers":false,' '"optional_evidence_context_role":"read_only_optional_guard_context",' '"aiguard_validates_optional_evidence_as_required":false,' - '"optional_evidence_type_count":2,' + '"optional_evidence_type_count":3,' '"optional_aiguard_evidence_types":' - '["stale_frame_risk","edgeenv_orchestrator_stale_drop_summary"],' - '"optional_guard_evidence_types_present":[],' + '["stale_frame_risk","edgeenv_orchestrator_stale_drop_summary",' + '"edgeenv_orchestrator_pressure_window_summary"],' + '"optional_guard_evidence_types_present":' + '["edgeenv_orchestrator_pressure_window_summary"],' '"missing_optional_evidence_types":' '["edgeenv_orchestrator_stale_drop_summary","stale_frame_risk"],' '"invalid_optional_evidence_types":[],' @@ -314,10 +322,15 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p '"guard_analysis_producer_lineage_guard_alignment_run_ids":' '["edgeenv-smoke-candidate","edgeenv-smoke-missing"],' '"handoff_policy_pressure_summary_run_ids":' - '["edgeenv-smoke-candidate"],' + '[],' '"guard_analysis_policy_pressure_summary_run_ids":' - '["edgeenv-smoke-candidate"],' + '[],' '"policy_pressure_summary_errors":[],' + '"handoff_pressure_window_summary_run_ids":' + '["edgeenv-smoke-candidate"],' + '"guard_analysis_pressure_window_summary_run_ids":' + '["edgeenv-smoke-candidate"],' + '"pressure_window_summary_errors":[],' '"guard_alignment_summary_errors":[],"errors":[]}', encoding="utf-8", ) @@ -327,18 +340,20 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p "- status: passed", "- decision_owner: lab", "- diagnosis_owner: aiguard", - "- lab_expected_report_markers: [Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard policy pressure evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner.]", + "- lab_expected_report_markers: [Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard worker health trend evidence, AIGuard policy pressure evidence, AIGuard pressure window evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner.]", "- report_marker_context_role: lab_report_contract_context", "- aiguard_validates_expected_report_markers: False", "- optional_evidence_context_role: read_only_optional_guard_context", "- aiguard_validates_optional_evidence_as_required: False", - "- optional_aiguard_evidence_types: [stale_frame_risk, edgeenv_orchestrator_stale_drop_summary]", - "- optional_guard_evidence_types_present: []", + "- optional_aiguard_evidence_types: [stale_frame_risk, edgeenv_orchestrator_stale_drop_summary, edgeenv_orchestrator_pressure_window_summary]", + "- optional_guard_evidence_types_present: [edgeenv_orchestrator_pressure_window_summary]", "- missing_optional_evidence_types: [edgeenv_orchestrator_stale_drop_summary, stale_frame_risk]", "- handoff_producer_lineage_guard_alignment_run_ids: [edgeenv-smoke-candidate, edgeenv-smoke-missing]", "- guard_analysis_producer_lineage_guard_alignment_run_ids: [edgeenv-smoke-candidate, edgeenv-smoke-missing]", - "- handoff_policy_pressure_summary_run_ids: [edgeenv-smoke-candidate]", - "- guard_analysis_policy_pressure_summary_run_ids: [edgeenv-smoke-candidate]", + "- handoff_policy_pressure_summary_run_ids: []", + "- guard_analysis_policy_pressure_summary_run_ids: []", + "- handoff_pressure_window_summary_run_ids: [edgeenv-smoke-candidate]", + "- guard_analysis_pressure_window_summary_run_ids: [edgeenv-smoke-candidate]", ] ), encoding="utf-8", @@ -348,7 +363,7 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p ).write_text( '{"schema_version":"inferedge-aiguard-edgeenv-handoff-alignment-v1",' '"status":"passed","decision_owner":"lab","diagnosis_owner":"aiguard",' - '"lab_expected_report_marker_count":19,' + '"lab_expected_report_marker_count":21,' '"lab_expected_report_markers":[' '"Runtime Intelligence Risk Summary",' '"Runtime replay duration scope",' @@ -361,7 +376,9 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p '"AIGuard task event rollup evidence",' '"AIGuard operation timeline evidence",' '"AIGuard scheduler fairness evidence",' + '"AIGuard worker health trend evidence",' '"AIGuard policy pressure evidence",' + '"AIGuard pressure window evidence",' '"AIGuard runtime operation anomalies",' '"AIGuard remote dispatch event summary",' '"AIGuard remote event summary consistency",' @@ -374,11 +391,13 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p '"aiguard_validates_expected_report_markers":false,' '"optional_evidence_context_role":"read_only_optional_guard_context",' '"aiguard_validates_optional_evidence_as_required":false,' - '"optional_evidence_type_count":2,' + '"optional_evidence_type_count":3,' '"optional_aiguard_evidence_types":' - '["stale_frame_risk","edgeenv_orchestrator_stale_drop_summary"],' + '["stale_frame_risk","edgeenv_orchestrator_stale_drop_summary",' + '"edgeenv_orchestrator_pressure_window_summary"],' '"optional_guard_evidence_types_present":' - '["edgeenv_orchestrator_stale_drop_summary","stale_frame_risk"],' + '["edgeenv_orchestrator_pressure_window_summary",' + '"edgeenv_orchestrator_stale_drop_summary","stale_frame_risk"],' '"missing_optional_evidence_types":[],' '"optional_present_source_artifact":{' '"repository":"InferEdgeAIGuard",' @@ -403,10 +422,15 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p '"guard_analysis_producer_lineage_guard_alignment_run_ids":' '["edgeenv-smoke-candidate","edgeenv-smoke-missing"],' '"handoff_policy_pressure_summary_run_ids":' - '["edgeenv-smoke-candidate"],' + '[],' '"guard_analysis_policy_pressure_summary_run_ids":' - '["edgeenv-smoke-candidate"],' + '[],' '"policy_pressure_summary_errors":[],' + '"handoff_pressure_window_summary_run_ids":' + '["edgeenv-smoke-candidate"],' + '"guard_analysis_pressure_window_summary_run_ids":' + '["edgeenv-smoke-candidate"],' + '"pressure_window_summary_errors":[],' '"guard_alignment_summary_errors":[],"errors":[]}', encoding="utf-8", ) @@ -418,20 +442,22 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p "- status: passed", "- decision_owner: lab", "- diagnosis_owner: aiguard", - "- lab_expected_report_markers: [Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard policy pressure evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner.]", + "- lab_expected_report_markers: [Runtime Intelligence Risk Summary, Runtime replay duration scope, Orchestrator operation feed context, EdgeEnv fixture matrix coverage, Reviewer operation quick scan, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard operation risk rollup evidence, AIGuard task event rollup evidence, AIGuard operation timeline evidence, AIGuard scheduler fairness evidence, AIGuard worker health trend evidence, AIGuard policy pressure evidence, AIGuard pressure window evidence, AIGuard runtime operation anomalies, AIGuard remote dispatch event summary, AIGuard remote event summary consistency, Remote fallback starter evidence, lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback, AIGuard producer-lineage guard alignment, Lab remains the final deployment decision owner.]", "- report_marker_context_role: lab_report_contract_context", "- aiguard_validates_expected_report_markers: False", "- optional_evidence_context_role: read_only_optional_guard_context", "- aiguard_validates_optional_evidence_as_required: False", - "- optional_aiguard_evidence_types: [stale_frame_risk, edgeenv_orchestrator_stale_drop_summary]", - "- optional_guard_evidence_types_present: [edgeenv_orchestrator_stale_drop_summary, stale_frame_risk]", + "- optional_aiguard_evidence_types: [stale_frame_risk, edgeenv_orchestrator_stale_drop_summary, edgeenv_orchestrator_pressure_window_summary]", + "- optional_guard_evidence_types_present: [edgeenv_orchestrator_pressure_window_summary, edgeenv_orchestrator_stale_drop_summary, stale_frame_risk]", "- missing_optional_evidence_types: []", "- optional_present_source_artifact: InferEdgeAIGuard/examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json", "- optional_present_reproduction_command: python -m inferedge_aiguard.cli build-runtime-intelligence-optional-stale-drop --edgeenv-regression examples/runtime_intelligence/edgeenv_runtime_regression_with_optional_stale_drop_context.json --remote-dispatch examples/runtime_intelligence/remote_dispatch_fallback_recovered_result.json --orchestration-summary examples/runtime_intelligence/orchestrator_multi_workload_sustained_summary.json --save-json examples/runtime_intelligence/aiguard_runtime_operation_guard_analysis_optional_stale_drop.json", "- handoff_producer_lineage_guard_alignment_run_ids: [edgeenv-smoke-candidate, edgeenv-smoke-missing]", "- guard_analysis_producer_lineage_guard_alignment_run_ids: [edgeenv-smoke-candidate, edgeenv-smoke-missing]", - "- handoff_policy_pressure_summary_run_ids: [edgeenv-smoke-candidate]", - "- guard_analysis_policy_pressure_summary_run_ids: [edgeenv-smoke-candidate]", + "- handoff_policy_pressure_summary_run_ids: []", + "- guard_analysis_policy_pressure_summary_run_ids: []", + "- handoff_pressure_window_summary_run_ids: [edgeenv-smoke-candidate]", + "- guard_analysis_pressure_window_summary_run_ids: [edgeenv-smoke-candidate]", ] ), encoding="utf-8", @@ -511,7 +537,9 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p in summary ) assert ( - "aiguard_optional_present_types: edgeenv_orchestrator_stale_drop_summary, stale_frame_risk" + "aiguard_optional_present_types: " + "edgeenv_orchestrator_pressure_window_summary, " + "edgeenv_orchestrator_stale_drop_summary, stale_frame_risk" in summary ) assert "aiguard_optional_present_missing_types: none" in summary diff --git a/tests/test_runtime_intelligence_smoke_script.py b/tests/test_runtime_intelligence_smoke_script.py index 58dfd6f..409c3c0 100644 --- a/tests/test_runtime_intelligence_smoke_script.py +++ b/tests/test_runtime_intelligence_smoke_script.py @@ -159,19 +159,27 @@ def test_runtime_intelligence_smoke_script_runs_artifact_chain(tmp_path): assert alignment_payload["optional_aiguard_evidence_types"] == [ "stale_frame_risk", "edgeenv_orchestrator_stale_drop_summary", + "edgeenv_orchestrator_pressure_window_summary", + ] + assert alignment_payload["optional_guard_evidence_types_present"] == [ + "edgeenv_orchestrator_pressure_window_summary", ] - assert alignment_payload["optional_guard_evidence_types_present"] == [] assert alignment_payload["missing_optional_evidence_types"] == [ "edgeenv_orchestrator_stale_drop_summary", "stale_frame_risk", ] - assert alignment_payload["handoff_policy_pressure_summary_run_ids"] == [ + assert alignment_payload["handoff_policy_pressure_summary_run_ids"] == [] + assert alignment_payload[ + "guard_analysis_policy_pressure_summary_run_ids" + ] == [] + assert alignment_payload["policy_pressure_summary_errors"] == [] + assert alignment_payload["handoff_pressure_window_summary_run_ids"] == [ "edgeenv-smoke-candidate" ] assert alignment_payload[ - "guard_analysis_policy_pressure_summary_run_ids" + "guard_analysis_pressure_window_summary_run_ids" ] == ["edgeenv-smoke-candidate"] - assert alignment_payload["policy_pressure_summary_errors"] == [] + assert alignment_payload["pressure_window_summary_errors"] == [] assert "status: passed" in alignment_summary assert "decision_owner: lab" in alignment_summary assert "diagnosis_owner: aiguard" in alignment_summary @@ -185,10 +193,15 @@ def test_runtime_intelligence_smoke_script_runs_artifact_chain(tmp_path): ) assert ( "optional_aiguard_evidence_types: " - "[stale_frame_risk, edgeenv_orchestrator_stale_drop_summary]" + "[stale_frame_risk, edgeenv_orchestrator_stale_drop_summary, " + "edgeenv_orchestrator_pressure_window_summary]" + in alignment_summary + ) + assert ( + "optional_guard_evidence_types_present: " + "[edgeenv_orchestrator_pressure_window_summary]" in alignment_summary ) - assert "optional_guard_evidence_types_present: []" in alignment_summary assert ( "missing_optional_evidence_types: " "[edgeenv_orchestrator_stale_drop_summary, stale_frame_risk]" @@ -204,10 +217,18 @@ def test_runtime_intelligence_smoke_script_runs_artifact_chain(tmp_path): ) in alignment_summary assert ( "handoff_policy_pressure_summary_run_ids: " - "[edgeenv-smoke-candidate]" + "[]" ) in alignment_summary assert ( "guard_analysis_policy_pressure_summary_run_ids: " + "[]" + ) in alignment_summary + assert ( + "handoff_pressure_window_summary_run_ids: " + "[edgeenv-smoke-candidate]" + ) in alignment_summary + assert ( + "guard_analysis_pressure_window_summary_run_ids: " "[edgeenv-smoke-candidate]" ) in alignment_summary optional_present_summary = ( @@ -228,19 +249,26 @@ def test_runtime_intelligence_smoke_script_runs_artifact_chain(tmp_path): assert optional_present_payload["optional_aiguard_evidence_types"] == [ "stale_frame_risk", "edgeenv_orchestrator_stale_drop_summary", + "edgeenv_orchestrator_pressure_window_summary", ] assert optional_present_payload["optional_guard_evidence_types_present"] == [ + "edgeenv_orchestrator_pressure_window_summary", "edgeenv_orchestrator_stale_drop_summary", "stale_frame_risk", ] assert optional_present_payload["missing_optional_evidence_types"] == [] - assert optional_present_payload["handoff_policy_pressure_summary_run_ids"] == [ + assert optional_present_payload["handoff_policy_pressure_summary_run_ids"] == [] + assert optional_present_payload[ + "guard_analysis_policy_pressure_summary_run_ids" + ] == [] + assert optional_present_payload["policy_pressure_summary_errors"] == [] + assert optional_present_payload["handoff_pressure_window_summary_run_ids"] == [ "edgeenv-smoke-candidate" ] assert optional_present_payload[ - "guard_analysis_policy_pressure_summary_run_ids" + "guard_analysis_pressure_window_summary_run_ids" ] == ["edgeenv-smoke-candidate"] - assert optional_present_payload["policy_pressure_summary_errors"] == [] + assert optional_present_payload["pressure_window_summary_errors"] == [] assert optional_present_payload["optional_present_source_artifact"] == { "repository": "InferEdgeAIGuard", "path": ( @@ -279,7 +307,8 @@ def test_runtime_intelligence_smoke_script_runs_artifact_chain(tmp_path): } assert ( "optional_guard_evidence_types_present: " - "[edgeenv_orchestrator_stale_drop_summary, stale_frame_risk]" + "[edgeenv_orchestrator_pressure_window_summary, " + "edgeenv_orchestrator_stale_drop_summary, stale_frame_risk]" in optional_present_summary ) assert "missing_optional_evidence_types: []" in optional_present_summary @@ -322,6 +351,7 @@ def test_runtime_intelligence_smoke_script_runs_artifact_chain(tmp_path): ) assert ( "aiguard_optional_types: stale_frame_risk, edgeenv_orchestrator_stale_drop_summary" + ", edgeenv_orchestrator_pressure_window_summary" in ci_summary ) assert ( @@ -329,7 +359,9 @@ def test_runtime_intelligence_smoke_script_runs_artifact_chain(tmp_path): in ci_summary ) assert ( - "aiguard_optional_present_types: edgeenv_orchestrator_stale_drop_summary, stale_frame_risk" + "aiguard_optional_present_types: " + "edgeenv_orchestrator_pressure_window_summary, " + "edgeenv_orchestrator_stale_drop_summary, stale_frame_risk" in ci_summary ) assert "aiguard_optional_present_missing_types: none" in ci_summary