{ "schema_version": "telegram_notification_egress_migration_plan_draft_v1", "generated_at": "2026-06-18T23:00:00+08:00", "git_commit": "f171ffc2", "status": "migration_plan_draft_ready_no_runtime_action", "mode": "metadata_only_no_workflow_script_api_change_no_telegram_send", "source_snapshot": "docs/security/telegram-notification-egress-owner-request-draft.snapshot.json", "source_schema_version": "telegram_notification_egress_owner_request_draft_v1", "source_status": "owner_request_draft_ready_no_dispatch_no_runtime_action", "summary": { "source_request_draft_count": 11, "source_direct_bot_api_call_count": 18, "migration_candidate_count": 11, "workflow_migration_candidate_count": 6, "ops_script_migration_candidate_count": 4, "api_direct_migration_candidate_count": 1, "proposed_wave_count": 3, "plan_field_count": 17, "reviewer_check_count": 15, "outcome_lane_count": 9, "blocked_action_count": 21, "owner_response_required_count": 11, "maintenance_window_required_count": 11, "rollback_owner_required_count": 11, "postcheck_required_count": 11, "delivery_receipt_required_count": 11, "owner_response_received_count": 0, "owner_response_accepted_count": 0, "migration_authorized_count": 0, "workflow_modification_authorized_count": 0, "script_modification_authorized_count": 0, "api_sender_refactor_authorized_count": 0, "telegram_send_authorized_count": 0, "bot_api_call_authorized_count": 0, "secret_value_collection_allowed_count": 0, "raw_payload_storage_allowed_count": 0, "production_write_authorized_count": 0, "runtime_gate_count": 0, "action_button_count": 0 }, "execution_boundaries": { "runtime_execution_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "action_buttons_allowed": false, "not_authorization": true }, "proposed_waves": [ "wave_1_workflow_notification_wrapper", "wave_2_ops_notification_wrapper", "wave_3_api_sender_gateway" ], "migration_candidates": [ { "migration_candidate_id": "telegram_notification_egress_migration:.gitea/workflows/cd-dev.yaml", "source_request_draft_id": "telegram_notification_egress_owner_request:_gitea_workflows_cd_dev_yaml", "source_path": ".gitea/workflows/cd-dev.yaml", "surface_kind": "gitea_workflow_direct_bot_api", "direct_call_count": 3, "proposed_wave": "wave_1_workflow_notification_wrapper", "proposed_target": "scripts/ci/notify-awoooi-cicd.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct workflow Bot API send with normalized CI/CD notification wrapper after owner approval.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:.gitea/workflows/cd.yaml", "source_request_draft_id": "telegram_notification_egress_owner_request:_gitea_workflows_cd_yaml", "source_path": ".gitea/workflows/cd.yaml", "surface_kind": "gitea_workflow_direct_bot_api", "direct_call_count": 5, "proposed_wave": "wave_1_workflow_notification_wrapper", "proposed_target": "scripts/ci/notify-awoooi-cicd.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct workflow Bot API send with normalized CI/CD notification wrapper after owner approval.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:.gitea/workflows/code-review.yaml", "source_request_draft_id": "telegram_notification_egress_owner_request:_gitea_workflows_code_review_yaml", "source_path": ".gitea/workflows/code-review.yaml", "surface_kind": "gitea_workflow_direct_bot_api", "direct_call_count": 2, "proposed_wave": "wave_1_workflow_notification_wrapper", "proposed_target": "scripts/ci/notify-awoooi-cicd.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct workflow Bot API send with normalized CI/CD notification wrapper after owner approval.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:.gitea/workflows/deploy-alerts.yaml", "source_request_draft_id": "telegram_notification_egress_owner_request:_gitea_workflows_deploy_alerts_yaml", "source_path": ".gitea/workflows/deploy-alerts.yaml", "surface_kind": "gitea_workflow_direct_bot_api", "direct_call_count": 1, "proposed_wave": "wave_1_workflow_notification_wrapper", "proposed_target": "scripts/ci/notify-awoooi-cicd.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct workflow Bot API send with normalized CI/CD notification wrapper after owner approval.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:.gitea/workflows/e2e-health.yaml", "source_request_draft_id": "telegram_notification_egress_owner_request:_gitea_workflows_e2e_health_yaml", "source_path": ".gitea/workflows/e2e-health.yaml", "surface_kind": "gitea_workflow_direct_bot_api", "direct_call_count": 1, "proposed_wave": "wave_1_workflow_notification_wrapper", "proposed_target": "scripts/ci/notify-awoooi-cicd.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct workflow Bot API send with normalized CI/CD notification wrapper after owner approval.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:.gitea/workflows/run-migration.yml", "source_request_draft_id": "telegram_notification_egress_owner_request:_gitea_workflows_run_migration_yml", "source_path": ".gitea/workflows/run-migration.yml", "surface_kind": "gitea_workflow_direct_bot_api", "direct_call_count": 1, "proposed_wave": "wave_1_workflow_notification_wrapper", "proposed_target": "scripts/ci/notify-awoooi-cicd.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct workflow Bot API send with normalized CI/CD notification wrapper after owner approval.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:apps/api/src/services/channel_hub.py", "source_request_draft_id": "telegram_notification_egress_owner_request:apps_api_src_services_channel_hub_py", "source_path": "apps/api/src/services/channel_hub.py", "surface_kind": "api_direct_bot_api", "direct_call_count": 1, "proposed_wave": "wave_3_api_sender_gateway", "proposed_target": "TelegramGateway final-exit formatter", "proposed_change_summary": "Route API interim sender through TelegramGateway or equivalent final-exit normalization and mirror contract.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:scripts/ops/backup-from-110.sh", "source_request_draft_id": "telegram_notification_egress_owner_request:scripts_ops_backup_from_110_sh", "source_path": "scripts/ops/backup-from-110.sh", "surface_kind": "ops_script_direct_bot_api", "direct_call_count": 1, "proposed_wave": "wave_2_ops_notification_wrapper", "proposed_target": "scripts/ops/notify-awoooi-ops.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct ops fallback send with normalized ops notification wrapper or documented break-glass fallback.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:scripts/ops/docker-health-monitor.sh", "source_request_draft_id": "telegram_notification_egress_owner_request:scripts_ops_docker_health_monitor_sh", "source_path": "scripts/ops/docker-health-monitor.sh", "surface_kind": "ops_script_direct_bot_api", "direct_call_count": 1, "proposed_wave": "wave_2_ops_notification_wrapper", "proposed_target": "scripts/ops/notify-awoooi-ops.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct ops fallback send with normalized ops notification wrapper or documented break-glass fallback.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:scripts/ops/dr-drill.sh", "source_request_draft_id": "telegram_notification_egress_owner_request:scripts_ops_dr_drill_sh", "source_path": "scripts/ops/dr-drill.sh", "surface_kind": "ops_script_direct_bot_api", "direct_call_count": 1, "proposed_wave": "wave_2_ops_notification_wrapper", "proposed_target": "scripts/ops/notify-awoooi-ops.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct ops fallback send with normalized ops notification wrapper or documented break-glass fallback.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true }, { "migration_candidate_id": "telegram_notification_egress_migration:scripts/ops/pg-backup.sh", "source_request_draft_id": "telegram_notification_egress_owner_request:scripts_ops_pg_backup_sh", "source_path": "scripts/ops/pg-backup.sh", "surface_kind": "ops_script_direct_bot_api", "direct_call_count": 1, "proposed_wave": "wave_2_ops_notification_wrapper", "proposed_target": "scripts/ops/notify-awoooi-ops.sh or AWOOI Alertmanager webhook", "proposed_change_summary": "Replace direct ops fallback send with normalized ops notification wrapper or documented break-glass fallback.", "plan_fields": [ "migration_candidate_id", "source_request_draft_id", "source_path", "surface_kind", "direct_call_count", "proposed_wave", "proposed_target", "proposed_change_summary", "required_owner_response_ref", "required_maintenance_window", "required_rollback_owner", "required_postcheck_ref", "required_delivery_receipt_ref", "required_no_secret_value_attestation", "required_no_raw_payload_attestation", "required_no_false_green_attestation", "not_authorization" ], "reviewer_checks": [ "source_owner_request_draft_current", "owner_response_required_before_change", "maintenance_window_required_before_change", "rollback_owner_required_before_change", "delivery_receipt_plan_required", "postcheck_plan_required", "redaction_contract_required", "break_glass_fallback_explicit", "no_secret_value_required", "no_raw_payload_required", "no_false_green_required", "workflow_changes_separate_from_docs", "script_changes_separate_from_docs", "api_sender_refactor_separate_from_docs", "runtime_gate_stays_zero" ], "outcome_lanes": [ "draft_waiting_owner_response", "ready_for_workflow_migration_review", "ready_for_ops_script_migration_review", "ready_for_api_sender_migration_review", "request_missing_owner_response", "request_missing_maintenance_or_rollback", "reject_secret_or_raw_payload", "reject_false_green_claim", "waiting_runtime_gate" ], "blocked_actions": [ "modify_workflow", "modify_ops_script", "refactor_api_sender", "send_telegram", "call_bot_api", "dispatch_workflow", "trigger_cd", "deploy_production", "read_secret_store", "collect_secret_value", "collect_secret_hash", "collect_partial_token", "store_raw_payload", "store_unredacted_log", "change_chat_route", "change_bot_token", "rotate_secret", "accept_cd_success_as_delivery_receipt", "accept_route_200_as_notification_delivery", "open_runtime_gate", "add_action_button" ], "owner_response_required": true, "maintenance_window_required": true, "rollback_owner_required": true, "postcheck_required": true, "delivery_receipt_required": true, "owner_response_received": false, "owner_response_accepted": false, "migration_authorized": false, "workflow_modification_authorized": false, "script_modification_authorized": false, "api_sender_refactor_authorized": false, "telegram_send_authorized": false, "bot_api_call_authorized": false, "secret_value_collection_allowed": false, "raw_payload_storage_allowed": false, "production_write_authorized": false, "runtime_gate": false, "action_buttons_allowed": false, "not_authorization": true } ], "operator_interpretation": [ "This is a migration plan draft only; it does not authorize workflow, script, API, Telegram, or production changes.", "Every candidate still requires owner response, maintenance window, rollback owner, receipt plan, and post-check evidence.", "Direct Bot API convergence remains 0 until a separate runtime-approved change is implemented and verified." ] }