diff --git a/scripts/reboot-recovery/agent99-live-preflight.ps1 b/scripts/reboot-recovery/agent99-live-preflight.ps1 index 1860b99dd..ecf9049c7 100644 --- a/scripts/reboot-recovery/agent99-live-preflight.ps1 +++ b/scripts/reboot-recovery/agent99-live-preflight.ps1 @@ -71,7 +71,11 @@ function Get-AgentLivePreflightDecision { $warningReasons += "performance_warning" } } - "critical" { $blockingReasons += "self_health_critical" } + # Self-health also aggregates external host performance and Telegram + # delivery. Keep the preflight exit degraded, but emit the receiver's + # canonical external-health reason so unrelated asset pressure cannot be + # mistaken for a runtime-plane integrity failure. + "critical" { $blockingReasons += "self_health_not_ok" } default { $blockingReasons += "self_health_unclassified" } } diff --git a/scripts/reboot-recovery/tests/test_agent99_live_preflight_decision.py b/scripts/reboot-recovery/tests/test_agent99_live_preflight_decision.py index ef96b054e..a2acf14d8 100644 --- a/scripts/reboot-recovery/tests/test_agent99_live_preflight_decision.py +++ b/scripts/reboot-recovery/tests/test_agent99_live_preflight_decision.py @@ -109,7 +109,7 @@ def test_warning_receipt_is_visible_without_weakening_integrity_blockers() -> No assert '$warningReasons += "self_health_warning"' in decision assert '$warningReasons += "performance_warning"' in decision assert '$warningReasons += "fresh_alert_pending_next_inbox_tick"' in decision - assert '"critical" { $blockingReasons += "self_health_critical" }' in decision + assert '"critical" { $blockingReasons += "self_health_not_ok" }' in decision assert 'default { $blockingReasons += "self_health_unclassified" }' in decision assert '$blockingReasons += "runtime_manifest_identity_invalid"' in decision assert '$blockingReasons += "runtime_manifest_mismatch"' in decision @@ -148,7 +148,7 @@ def test_decision_behavior_when_powershell_is_available() -> None: ( _with_overrides(selfHealthSeverity="critical"), False, - ("self_health_critical",), + ("self_health_not_ok",), (), ), ( diff --git a/scripts/reboot-recovery/tests/test_agent99_recovery_coordinator_contract.py b/scripts/reboot-recovery/tests/test_agent99_recovery_coordinator_contract.py index a0a02ca71..b668a3df8 100644 --- a/scripts/reboot-recovery/tests/test_agent99_recovery_coordinator_contract.py +++ b/scripts/reboot-recovery/tests/test_agent99_recovery_coordinator_contract.py @@ -162,7 +162,7 @@ def test_live_preflight_is_no_secret_and_no_remote_write() -> None: assert '"warning" {' in preflight assert '$warningReasons += "self_health_warning"' in preflight assert '$warningReasons += "performance_warning"' in preflight - assert '"critical" { $blockingReasons += "self_health_critical" }' in preflight + assert '"critical" { $blockingReasons += "self_health_not_ok" }' in preflight assert 'default { $blockingReasons += "self_health_unclassified" }' in preflight assert 'if ($selfHealthSeverity -ne "ok")' not in preflight assert 'Write-Output "DEPLOYMENT_ELIGIBLE=$([int]$result.summary.deploymentEligible)"' in preflight