diff --git a/docs/ci/runtime_intelligence_gitlab_artifacts.md b/docs/ci/runtime_intelligence_gitlab_artifacts.md index 2ea5e43..d2f6b88 100644 --- a/docs/ci/runtime_intelligence_gitlab_artifacts.md +++ b/docs/ci/runtime_intelligence_gitlab_artifacts.md @@ -165,6 +165,7 @@ AIGuard artifact. The same manifest gate requires `expected_report_markers` to match the Lab-owned Runtime Intelligence report contract before optional CI artifact packaging runs. That marker set preserves `Runtime Intelligence Risk Summary`, +`Runtime replay duration scope`, `Orchestrator operation feed context`, `Orchestrator task event rollup`, `Lab EdgeEnv preservation context`, `AIGuard task event rollup evidence`, @@ -185,7 +186,7 @@ EdgeEnv handoff summary and AIGuard deterministic evidence agree on producer-lineage guard-alignment run IDs. This keeps the cross-repo marker check file-based and does not make AIGuard a deployment decision owner. -The artifact gate is implemented by `scripts/check_runtime_intelligence_artifact_bundle.py`. It checks the generated Markdown / HTML report for the required Runtime Intelligence rows, including Lab ownership, EdgeEnv comparability, telemetry coverage-gap markers, Orchestrator operation feed context, Orchestrator task event rollup, Lab EdgeEnv preservation context, Jetson/device-local preservation identity and detail labels, Orchestrator `operation_risk_summary` navigation context, AIGuard runtime operation anomalies, AIGuard `edgeenv_orchestrator_operation_risk_summary` evidence, AIGuard `edgeenv_orchestrator_task_event_rollup` evidence, remote dispatch starter event summary, `Remote fallback starter evidence`, `edgeenv_orchestrator_producer_lineage`, `runtime_history_seed_run_config_traceability`, `remote_execution_recovered_by_fallback`, and triggered deployment review rules. +The artifact gate is implemented by `scripts/check_runtime_intelligence_artifact_bundle.py`. It checks the generated Markdown / HTML report for the required Runtime Intelligence rows, including Lab ownership, EdgeEnv comparability, telemetry coverage-gap markers, Runtime replay duration scope, Orchestrator operation feed context, Orchestrator task event rollup, Lab EdgeEnv preservation context, Jetson/device-local preservation identity and detail labels, Orchestrator `operation_risk_summary` navigation context, AIGuard runtime operation anomalies, AIGuard `edgeenv_orchestrator_operation_risk_summary` evidence, AIGuard `edgeenv_orchestrator_task_event_rollup` evidence, remote dispatch starter event summary, `Remote fallback starter evidence`, `edgeenv_orchestrator_producer_lineage`, `runtime_history_seed_run_config_traceability`, `remote_execution_recovered_by_fallback`, and triggered deployment review rules. The CI artifact gate is implemented by `scripts/check_runtime_intelligence_ci_artifacts.py`. It runs in the deployment-risk stage and verifies that the collected optional GitLab artifacts include the manifest gate summary, AIGuard handoff alignment artifact, report gate summary, Runtime Intelligence Risk Summary report, portfolio demo status, and the validated contract markers from the bundle manifest gate. This keeps the final CI gate file-based and deterministic without turning GitLab into a runtime control plane. The same CI artifact gate also checks the copied diff --git a/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md b/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md index af11a4b..cc0472c 100644 --- a/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md +++ b/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md @@ -175,7 +175,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`, `Orchestrator operation feed context`, `Orchestrator task event rollup`, `Lab EdgeEnv preservation context`, `AIGuard task event rollup 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`, `Orchestrator task event rollup`, `Lab EdgeEnv preservation context`, `AIGuard task event rollup 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 gate summary emits `expected_report_markers: remote fallback Lab context row declared`, keeping the remote fallback row-value marker visible in file-based CI artifacts without making CI a runtime control plane. - The same handoff gate verifies that the referenced `runtime_telemetry_history` artifact exists and preserves EdgeEnv history schema, telemetry coverage, and Runtime history seed ownership markers. - The same handoff gate verifies that missing telemetry entries remain evidence gaps while preserving Orchestrator producer markers, owner boundary flags, and EdgeEnv mapping hints when Orchestrator context is attached. @@ -188,6 +188,7 @@ Expected Lab behavior: - Additional Lab test fixtures under `tests/fixtures/edgeenv_regression/` mirror EdgeEnv replay examples for candidate telemetry gaps and execution sequence inversion. These fixture smokes verify that replay warnings become Lab-owned report context without making Lab recompute EdgeEnv comparability. - Markdown/HTML reports include a `Runtime Intelligence Risk Summary` that summarizes EdgeEnv comparability/regression, telemetry replay gaps, Runtime history seed/run_config traceability, AIGuard deterministic evidence, and the Lab-owned deployment decision in one reviewer-facing table. - When EdgeEnv includes preserved Orchestrator feed context, the `Runtime Intelligence Risk Summary` surfaces queue, thermal, throttling, memory, fallback context, and compact `operation_risk_summary` markers as supplemental runtime evidence. +- When EdgeEnv includes replay duration metadata, the same Risk Summary surfaces `Runtime replay duration scope` with `duration_label`, `duration_class`, and frame count as reviewer navigation context. This does not change EdgeEnv comparability or Lab deployment policy. - The Jetson/device-local preservation row starts with `identity=jetson_device_local_preservation` and the device-local path marker such as `path=device_local_starter` when available, making the preserved Jetson EdgeEnv run easier to identify before reviewers inspect detailed queue/resource context. - The detailed producer/source/stage/resource markers are rendered in a separate `Jetson/device-local EdgeEnv preservation details` row so the identity row stays short while preserving the same navigation context. - Agent Runtime Reliability reports now mirror the same reviewer-facing split inside `Runtime Intelligence EdgeEnv Preservation`: `preservation_identity` keeps the run/path identity short, while `preservation_details` carries source, stage, device-local event, resource, and queue markers as navigation context. diff --git a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.json b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.json index 887ee60..91213b7 100644 --- a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.json +++ b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.json @@ -8,9 +8,10 @@ "guard_analysis_schema_version": "inferedge-aiguard-diagnosis-v1", "required_evidence_type_count": 7, "guard_evidence_type_count": 8, - "lab_expected_report_marker_count": 12, + "lab_expected_report_marker_count": 13, "lab_expected_report_markers": [ "Runtime Intelligence Risk Summary", + "Runtime replay duration scope", "Orchestrator operation feed context", "Orchestrator task event rollup", "Lab EdgeEnv preservation context", diff --git a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.md b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.md index 2f40f8f..f699936 100644 --- a/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.md +++ b/examples/runtime_intelligence_chain/aiguard_edgeenv_handoff_alignment.md @@ -4,7 +4,7 @@ - recommendation: alignment_satisfied - decision_owner: lab - diagnosis_owner: aiguard -- lab_expected_report_markers: Runtime Intelligence Risk Summary, Orchestrator operation feed context, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard task event rollup 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, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard task event rollup 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 - required_evidence_types: runtime_telemetry_context_coverage, edgeenv_orchestrator_producer_lineage, edgeenv_orchestrator_task_event_rollup, runtime_history_seed_run_config_traceability, runtime_queue_overload, runtime_thermal_instability, remote_execution_recovered_by_fallback diff --git a/examples/runtime_intelligence_chain/bundle_manifest.json b/examples/runtime_intelligence_chain/bundle_manifest.json index db6ab4e..c4fb27b 100644 --- a/examples/runtime_intelligence_chain/bundle_manifest.json +++ b/examples/runtime_intelligence_chain/bundle_manifest.json @@ -47,6 +47,7 @@ }, "expected_report_markers": [ "Runtime Intelligence Risk Summary", + "Runtime replay duration scope", "Orchestrator operation feed context", "Orchestrator task event rollup", "Lab EdgeEnv preservation context", diff --git a/examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json b/examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json index dd192c5..f7d11fa 100644 --- a/examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json +++ b/examples/runtime_intelligence_chain/edgeenv_lab_handoff_manifest.json @@ -68,6 +68,7 @@ ], "expected_report_markers": [ "Runtime Intelligence Risk Summary", + "Runtime replay duration scope", "Orchestrator operation feed context", "Orchestrator task event rollup", "Lab EdgeEnv preservation context", diff --git a/examples/runtime_intelligence_chain/edgeenv_regression_with_orchestrator_context.json b/examples/runtime_intelligence_chain/edgeenv_regression_with_orchestrator_context.json index f0e249d..47f027f 100644 --- a/examples/runtime_intelligence_chain/edgeenv_regression_with_orchestrator_context.json +++ b/examples/runtime_intelligence_chain/edgeenv_regression_with_orchestrator_context.json @@ -123,6 +123,9 @@ "schema_version": "inferedge-runtime-telemetry.v1", "telemetry_source": "synthetic_local_fixture", "telemetry_timestamp": "2026-05-21T00:05:01Z", + "frames": 96, + "duration_class": "short_96_frame_class", + "duration_label": "short 96-frame-class replay (96 frames)", "telemetry_coverage": { "schema_version": "inferedge-runtime-telemetry-coverage-v1", "expected_fields": [ @@ -233,6 +236,9 @@ }, "producer": { "operation_context_role": "supplemental", + "frames": 96, + "duration_class": "short_96_frame_class", + "duration_label": "short 96-frame-class replay (96 frames)", "producer_sources": [ "device_local_cli_override", "orchestration_summary" diff --git a/scripts/check_runtime_intelligence_artifact_bundle.py b/scripts/check_runtime_intelligence_artifact_bundle.py index b019948..0978f70 100644 --- a/scripts/check_runtime_intelligence_artifact_bundle.py +++ b/scripts/check_runtime_intelligence_artifact_bundle.py @@ -29,6 +29,11 @@ "| Orchestrator operation risk summary | candidate: " "queue=queue_backlog_threshold_exceeded" ), + "runtime_replay_duration_scope": ( + "| Runtime replay duration scope | candidate: " + "label=short 96-frame-class replay (96 frames), " + "class=short_96_frame_class, frames=96 |" + ), "jetson_edgeenv_preservation_identity": ( "| Jetson/device-local EdgeEnv preservation run | candidate: " "identity=jetson_device_local_preservation, path=device_local_starter, " @@ -143,6 +148,8 @@ "remote_fallback_lab_context_marker": "lab=Remote fallback starter evidence", "aiguard_orchestrator_handoff": "AIGuard Orchestrator context handoff", "orchestrator_operation_risk_summary": "Orchestrator operation risk summary", + "runtime_replay_duration_scope": "Runtime replay duration scope", + "runtime_replay_duration_label": "short 96-frame-class replay (96 frames)", "orchestrator_task_event_rollup": "Orchestrator task event rollup", "lab_edgeenv_preservation_context": "Lab EdgeEnv preservation context", "lab_edgeenv_preservation_context_marker": ( diff --git a/scripts/check_runtime_intelligence_bundle_manifest.py b/scripts/check_runtime_intelligence_bundle_manifest.py index 520c9db..2fd3005 100644 --- a/scripts/check_runtime_intelligence_bundle_manifest.py +++ b/scripts/check_runtime_intelligence_bundle_manifest.py @@ -124,6 +124,7 @@ VALID_GUARD_EVIDENCE_SEVERITIES = {"low", "medium", "high", "critical"} REQUIRED_EXPECTED_REPORT_MARKERS = { "Runtime Intelligence Risk Summary", + "Runtime replay duration scope", "Orchestrator operation feed context", "Orchestrator task event rollup", "Lab EdgeEnv preservation context", diff --git a/scripts/check_runtime_intelligence_ci_artifacts.py b/scripts/check_runtime_intelligence_ci_artifacts.py index 7e17dc8..a4d8089 100644 --- a/scripts/check_runtime_intelligence_ci_artifacts.py +++ b/scripts/check_runtime_intelligence_ci_artifacts.py @@ -68,6 +68,7 @@ ) REQUIRED_LAB_EXPECTED_REPORT_MARKERS = ( "Runtime Intelligence Risk Summary", + "Runtime replay duration scope", "Orchestrator operation feed context", "Orchestrator task event rollup", "Lab EdgeEnv preservation context", @@ -150,6 +151,8 @@ def _validate_runtime_report(path: Path, errors: list[str]) -> None: return for marker in ( "## Runtime Intelligence Risk Summary", + "Runtime replay duration scope", + "short 96-frame-class replay (96 frames)", "Lab remains the final deployment decision owner.", "AIGuard runtime operation anomalies", "runtime_queue_overload, runtime_thermal_instability", @@ -286,7 +289,8 @@ def _validate_aiguard_handoff_alignment( "decision_owner: lab", "diagnosis_owner: aiguard", "lab_expected_report_markers: " - "Runtime Intelligence Risk Summary, Orchestrator operation feed context, " + "Runtime Intelligence Risk Summary, Runtime replay duration scope, " + "Orchestrator operation feed context, " "Orchestrator task event rollup, " "Lab EdgeEnv preservation context, " "AIGuard task event rollup evidence, " diff --git a/tests/test_runtime_intelligence_artifact_gate.py b/tests/test_runtime_intelligence_artifact_gate.py index 2441653..b49d225 100644 --- a/tests/test_runtime_intelligence_artifact_gate.py +++ b/tests/test_runtime_intelligence_artifact_gate.py @@ -52,6 +52,9 @@ def test_runtime_intelligence_artifact_gate_passes_for_chain_report(tmp_path): assert "- Status: passed" in summary assert "- Missing Markdown markers: 0" in summary assert "- Missing HTML markers: 0" in summary + markdown = markdown_path.read_text(encoding="utf-8") + assert "Runtime replay duration scope" in markdown + assert "short 96-frame-class replay (96 frames)" in markdown def test_runtime_intelligence_artifact_gate_cli_passes_for_chain_report(tmp_path): diff --git a/tests/test_runtime_intelligence_ci_template.py b/tests/test_runtime_intelligence_ci_template.py index f841346..d752a5d 100644 --- a/tests/test_runtime_intelligence_ci_template.py +++ b/tests/test_runtime_intelligence_ci_template.py @@ -92,6 +92,8 @@ def test_runtime_intelligence_ci_artifact_gate_passes_for_expected_outputs(tmp_p "\n".join( [ "## Runtime Intelligence Risk Summary", + "Runtime replay duration scope", + "short 96-frame-class replay (96 frames)", "Lab remains the final deployment decision owner.", "AIGuard runtime operation anomalies", "runtime_queue_overload, runtime_thermal_instability", @@ -175,9 +177,10 @@ 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":12,' + '"lab_expected_report_marker_count":13,' '"lab_expected_report_markers":[' '"Runtime Intelligence Risk Summary",' + '"Runtime replay duration scope",' '"Orchestrator operation feed context",' '"Orchestrator task event rollup",' '"Lab EdgeEnv preservation context",' @@ -205,7 +208,7 @@ 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, Orchestrator operation feed context, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard task event rollup 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, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard task event rollup 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", "- handoff_producer_lineage_guard_alignment_run_ids: edgeenv-smoke-candidate, edgeenv-smoke-missing", @@ -295,6 +298,8 @@ def test_runtime_intelligence_ci_artifact_gate_fails_for_missing_lab_marker_cont "\n".join( [ "## Runtime Intelligence Risk Summary", + "Runtime replay duration scope", + "short 96-frame-class replay (96 frames)", "Lab remains the final deployment decision owner.", "AIGuard runtime operation anomalies", "runtime_queue_overload, runtime_thermal_instability", @@ -436,6 +441,8 @@ def test_runtime_intelligence_ci_artifact_gate_fails_for_missing_contract_marker "\n".join( [ "## Runtime Intelligence Risk Summary", + "Runtime replay duration scope", + "short 96-frame-class replay (96 frames)", "Lab remains the final deployment decision owner.", "AIGuard runtime operation anomalies", "runtime_queue_overload, runtime_thermal_instability", @@ -517,6 +524,8 @@ def test_runtime_intelligence_ci_artifact_gate_fails_for_missing_coverage_gap_ma "\n".join( [ "## Runtime Intelligence Risk Summary", + "Runtime replay duration scope", + "short 96-frame-class replay (96 frames)", "Lab remains the final deployment decision owner.", "AIGuard runtime operation anomalies", "runtime_queue_overload, runtime_thermal_instability", @@ -583,6 +592,8 @@ def test_runtime_intelligence_ci_artifact_gate_fails_for_failed_deployment_risk( "\n".join( [ "## Runtime Intelligence Risk Summary", + "Runtime replay duration scope", + "short 96-frame-class replay (96 frames)", "Lab remains the final deployment decision owner.", "AIGuard runtime operation anomalies", "runtime_queue_overload, runtime_thermal_instability", @@ -666,9 +677,10 @@ def test_runtime_intelligence_ci_artifact_gate_fails_for_failed_deployment_risk( (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":12,' + '"lab_expected_report_marker_count":13,' '"lab_expected_report_markers":[' '"Runtime Intelligence Risk Summary",' + '"Runtime replay duration scope",' '"Orchestrator operation feed context",' '"Orchestrator task event rollup",' '"Lab EdgeEnv preservation context",' @@ -696,7 +708,7 @@ def test_runtime_intelligence_ci_artifact_gate_fails_for_failed_deployment_risk( "- status: passed", "- decision_owner: lab", "- diagnosis_owner: aiguard", - "- lab_expected_report_markers: Runtime Intelligence Risk Summary, Orchestrator operation feed context, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard task event rollup 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, Orchestrator task event rollup, Lab EdgeEnv preservation context, AIGuard task event rollup 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", "- handoff_producer_lineage_guard_alignment_run_ids: edgeenv-smoke-candidate, edgeenv-smoke-missing", diff --git a/tests/test_runtime_intelligence_evidence_chain_smoke.py b/tests/test_runtime_intelligence_evidence_chain_smoke.py index 73d135b..83ad482 100644 --- a/tests/test_runtime_intelligence_evidence_chain_smoke.py +++ b/tests/test_runtime_intelligence_evidence_chain_smoke.py @@ -482,6 +482,9 @@ def test_compare_cmd_runtime_intelligence_chain_writes_markdown_and_html( assert "Runtime telemetry coverage gaps" in markdown assert "Runtime telemetry history seed" in markdown assert "Runtime history seed run_config" in markdown + assert "Runtime replay duration scope" in markdown + assert "short 96-frame-class replay (96 frames)" in markdown + assert "class=short_96_frame_class, frames=96" in markdown assert "runtime_telemetry_field_gap" in markdown assert "coverage_missing_fields" in markdown assert "queue_depth" in markdown @@ -553,6 +556,8 @@ def test_compare_cmd_runtime_intelligence_chain_writes_markdown_and_html( assert "device_local_cli_override" in html assert "Runtime telemetry history seed" in html assert "Runtime history seed run_config" in html + assert "Runtime replay duration scope" in html + assert "short 96-frame-class replay (96 frames)" in html assert "AIGuard history seed run_config markers" in html assert "AIGuard run_config traceability evidence" in html assert "runtime_history_seed_run_config_traceability" in html diff --git a/tests/test_runtime_intelligence_smoke_script.py b/tests/test_runtime_intelligence_smoke_script.py index 4edd7f1..debc7fc 100644 --- a/tests/test_runtime_intelligence_smoke_script.py +++ b/tests/test_runtime_intelligence_smoke_script.py @@ -120,6 +120,13 @@ def test_runtime_intelligence_smoke_script_runs_artifact_chain(tmp_path): in bundle_summary ) + runtime_summary = (output_dir / "runtime_anomaly_summary.md").read_text( + encoding="utf-8" + ) + assert "Runtime replay duration scope" in runtime_summary + assert "short 96-frame-class replay (96 frames)" in runtime_summary + assert "class=short_96_frame_class, frames=96" in runtime_summary + alignment_summary = ( output_dir / "aiguard_edgeenv_handoff_alignment.md" ).read_text(encoding="utf-8")