fix(agent99): separate external self health from deploy gate
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 2m34s
CD Pipeline / build-and-deploy (push) Successful in 15m35s
AWOOOI Harbor 110 Local Repair / workflow-shape (push) Successful in 0s
AWOOOI Harbor 110 Local Repair / harbor-110-local-repair (push) Successful in 16s
CD Pipeline / post-deploy-checks (push) Successful in 2m5s

This commit is contained in:
ogt
2026-07-15 00:06:29 +08:00
parent e53bdf458b
commit b20d633aa2
3 changed files with 8 additions and 4 deletions

View File

@@ -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" }
}

View File

@@ -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",),
(),
),
(

View File

@@ -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