fix(agent): separate registry-ready deploy marker blocker
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 21s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped

This commit is contained in:
Your Name
2026-07-01 16:22:57 +08:00
parent 51cfccb35c
commit 6f1feef6a2
7 changed files with 507 additions and 40 deletions

View File

@@ -83,6 +83,15 @@ def _assert_executor_readback(payload: dict, *, public_endpoint: bool = False):
]
== 8
)
assert payload["rollups"]["current_blocker_registry_v2_ready_count"] == 1
assert (
payload["rollups"]["current_blocker_deploy_marker_readback_required_count"]
== 1
)
assert (
payload["rollups"]["current_blocker_cd_failure_after_registry_ready_count"]
== 1
)
assert payload["rollups"]["runtime_dispatch_performed"] is False
batches = {batch["target"]: batch for batch in payload["execution_batches"]}
@@ -150,7 +159,27 @@ def _assert_executor_readback(payload: dict, *, public_endpoint: bool = False):
assert current_queue[0]["runner_label"] == "awoooi-non110-host"
assert current_queue[0]["node_load_classifier"] == "load_not_high"
assert current_queue[0]["node_load_high"] is False
assert current_queue[0]["registry_v2_status"] == 502
assert current_queue[0]["registry_v2_status"] == 401
assert current_queue[0]["registry_v2_ready"] is True
assert current_queue[0]["registry_v2_status_classifier"] == (
"ready_auth_required_http_401"
)
assert current_queue[0]["deployment_closure_state"] == (
"blocked_latest_visible_cd_failure_after_registry_ready"
)
assert current_queue[0]["deploy_marker_readback_required"] is True
assert current_queue[0]["current_cd_run_id"] == "4258"
assert current_queue[0]["current_cd_run_status"] == "Failure"
assert current_queue[0]["current_cd_commit_sha"] == (
"06819ea96c058e7987811e853242390eaced7f91"
)
assert current_queue[0]["cd_failed_after_registry_ready"] is True
assert current_queue[0]["harbor_110_repair_run_id"] == "4255"
assert current_queue[0]["harbor_110_repair_run_status"] == "Failure"
assert current_queue[0]["harbor_110_repair_failed_after_registry_ready"] is True
assert current_queue[0]["harbor_110_repair_failure_classifier"] == (
"harbor_110_remote_ssh_publickey_auth_stalled"
)
assert current_queue[0]["log_source_tag_count"] == 10
source_tags = {
item["tag_key"]: item for item in current_queue[0]["log_source_tags"]
@@ -231,7 +260,7 @@ def _assert_executor_readback(payload: dict, *, public_endpoint: bool = False):
]
for item in current_queue[0]["harbor_recovery_receipt_output_contract"]
)
assert current_queue[0]["queue_readback_normalizer_contract_count"] == 11
assert current_queue[0]["queue_readback_normalizer_contract_count"] == 14
assert [
item["field_id"]
for item in current_queue[0]["queue_readback_normalizer_contract"]
@@ -244,6 +273,9 @@ def _assert_executor_readback(payload: dict, *, public_endpoint: bool = False):
"latest_visible_harbor_110_repair_remote_ssh_publickey_offer_timeout",
"latest_visible_harbor_110_repair_remote_ssh_server_accepts_key_then_session_timeout",
"current_cd_workflow_runner_readiness",
"current_cd_deploy_marker_closure",
"registry_v2_ready_state",
"harbor_110_repair_failure_after_registry_ready",
"harbor_110_repair_visible_running_jobs_api_stale",
"current_cd_waiting_behind_harbor_110_repair_running",
"controlled_profile_no_matching_runner_labels",

View File

@@ -112,19 +112,28 @@ def test_awoooi_priority_work_order_readback_endpoint_returns_snapshot(
assert response.status_code == 200
data = response.json()
assert data["status"] == "p0_006_blocked_reboot_auto_recovery_slo_not_ready"
assert data["status"] == "p0_006_blocked_ai_loop_current_blocker_execution_queue"
assert data["mainline_execution_state"]["active_p0_workplan_id"] == "P0-006"
assert data["mainline_execution_state"]["active_p0_state"] == (
"blocked_reboot_auto_recovery_slo_not_ready"
"blocked_ai_loop_current_blocker_execution_queue"
)
assert data["mainline_execution_state"][
"next_executable_mainline_workplan_id"
] == "P0-006-REBOOT-AUTO-RECOVERY-SLO-SCORECARD"
] == "P0-006-AI-LOOP-CURRENT-BLOCKER-EXECUTION-QUEUE"
assert (
data["mainline_execution_state"]["ai_loop_current_blocker_registry_v2_ready"]
is True
)
assert data["mainline_execution_state"][
"ai_loop_current_blocker_deploy_marker_readback_required"
] is True
assert data["mainline_execution_state"]["p0_004_template_copy_apply_gate_runtime_readback_state"] == "ready"
assert data["mainline_execution_state"]["reboot_drill_preflight_runtime_readback_state"] == "blocked"
assert data["rollups"]["stockplatform_public_api_runtime_ready"] is True
assert data["next_execution_order"][0].startswith("P0-006:")
assert "reboot SLO scorecard is blocked" in data["next_execution_order"][0]
assert data["next_execution_order"][0].startswith(
"P0-006-AI-LOOP-CURRENT-BLOCKER-EXECUTION-QUEUE"
)
assert "do not reopen Harbor 502" in data["next_execution_order"][0]
def test_awoooi_priority_work_order_readback_endpoint_redacts_ai_loop_queue(
@@ -265,12 +274,61 @@ def test_awoooi_priority_work_order_readback_overlays_ai_loop_current_blocker_qu
)
assert state["ai_loop_current_blocker_control_path_pressure_blocker"] == ""
assert state["ai_loop_current_blocker_node_load_classifier"] == "load_not_high"
assert state["ai_loop_current_blocker_registry_v2_ready"] is True
assert state["ai_loop_current_blocker_registry_v2_status_classifier"] == (
"ready_auth_required_http_401"
)
assert state["ai_loop_current_blocker_deployment_closure_state"] == (
"blocked_latest_visible_cd_failure_after_registry_ready"
)
assert state["ai_loop_current_blocker_deploy_marker_readback_required"] is True
assert state["ai_loop_current_blocker_current_cd_run_id"] == "4258"
assert state["ai_loop_current_blocker_current_cd_run_status"] == "Failure"
assert state["ai_loop_current_blocker_cd_failed_after_registry_ready"] is True
assert state["ai_loop_current_blocker_harbor_110_repair_run_id"] == "4255"
assert state["ai_loop_current_blocker_harbor_110_repair_run_status"] == (
"Failure"
)
assert state["ai_loop_current_blocker_harbor_110_repair_failure_classifier"] == (
"harbor_110_remote_ssh_publickey_auth_stalled"
)
assert evidence["ai_loop_current_blocker_execution_queue_count"] == 1
assert evidence["ai_loop_current_blocker_id"] == (
"harbor_110_remote_ssh_publickey_auth_stalled"
)
assert evidence["ai_loop_current_blocker_runner_label"] == "awoooi-non110-host"
assert evidence["ai_loop_current_blocker_registry_v2_status"] == 502
assert evidence["ai_loop_current_blocker_registry_v2_status"] == 401
assert evidence["ai_loop_current_blocker_registry_v2_ready"] is True
assert evidence["ai_loop_current_blocker_registry_v2_status_classifier"] == (
"ready_auth_required_http_401"
)
assert evidence["ai_loop_current_blocker_deployment_closure_state"] == (
"blocked_latest_visible_cd_failure_after_registry_ready"
)
assert (
evidence["ai_loop_current_blocker_deploy_marker_readback_required"]
is True
)
assert evidence["ai_loop_current_blocker_current_cd_run_id"] == "4258"
assert evidence["ai_loop_current_blocker_current_cd_run_status"] == "Failure"
assert (
evidence["ai_loop_current_blocker_current_cd_commit_sha"]
== "06819ea96c058e7987811e853242390eaced7f91"
)
assert evidence["ai_loop_current_blocker_cd_failed_after_registry_ready"] is True
assert evidence["ai_loop_current_blocker_harbor_110_repair_run_id"] == "4255"
assert evidence["ai_loop_current_blocker_harbor_110_repair_run_status"] == (
"Failure"
)
assert evidence["ai_loop_current_blocker_harbor_110_repair_failure_classifier"] == (
"harbor_110_remote_ssh_publickey_auth_stalled"
)
assert (
evidence[
"ai_loop_current_blocker_harbor_110_repair_failed_after_registry_ready"
]
is True
)
assert evidence["ai_loop_current_blocker_controlled_recovery_package"] == (
"recover-110-control-path-and-harbor-local.sh --check"
)
@@ -370,6 +428,9 @@ def test_awoooi_priority_work_order_readback_overlays_ai_loop_current_blocker_qu
"latest_visible_harbor_110_repair_remote_ssh_publickey_offer_timeout",
"latest_visible_harbor_110_repair_remote_ssh_server_accepts_key_then_session_timeout",
"current_cd_workflow_runner_readiness",
"current_cd_deploy_marker_closure",
"registry_v2_ready_state",
"harbor_110_repair_failure_after_registry_ready",
"harbor_110_repair_visible_running_jobs_api_stale",
"current_cd_waiting_behind_harbor_110_repair_running",
"controlled_profile_no_matching_runner_labels",
@@ -433,6 +494,26 @@ def test_awoooi_priority_work_order_readback_overlays_ai_loop_current_blocker_qu
assert payload["summary"]["ai_loop_current_blocker_id"] == (
"harbor_110_remote_ssh_publickey_auth_stalled"
)
assert payload["summary"]["ai_loop_current_blocker_registry_v2_ready"] is True
assert payload["summary"]["ai_loop_current_blocker_deployment_closure_state"] == (
"blocked_latest_visible_cd_failure_after_registry_ready"
)
assert (
payload["summary"][
"ai_loop_current_blocker_deploy_marker_readback_required"
]
is True
)
assert payload["summary"]["ai_loop_current_blocker_current_cd_run_status"] == (
"Failure"
)
assert (
payload["summary"]["ai_loop_current_blocker_cd_failed_after_registry_ready"]
is True
)
assert payload["summary"][
"ai_loop_current_blocker_harbor_110_repair_failure_classifier"
] == "harbor_110_remote_ssh_publickey_auth_stalled"
assert payload["summary"]["ai_loop_current_blocker_control_path_pressure_blocker"] == ""
assert payload["summary"]["ai_loop_current_blocker_node_load_classifier"] == (
"load_not_high"
@@ -466,7 +547,7 @@ def test_awoooi_priority_work_order_readback_overlays_ai_loop_current_blocker_qu
payload["summary"][
"ai_loop_current_blocker_queue_readback_normalizer_contract_count"
]
== 11
== 14
)
assert payload["summary"][
"ai_loop_current_blocker_queue_readback_normalizer_field_ids"
@@ -483,9 +564,9 @@ def test_awoooi_priority_work_order_readback_overlays_ai_loop_current_blocker_qu
assert payload["next_execution_order"][0].startswith(
"P0-006-AI-LOOP-CURRENT-BLOCKER-EXECUTION-QUEUE"
)
assert "5 ordered local-console phases" in payload["next_execution_order"][0]
assert "Harbor receipt inputs" in payload["next_execution_order"][0]
assert "normalized queue classifiers" in payload["next_execution_order"][0]
assert "already 401" in payload["next_execution_order"][0]
assert "do not reopen Harbor 502" in payload["next_execution_order"][0]
assert "P0-006-CD-DEPLOY-MARKER-READBACK" in payload["next_execution_order"][1]
def test_awoooi_priority_work_order_readback_overlays_live_stockplatform_drift():