123 lines
6.8 KiB
JSON
123 lines
6.8 KiB
JSON
{
|
||
"schema_version": "awoooi_production_deploy_readback_blocker_v1",
|
||
"generated_at": "2026-06-29T11:08:12+08:00",
|
||
"status": "blocked_production_image_not_current",
|
||
"priority": "P0",
|
||
"scope": "awoooi_production_truth",
|
||
"readback": {
|
||
"observed_source_control_main_sha": "f3634db18477a06af94ec4eae227ee96378aae0a",
|
||
"observed_source_control_main_short_sha": "f3634db18477",
|
||
"governance_closure_merge_sha": "27b96f0450d0e3ca6651d6b5f274a341dd727ef2",
|
||
"governance_closure_commit_sha": "9e3e7fbb6ba3ffd324b45abf3ad1e7b6ec826b22",
|
||
"production_image_tag_sha": "af45811e876fda322ee63c036fbc39c9f07ffd76",
|
||
"production_image_tag_short_sha": "af45811e87",
|
||
"production_image_tag_matches_main": false,
|
||
"production_preflight_http_status": 200,
|
||
"production_workbench_http_status": 200,
|
||
"production_internal_governance_writeback_present": false,
|
||
"production_workbench_governance_ready_present": false,
|
||
"latest_visible_cd_run_id": "3853",
|
||
"latest_visible_cd_run_status": "Waiting",
|
||
"latest_visible_cd_run_jobs_total_count": 0,
|
||
"latest_visible_cd_run_commit_short_sha": "1e68f9ff27",
|
||
"gitea_actions_list_without_token_http_status": 401,
|
||
"gitea_actions_list_without_token_message": "token is required",
|
||
"latest_visible_waiting_runner_run_id": "",
|
||
"latest_visible_waiting_runner_workflow": "",
|
||
"latest_visible_waiting_runner_kind": "",
|
||
"latest_visible_waiting_runner_status": "",
|
||
"latest_visible_waiting_runner_label": "",
|
||
"public_actions_queue_readback_schema_version": "awoooi_public_gitea_actions_queue_readback_v1",
|
||
"public_actions_queue_readback_verifier": "ops/runner/read-public-gitea-actions-queue.py --json",
|
||
"non110_runner_cd_closure_verifier_schema_version": "awoooi_non110_cd_closure_verifier_v1",
|
||
"non110_runner_cd_closure_verifier": "ops/runner/verify-awoooi-non110-cd-closure.py --production-deploy-snapshot-json-file docs/operations/awoooi-production-deploy-readback-blocker.snapshot.json --readiness-file <sanitized-non110-readiness.txt> --queue-json-file <public-actions-queue.json> --production-workbench-json-file <delivery-closure-workbench.json> --json",
|
||
"non110_runner_cd_closure_status": "blocked_production_image_not_current",
|
||
"non110_runner_cd_closure_required": true,
|
||
"non110_runner_cd_closure_ordered_step_count": 6,
|
||
"non110_runner_cd_closure_ordered_completed_prefix_count": 4,
|
||
"non110_runner_cd_closure_evidence_completed_step_count": 4,
|
||
"non110_runner_cd_closure_ordered_completion_percent": 67,
|
||
"non110_runner_cd_closure_evidence_completion_percent": 67,
|
||
"non110_runner_cd_closure_next_blocked_step_index": 5,
|
||
"non110_runner_cd_closure_next_blocked_step_id": "production_image_tag_current",
|
||
"non110_runner_cd_closure_next_blocked_step_action": "complete_authorized_cd_then_verify_image_tag_matches_main",
|
||
"current_main_cd_run_visible": false,
|
||
"manual_run_button_visible": false,
|
||
"gitea_sign_in_required": true,
|
||
"dispatch_without_token_http_status": 401,
|
||
"dispatch_without_token_message": "token is required",
|
||
"authorized_dispatch_channel_ready": false,
|
||
"non110_runner_prepare_only_source_ready": true,
|
||
"non110_runner_safe_registration_helper_ready": true,
|
||
"non110_runner_workflow_labels_aligned": true,
|
||
"non110_runner_host_label": "awoooi-non110-host",
|
||
"non110_runner_ubuntu_label": "awoooi-non110-ubuntu",
|
||
"non110_runner_online_label_match": true,
|
||
"non110_runner_autostart_path_armed": true,
|
||
"non110_runner_ready_autostart_path_count": 1,
|
||
"non110_runner_registration_condition_required": true,
|
||
"non110_runner_ready": true,
|
||
"non110_runner_ready_config_count": 1,
|
||
"non110_runner_ready_binary_count": 1,
|
||
"non110_runner_ready_service_count": 1,
|
||
"non110_runner_ready_registration_count": 1,
|
||
"non110_runner_ready_active_service_count": 1,
|
||
"non110_runner_remaining_blockers": [],
|
||
"non110_runner_safe_next_step": "complete_authorized_cd_then_verify_image_tag_matches_main"
|
||
},
|
||
"blockers": [
|
||
{
|
||
"id": "authorized_gitea_workflow_dispatch_channel_missing",
|
||
"kind": "external_authorized_control_channel",
|
||
"severity": "P0",
|
||
"description": "Source 已進 Gitea main,但 production image tag 仍停在舊 SHA;目前沒有可用的已授權 Gitea workflow_dispatch channel 觸發最新 cd.yaml。",
|
||
"blocked_action": "deploy_current_gitea_main_to_production",
|
||
"safe_boundary": "不得讀 token/cookie/session,不得改 workflow 為 push trigger,不得手改 K8s tag,不得重開 110 runner 或 host/K8s runtime。"
|
||
},
|
||
{
|
||
"id": "production_image_tag_not_current_after_non110_ready",
|
||
"kind": "production_readback",
|
||
"severity": "P0",
|
||
"description": "Non-110 runner readiness 已讀回 ready,public queue 也不再顯示 no-matching-runner;production Delivery Workbench 仍是舊版 source_count=5,image tag 尚未跟目前 Gitea main 對齊。",
|
||
"blocked_action": "verify_current_main_deployed_to_production",
|
||
"safe_boundary": "只允許讀 production API / public Gitea queue / sanitized verifier;不得讀 token、手改 K8s tag、force push、使用 GitHub 或操作 host/Docker/K8s。"
|
||
}
|
||
],
|
||
"next_actions": [
|
||
"Non-110 runner readiness 已成立;下一步完成 Gitea CD,並確認 production image tag 跟目前 main 對齊。",
|
||
"CD 完成後讀回 production image tag,確認不再是 af45811e87。",
|
||
"重新執行 ops/runner/verify-awoooi-non110-cd-closure.py,目標是 status=closure_verified。",
|
||
"重新讀回 /api/v1/agents/github-target-controlled-execution-preflight 與 /api/v1/agents/delivery-closure-workbench,確認 internal_governance_writeback 與 KM / PlayBook counters 出現。"
|
||
],
|
||
"rollups": {
|
||
"hard_blocker_count": 2,
|
||
"next_action_count": 4,
|
||
"source_control_main_ready": true,
|
||
"production_image_tag_matches_main": false,
|
||
"production_governance_fields_present": false,
|
||
"authorized_dispatch_channel_ready": false,
|
||
"non110_runner_ready": true,
|
||
"non110_runner_online_label_match": true,
|
||
"non110_runner_autostart_path_armed": true,
|
||
"non110_runner_cd_closure_required": true,
|
||
"non110_runner_cd_closure_status": "blocked_production_image_not_current",
|
||
"non110_runner_cd_closure_ordered_completion_percent": 67,
|
||
"non110_runner_cd_closure_evidence_completion_percent": 67,
|
||
"non110_runner_cd_closure_next_blocked_step_id": "production_image_tag_current",
|
||
"non110_runner_remaining_blocker_count": 0,
|
||
"runtime_write_performed": false,
|
||
"secret_values_collected": false
|
||
},
|
||
"operation_boundaries": {
|
||
"read_only_api_allowed": true,
|
||
"deploy_trigger_allowed": false,
|
||
"workflow_modification_allowed": false,
|
||
"gitea_api_write_allowed": false,
|
||
"host_write_allowed": false,
|
||
"k8s_write_allowed": false,
|
||
"secret_read_allowed": false,
|
||
"github_api_allowed": false,
|
||
"raw_session_or_sqlite_read_allowed": false
|
||
}
|
||
}
|