{"artifact":"operator-release-handoff-v1","release_id":"intellicore-20260514T094058754788Z","generated_at":"2026-05-14T09:40:58.754788Z","overall_status":"pass_with_operator_placeholders","scope":{"site_ref":"all","building_ref":"all","equipment_ref":"all"},"deployment":{"artifact":"deployment-readiness-v1","status":"deployable_with_placeholders","placeholder_configuration":{"database":{"configured":true,"value_state":"configured","sqlite_default":true},"bacnet_target":{"configured":false,"value_state":"placeholder"},"modbus_target":{"configured":false,"value_state":"placeholder"},"bbmd_router":{"configured":false,"value_state":"placeholder"},"report_dir":{"configured":true,"value_state":"configured"}},"non_code_blockers":["operator must set target BACnet/IP range before live discovery","operator must set target Modbus host before live enumeration"]},"predictive_readiness":{"artifact":"predictive-operations-readiness-v1","status":"blocked_missing_inputs","prediction_source":"live_predictive_snapshot","recommendation_source":"none_available","input_summary":{"semantic_mappings":0,"mapped_roles":[],"trend_samples":0,"occupancy_signals":0,"weather_observations":0,"operator_recommendations":0,"occupancy_evidence_status":"not_requested_explicit_equipment_scope_required","occupancy_evidence_signal_count":0,"weather_forecast_evidence_status":"blocked_weather_forecast_not_ready","weather_forecast_evidence_count":0,"alarm_event_evidence_status":"not_requested_explicit_equipment_scope_required","alarm_event_evidence_event_count":0,"semantic_bindings":0,"semantic_binding_freshness":{"current":0,"current_requires_review":0,"missing":0,"stale":0,"expired":0,"blocked":0,"low_confidence":0,"cross_scope":0,"missing_evidence":0,"missing_source_point":0,"missing_hierarchy_scope":0},"semantic_binding_blocker_details":[],"latest_input_age_minutes":{"trend_samples":null,"occupancy_signals":null,"weather_observations":null}},"trend_history_evidence":{"artifact":"predictive-readiness-trend-history-evidence-v1","status":"not_requested_explicit_equipment_scope_required","generated_at":"2026-05-14T09:40:58.757089Z","scope":{"site_ref":"all","building_ref":"all","equipment_ref":"all","site_id":null,"building_id":null,"equipment_id":null},"points":[],"evidence_count":0,"blockers":["explicit_equipment_scope_required"],"recommended_operator_next_action":"Select a specific site/equipment scope to review scoped trend-history evidence.","advisory_only":true,"read_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"weather_forecast_evidence":{"artifact":"predictive-readiness-weather-forecast-evidence-v1","source_artifact":"weather-forecast-readiness-evidence-v1","status":"blocked_weather_forecast_not_ready","generated_at":"2026-05-14T09:40:58.757127Z","scope":{"site_ref":"all","building_ref":"all","site_id":null,"building_id":null},"summary":{"forecast_count":0,"latest_outdoor_air_temp":null,"latest_humidity":null,"latest_forecast_high":null,"latest_forecast_low":null,"severe_weather_flag_count":0,"severe_weather_flags":[],"solar_load_indicators":[],"load_indicators":[],"source_refs":[]},"freshness":{"status":"missing","max_age_minutes":120,"latest_forecast_age_minutes":null,"latest_forecast_timestamp":null},"forecast_window":{"status":"missing","start":null,"end":null},"forecasts":[],"blockers":["missing_scoped_weather_forecast"],"confidence":0.35,"recommended_operator_next_action":"Do not trust weather-driven predictive actions until scoped, fresh, high-confidence forecast evidence is available and forecast windows are active.","advisory_only":true,"read_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true,"network_action_mode":"no_network_local_evidence_only"},"missing_input_blockers":["semantic_role:zone_temperature","semantic_role:zone_setpoint","trend_samples","occupancy_signals","weather_observations","occupancy_evidence:explicit_equipment_scope_required","weather_forecast:missing_scoped_weather_forecast"],"stale_input_blockers":[],"non_code_blockers":[],"recommended_next_action":"Collect or import predictive inputs before release handoff: semantic_role:zone_temperature, semantic_role:zone_setpoint, trend_samples, occupancy_signals, weather_observations, occupancy_evidence:explicit_equipment_scope_required, weather_forecast:missing_scoped_weather_forecast"},"alarm_event_evidence":{"artifact":"alarm-event-readiness-evidence-v1","status":"not_requested_explicit_equipment_scope_required","generated_at":"2026-05-14T09:40:58.862500Z","scope":{"site_ref":"all","building_ref":"all","equipment_ref":"all","site_id":null,"building_id":null,"equipment_id":null},"summary":{"event_count":0,"active_event_count":0,"critical_or_high_event_count":0,"acknowledged_count":0},"freshness":{"status":"missing","max_age_minutes":240,"latest_event_age_minutes":null,"latest_event_timestamp":null},"events":[],"blockers":["explicit_equipment_scope_required"],"recommended_operator_next_action":"Select a specific site/equipment scope to review alarm/event evidence.","advisory_only":true,"read_only":true,"write_execution_enabled":false,"alarm_acknowledgement_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true,"alarm_action_mode":"no_alarm_acknowledgement","credentials":"redacted"},"visual_composer_operator_review_readiness":{"artifact":"visual-composer-operator-review-readiness-section-v1","overall_status":"blocked_visual_composer_operator_review_not_ready","pass":false,"fail":true,"fail_closed":true,"scope":{"site_ref":"all","building_ref":"all","equipment_ref":"all","site_id":null,"building_id":null,"equipment_id":null},"summary":{"binding_candidates":0,"ready_for_publish":0,"published_graphics_evaluated":0,"runtime_graphics":0,"ready_for_runtime_use":0,"blocked":0,"fail_closed_operator_review_gate":true,"advisory_only":true,"write_execution_enabled":false},"checks":[{"name":"binding_candidates","status":"blocked","pass":false,"fail":true,"blockers":["visual composer binding candidates are missing or blocked"]},{"name":"published_runtime_review","status":"blocked","pass":false,"fail":true,"blockers":["visual composer published runtime evidence is missing or blocked"]},{"name":"safe_posture","status":"ready","pass":true,"fail":false,"blockers":[]}],"current_review_evidence":[],"blocked_review_evidence":[],"gateway_runtime_readiness":{"artifact":"visual-runtime-gateway-readiness-handoff-v1","source_artifact":"visual-composer-runtime-health-review-v1","summary":{"runtime_slots_evaluated":0,"blocked_slots":0,"clear_slots":0,"gateway_exception_count":0,"scoped_gateway_uids":[],"fail_closed_gateway_gate":true,"advisory_only":true,"write_execution_enabled":false},"slot_drilldowns":[],"operator_verification_preflight":{"artifact":"visual-runtime-gateway-operator-verification-preflight-v1","status":"blocked_visual_runtime_gateway_operator_verification","pass":false,"fail":true,"fail_closed":true,"summary":{"runtime_slots_evaluated":0,"blocked_slots":0,"clear_slots":0,"gateway_exception_count":0,"scoped_gateway_uids":[],"blocked_categories":{"scoped_gateway_evidence_present":1,"gateway_exception_gate_clear":1,"reviewable_slot_drilldowns_present":1,"safe_read_only_posture":0},"fail_closed_gateway_gate":true},"checks":{"scoped_gateway_evidence_present":{"pass":false,"fail":true,"status":"blocked","blockers":["missing scoped gateway UID evidence for visual runtime gateway verification"],"recommended_operator_next_action":"Register and heartbeat the site gateway, then regenerate Visual Composer runtime readiness evidence for this exact release scope."},"gateway_exception_gate_clear":{"pass":false,"fail":true,"status":"blocked","blockers":["visual runtime gateway exception gate has blocked or missing scoped evidence"],"recommended_operator_next_action":"Resolve visual runtime gateway blockers before release/write-safety handoff and re-run the handoff report."},"reviewable_slot_drilldowns_present":{"pass":false,"fail":true,"status":"blocked","blockers":["visual runtime gateway drilldown refs are missing graphic or semantic binding identifiers"],"recommended_operator_next_action":"Regenerate/publish Visual Composer runtime evidence so each slot has operator-reviewable graphic and semantic binding refs."},"safe_read_only_posture":{"pass":true,"fail":false,"status":"ready","blockers":[],"recommended_operator_next_action":"Verification is advisory-only/read-only; no BAS writes are enabled."}},"blocked_slot_drilldown_refs":[],"artifact_references":{"json_api":"/api/operator/release-handoff/visual-runtime-gateway-verification-preflight.json","csv_export":"/api/operator/release-handoff/visual-runtime-gateway-verification-preflight/export.csv","html_review":"/operator-release-handoff/visual-runtime-gateway-verification-preflight","source_handoff_api":"/api/operator/release-handoff","source_runtime_health_review_api":"/api/visual-composer/runtime-health-review","operator_graphics_drilldowns_api":"/api/visual-composer/operator-graphics-drilldowns"},"safe_posture":{"advisory_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"credentials":"redacted","recommended_operator_next_action":"Resolve visual runtime gateway blockers before release/write-safety handoff; do not use unverified runtime graphics as ready evidence."},"blockers":[],"artifact_references":{"runtime_gate_api":"/api/visual-composer/runtime-binding-use-gate","runtime_gate_export":"/api/visual-composer/runtime-binding-use-gate/export.csv","runtime_health_review_api":"/api/visual-composer/runtime-health-review","runtime_health_review_export":"/api/visual-composer/runtime-health-review/export.csv","operator_graphics_drilldowns_api":"/api/visual-composer/operator-graphics-drilldowns"},"safe_posture":{"advisory_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"credentials":"redacted","recommended_operator_next_action":"Visual runtime gateway readiness evidence is clear; keep runtime graphics read-only."},"blocker_rollup":{"artifact":"visual-composer-release-blocker-rollup-v1","source_artifacts":["visual-composer-binding-candidates-v1","visual-composer-runtime-health-review-v1","visual-runtime-gateway-readiness-handoff-v1"],"summary":{"total_blocker_count":1,"candidate_blocker_count":0,"runtime_blocker_count":0,"gateway_blocker_count":0,"current_runtime_slot_count":0,"blocked_runtime_slot_count":0,"scoped_gateway_uids":[],"fail_closed":true,"advisory_only":true,"write_execution_enabled":false},"rollup_items":[{"category":"scope","graphic_uid":"visual-composer-release-scope","graphic_status":"blocked","template_id":"release-handoff-scope","runtime_use_state":"blocked","readiness_state":"blocked","source_semantic_binding_id":null,"semantic_role":"release_scope","visual_slot":"operator_review_scope","point_id":null,"point_name":null,"hierarchy_scope_ref":"release-handoff-scope","gateway_exception_status":"not_applicable","gateway_exception_blocker_status":"blocked","gateway_exception_gateway_uids":[],"blockers":["visual composer explicit equipment scope required"],"fail_closed_reason":"visual composer explicit equipment scope required","operator_drilldown_url":"/operator-release-handoff/visual-composer-blocker-rollup","api_drilldown_url":"/api/operator/release-handoff/visual-composer-blocker-rollup.json","runtime_health_review_url":"/api/visual-composer/runtime-health-review","release_preflight_url":"/api/operator/release-handoff/visual-runtime-gateway-verification-preflight.json","advisory_only":true,"write_execution_enabled":false,"write_disabled":true}],"artifact_references":{"json_api":"/api/operator/release-handoff/visual-composer-blocker-rollup.json","csv_export":"/api/operator/release-handoff/visual-composer-blocker-rollup/export.csv","markdown_report":"/api/operator/release-handoff/visual-composer-blocker-rollup/report.md","html_review":"/operator-release-handoff/visual-composer-blocker-rollup","binding_candidate_api":"/api/visual-composer/binding-candidates","runtime_health_review_api":"/api/visual-composer/runtime-health-review","operator_graphics_drilldowns_api":"/api/visual-composer/operator-graphics-drilldowns","visual_runtime_gateway_preflight_api":"/api/operator/release-handoff/visual-runtime-gateway-verification-preflight.json"},"safe_posture":{"advisory_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"credentials":"redacted","recommended_operator_next_action":"Open the scoped rollup drilldowns, clear candidate/runtime/gateway blockers, then rerun release handoff verification; no BAS writes are enabled."},"blockers":["visual composer explicit equipment scope required"],"artifact_references":{"binding_candidate_api":"/api/visual-composer/binding-candidates","binding_candidate_export":"/api/visual-composer/binding-candidates/export.csv","runtime_gate_api":"/api/visual-composer/runtime-binding-use-gate","runtime_gate_export":"/api/visual-composer/runtime-binding-use-gate/export.csv","runtime_health_review_api":"/api/visual-composer/runtime-health-review","operator_graphics_drilldowns_api":"/api/visual-composer/operator-graphics-drilldowns"},"safe_posture":{"advisory_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"credentials":"redacted","recommended_operator_next_action":"Do not hand off release/write-safety readiness as ready until Visual Composer operator-review evidence blockers are cleared."},"visual_composer_ai_planner_decision_audit_evidence":{"artifact":"visual-composer-ai-planner-decision-audit-release-evidence-v1","generated_at":"2026-05-14T09:40:58.864470Z","status":"blocked_ai_planner_decision_audit_evidence","audit_count":0,"ready_audit_count":0,"decision_audits":[],"blockers":["missing Visual Composer AI planner decision audit evidence"],"artifact_references":{"json_api":"/api/graphics/ai/scene-planner/workstation/decision-audits","csv_export_api":"/api/graphics/ai/scene-planner/workstation/decision-audits/export.csv"},"credentials":"redacted","safety_posture":{"advisory_only":true,"read_only":true,"read_only_advisory":true,"raw_html_mutation_allowed":false,"publish_allowed":false,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"recommended_operator_next_action":"Resolve Visual Composer AI planner decision audit blockers before claiming graphics planner readiness.","advisory_only":true,"read_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"gateway_sync_buffer_remediation_evidence":{"artifact":"gateway-sync-buffer-remediation-handoff-evidence-v1","source_artifact":"gateway-sync-buffer-remediation-actions-v1","generated_at":"2026-05-14T09:40:58.863536Z","gateway_uid":null,"read_only_mode":true,"outbound_only":true,"write_execution_enabled":false,"alarm_acknowledgement_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true,"payloads_redacted":true,"summary":{"remediation_action_count":0,"failed_count":0,"expired_in_flight_count":0,"due_pending_count":0,"operator_review_required":false,"delivery_audit_event_count":0,"blocked_transition_count":0,"unresolved_condition_count":0},"delivery_audit_summary":{"event_count":0,"audit_event_count":0,"blocked_transition_count":0,"unresolved_condition_count":0,"scoped_event_count":0},"action_type_counts":[],"sample_actions":[],"delivery_audit_summaries":[],"recent_delivery_audit_events":[],"artifact_references":{"json_api":"/api/gateway/sync-buffer/remediation-actions","csv_export_api":"/api/gateway/sync-buffer/remediation-actions/export.csv","status_summary_api":"/api/gateway/sync-buffer/status","delivery_audit_api_template":"/api/gateway/sync-buffer/events/{event_uid}/delivery-audit"},"recommended_operator_next_action":"No sync-buffer remediation actions are currently due.","credentials":"redacted"},"demand_limiting_evidence_bundle_archive_refs":[],"digitalocean_storage_backup_preflight_evidence":{"artifact":"operator-release-digitalocean-storage-backup-preflight-evidence-v1","source_artifact":"digitalocean-storage-backup-preflight-v1","status":"blocked_missing_or_unsafe_storage_posture","target":{"provider":"not_confirmed","compute":"unsupported_or_placeholder","value_state":"missing_or_unsupported"},"database_target":{"url_state":"sqlite_not_production_postgres","postgres_posture":"blocked_sqlite_not_production_postgres","local_vs_managed":"not_confirmed","values_redacted":true},"artifact_storage_target":{"attached_volume":"missing_or_unsafe","artifact_storage":"outside_attached_volume_boundary","drawing_storage":"outside_attached_volume_boundary","export_storage":"outside_attached_volume_boundary"},"attached_volume_expectation":"missing_or_unsafe","backup_export_checklist":{"droplet_snapshots":"missing_operator_snapshot_expectation","database_backup_export":"missing","artifact_backup_export":"missing"},"backup_retention_schedule":{"database_backup_retention_days":"missing_or_invalid","artifact_backup_retention_days":"missing_or_invalid"},"retention_expectations":["Verify Droplet/volume snapshots plus separate database and artifact backup exports before customer production use.","Keep central supervisor storage on DigitalOcean PostgreSQL posture and attached volume artifact paths.","Field gateways keep local buffers and sync outbound; live BAS traffic remains local."],"field_gateway_boundary":{"local_buffer":"missing","sync_boundary":"blocked_sync_boundary_not_outbound_only"},"evidence_paths":{"json_api":"/api/deployment/digitalocean/storage-backup-preflight","deployment_readiness_api":"/api/deployment/readiness","release_checklist_cli":"scripts/intellicore_release_checklist.py --json","operator_handoff_bundle_cli":"scripts/intellicore_operator_handoff_bundle.py --json"},"blocker_count":13,"blockers":["DigitalOcean Docker Droplet/VPS target must be explicit","Attached DigitalOcean volume path must be configured outside ephemeral storage","artifact_storage must live on the attached volume and not public/ephemeral storage","drawing_storage must live on the attached volume and not public/ephemeral storage","export_storage must live on the attached volume and not public/ephemeral storage","PostgreSQL local-on-Droplet or DigitalOcean Managed PostgreSQL posture must be explicit","Droplet/volume snapshots must be enabled or explicitly scheduled before production","database_backup_export path must be configured on the attached volume","artifact_backup_export path must be configured on the attached volume","Database backup retention days must be a positive integer","Artifact backup retention days must be a positive integer","Field gateway buffer path and outbound-only sync boundary must be explicit","Credential values must stay out of git and public object storage"],"safe_posture":{"advisory_only":true,"read_only":true,"mutates_environment":false,"mutates_remote_infrastructure":false,"writes_bas_devices":false,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"credentials":"redacted","recommended_operator_next_action":"Resolve DigitalOcean storage/backup blockers, then rerun deployment readiness and release handoff before production."},"digitalocean_restore_drill_preflight_evidence":{"artifact":"operator-release-digitalocean-restore-drill-preflight-evidence-v1","source_artifact":"digitalocean-restore-drill-preflight-v1","status":"blocked_restore_drill_not_verified","network_action_mode":"no_network_dry_run","deploy_action_mode":"no_deploy_action","restore_action_mode":"no_restore_action","restore_action_performed":false,"package":{"release_package_id_state":"missing_or_placeholder","build_id_state":"missing_or_placeholder","values_redacted":true},"target":{"provider":"not_confirmed","compute":"unsupported_or_placeholder","value_state":"missing_or_unsupported"},"restore_drill":{"last_run_at_state":"missing","max_age_days":30,"freshness":{"state":"missing_or_invalid","age_days":null,"max_age_days":30,"last_run_at_redacted":false},"target_environment":"missing","database_restore_evidence":"missing","artifact_restore_evidence":"missing","rollback_runbook":"missing","values_redacted":true},"backup_retention_state":{"database_backup_retention_days":"missing_or_invalid","artifact_backup_retention_days":"missing_or_invalid"},"backup_evidence_state":{"database_backup_export":"missing","artifact_backup_export":"missing","values_redacted":true},"restore_objectives":{"rto_minutes":null,"rpo_minutes":null},"evidence_paths":{"json_api":"/api/deployment/digitalocean/restore-drill-preflight","deployment_readiness_api":"/api/deployment/readiness","release_checklist_cli":"scripts/intellicore_release_checklist.py --json","operator_handoff_bundle_cli":"scripts/intellicore_operator_handoff_bundle.py --json"},"operator_expectations":["Run database restore and artifact restore drills in isolated staging before customer production cutover.","Record RTO/RPO results and keep rollback runbook evidence on the attached DigitalOcean volume.","Do not restore into production as a drill and do not include credential values in handoff evidence."],"blocker_count":19,"blockers":["DigitalOcean Docker Droplet/VPS target must be explicit","Attached DigitalOcean volume path must be configured before restore drill evidence can be trusted","Database restore drill last-run timestamp must be recorded","Restore drill evidence is stale or timestamp is invalid","Restore drill release package id is missing, invalid, or cross-scope","Restore drill build id must be configured","Restore drill operator approval reference must be archived before production cutover","Restore drill operator approval actor must be recorded","Restore drill operator approval timestamp must be valid and no older than the restore drill","Database restore drill evidence path must be stored on the attached volume","Artifact restore drill evidence path must be stored on the attached volume","Rollback runbook path must be stored on the attached volume","Database backup export evidence path must be stored on the attached volume for restore drill readiness","Artifact backup export evidence path must be stored on the attached volume for restore drill readiness","Database backup retention days must be a positive integer for restore drill readiness","Artifact backup retention days must be a positive integer for restore drill readiness","Restore drill target must be isolated staging/sandbox, not production","Restore drill RTO minutes must be a positive integer","Restore drill RPO minutes must be a positive integer"],"safe_posture":{"advisory_only":true,"read_only":true,"mutates_environment":false,"mutates_remote_infrastructure":false,"writes_bas_devices":false,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"credentials":"redacted","recommended_operator_next_action":"Complete isolated restore drill evidence and rerun deployment readiness before production cutover."},"manual_release_gates":{"artifact":"operator-release-manual-gates-v1","status":"blocked_manual_operator_gates_pending","readiness_summary":{"deployment_readiness_status":"deployable_with_placeholders","release_checklist_status":"pass_with_placeholders","predictive_readiness_status":"blocked_missing_inputs","alarm_event_status":"not_requested_explicit_equipment_scope_required"},"deployment_target":{"provider":"not_confirmed","compute":"unsupported_or_placeholder","value_state":"missing_or_unsupported"},"storage_backup_preflight_status":"blocked_missing_or_unsafe_storage_posture","required_artifacts":{"operator_release_handoff_json":"/api/operator/release-handoff","operator_release_handoff_markdown":"/api/operator/release-handoff/report.md","operator_release_handoff_package":"/api/operator/release-handoff/package.json","integrity_manifest":"/api/operator/release-handoff/integrity.json","archive_index":"/api/operator/release-handoff/archive-index.json","evidence_retention_report":"/api/operator/release-handoff/evidence-retention.json","release_package_preflight":"/api/operator/release-handoff/preflight.json","release_cutover_rollback_checklist":"/api/operator/release-handoff/cutover-rollback-checklist.json","deployment_readiness":"/api/deployment/readiness","digitalocean_storage_backup_preflight":"/api/deployment/digitalocean/storage-backup-preflight","site_scene_navigation_api":"/api/graphics/site-scenes","site_scene_navigation_html":"/graphics/site-scenes","site_scene_graph_metadata_index_json":"/api/graphics/site-scene-graph-metadata/index.json","site_scene_graph_metadata_index_csv":"/api/graphics/site-scene-graph-metadata/index.csv","site_scene_graph_metadata_review_json":"/api/graphics/site-scene-graph-metadata/review-index.json","site_scene_graph_metadata_review_html":"/graphics/site-scene-graph-metadata","site_scene_release_evidence_map_json":"/api/graphics/site-scene-graph-metadata/release-evidence-map.json","site_scene_release_evidence_map_csv":"/api/graphics/site-scene-graph-metadata/release-evidence-map/export.csv","visual_composer_ai_planner_decision_audit_api":"/api/graphics/ai/scene-planner/workstation/decision-audits"},"rollback_backup_notes":{"droplet_volume_snapshots":"missing_operator_snapshot_expectation","database_backup_export":"missing_or_unsafe_backup_path","artifact_backup_export":"missing_or_unsafe_backup_path","rollback_plan":"restore PostgreSQL backup and attached-volume artifacts from operator-verified backups/snapshots; no credentials included in bundle"},"manual_gate_items":[{"name":"operator_approval_recorded","confirmed":false,"evidence_required":"operator/customer deployment approval recorded outside git before production cutover"},{"name":"backup_restore_path_verified","confirmed":false,"evidence_required":"database and artifact backup export/restore path verified by operator"},{"name":"rollback_plan_reviewed","confirmed":false,"evidence_required":"rollback plan reviewed, including restore point and prior release/package fallback"},{"name":"evidence_archive_persisted","confirmed":false,"evidence_required":"handoff package, integrity manifest, archive index, retention report, and preflight packet persisted outside git"},{"name":"write_and_autopilot_disabled_confirmed","confirmed":false,"evidence_required":"operator confirmed write_execution_enabled=false and autopilot_execution_enabled=false for release"}],"blockers":["manual gate pending: operator_approval_recorded","manual gate pending: backup_restore_path_verified","manual gate pending: rollback_plan_reviewed","manual gate pending: evidence_archive_persisted","manual gate pending: write_and_autopilot_disabled_confirmed","storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture"],"credentials":"redacted","safe_posture":{"advisory_only":true,"read_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"recommended_operator_next_action":"Resolve manual release gate blockers and rerun the handoff bundle before customer deployment."},"release_checklist":{"artifact":"release-checklist-v1","overall_status":"pass_with_placeholders","startup_smoke_status":"pass_with_placeholders","deployment_readiness_status":"deployable_with_placeholders","sections":{"package_artifacts":{"ok":true,"summary":"required release packaging artifacts present"},"container_runtime":{"ok":true,"summary":"container runtime wrapper ready; no local docker/podman binary found"},"remote_url_readiness":{"ok":true,"summary":"remote URL readiness skipped until operator provides deployed base URL"},"smoke_checks":{"ok":true,"summary":"in-process startup smoke checks pass"},"predictive_operations_readiness":{"ok":true,"summary":"predictive operations readiness packet is advisory-only and write-disabled"},"predictive_handoff_report":{"ok":true,"summary":"predictive readiness Markdown handoff report is packaged for operator review"},"digitalocean_storage_backup_preflight":{"ok":true,"summary":"DigitalOcean storage/backup preflight is advisory-only and fail-closed"},"safety_posture":{"ok":true,"summary":"advisory-only posture verified; BAS writes and autopilot remain disabled"}}},"safe_posture":{"advisory_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"blocker_counts":{"predictive":7,"alarm_event":1,"visual_composer_review":1,"visual_composer_runtime_gateway":0,"visual_composer_ai_planner_decision_audit":1,"gateway_sync_buffer":0,"manual_gates":6,"digitalocean_storage_backup":13,"digitalocean_restore_drill":19,"non_code":3,"total":38,"cutover_rollback":23,"cutover_approval_archive":9,"deployment_runbook_review":8},"predictive_blockers":["semantic_role:zone_temperature","semantic_role:zone_setpoint","trend_samples","occupancy_signals","weather_observations","occupancy_evidence:explicit_equipment_scope_required","weather_forecast:missing_scoped_weather_forecast"],"alarm_event_blockers":["explicit_equipment_scope_required"],"visual_composer_review_blockers":["visual composer explicit equipment scope required"],"visual_composer_runtime_gateway_blockers":[],"visual_composer_ai_planner_decision_audit_blockers":["missing Visual Composer AI planner decision audit evidence"],"gateway_sync_buffer_blockers":[],"digitalocean_restore_drill_blockers":["DigitalOcean Docker Droplet/VPS target must be explicit","Attached DigitalOcean volume path must be configured before restore drill evidence can be trusted","Database restore drill last-run timestamp must be recorded","Restore drill evidence is stale or timestamp is invalid","Restore drill release package id is missing, invalid, or cross-scope","Restore drill build id must be configured","Restore drill operator approval reference must be archived before production cutover","Restore drill operator approval actor must be recorded","Restore drill operator approval timestamp must be valid and no older than the restore drill","Database restore drill evidence path must be stored on the attached volume","Artifact restore drill evidence path must be stored on the attached volume","Rollback runbook path must be stored on the attached volume","Database backup export evidence path must be stored on the attached volume for restore drill readiness","Artifact backup export evidence path must be stored on the attached volume for restore drill readiness","Database backup retention days must be a positive integer for restore drill readiness","Artifact backup retention days must be a positive integer for restore drill readiness","Restore drill target must be isolated staging/sandbox, not production","Restore drill RTO minutes must be a positive integer","Restore drill RPO minutes must be a positive integer"],"manual_gate_blockers":["manual gate pending: operator_approval_recorded","manual gate pending: backup_restore_path_verified","manual gate pending: rollback_plan_reviewed","manual gate pending: evidence_archive_persisted","manual gate pending: write_and_autopilot_disabled_confirmed","storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture"],"non_code_blockers":["operator must set target BACnet/IP range before live discovery","operator must set target Modbus host before live enumeration","operator must provide deployed remote base URL before external readiness smoke"],"all_blockers":["semantic_role:zone_temperature","semantic_role:zone_setpoint","trend_samples","occupancy_signals","weather_observations","occupancy_evidence:explicit_equipment_scope_required","weather_forecast:missing_scoped_weather_forecast","explicit_equipment_scope_required","visual composer explicit equipment scope required","missing Visual Composer AI planner decision audit evidence","DigitalOcean Docker Droplet/VPS target must be explicit","Attached DigitalOcean volume path must be configured before restore drill evidence can be trusted","Database restore drill last-run timestamp must be recorded","Restore drill evidence is stale or timestamp is invalid","Restore drill release package id is missing, invalid, or cross-scope","Restore drill build id must be configured","Restore drill operator approval reference must be archived before production cutover","Restore drill operator approval actor must be recorded","Restore drill operator approval timestamp must be valid and no older than the restore drill","Database restore drill evidence path must be stored on the attached volume","Artifact restore drill evidence path must be stored on the attached volume","Rollback runbook path must be stored on the attached volume","Database backup export evidence path must be stored on the attached volume for restore drill readiness","Artifact backup export evidence path must be stored on the attached volume for restore drill readiness","Database backup retention days must be a positive integer for restore drill readiness","Artifact backup retention days must be a positive integer for restore drill readiness","Restore drill target must be isolated staging/sandbox, not production","Restore drill RTO minutes must be a positive integer","Restore drill RPO minutes must be a positive integer","operator must set target BACnet/IP range before live discovery","operator must set target Modbus host before live enumeration","operator must provide deployed remote base URL before external readiness smoke","manual gate pending: operator_approval_recorded","manual gate pending: backup_restore_path_verified","manual gate pending: rollback_plan_reviewed","manual gate pending: evidence_archive_persisted","manual gate pending: write_and_autopilot_disabled_confirmed","storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture"],"verification_commands":["python scripts/intellicore_startup_smoke.py --json","python scripts/intellicore_predictive_readiness.py --json","python scripts/intellicore_predictive_readiness.py --markdown","python scripts/intellicore_release_checklist.py --json","python scripts/intellicore_operator_handoff_bundle.py --json","python scripts/intellicore_operator_handoff_bundle.py --archive-index","python scripts/intellicore_operator_handoff_bundle.py --retention-report","python scripts/intellicore_operator_handoff_bundle.py --local-url-smoke","python scripts/intellicore_operator_handoff_bundle.py --cutover-rollback-checklist","python scripts/intellicore_operator_handoff_bundle.py --cutover-approval-archive","python scripts/intellicore_operator_handoff_bundle.py --deployment-runbook-review","python scripts/intellicore_deployment_publish_smoke.py --json --target-url https://replace-with-deployment-url",".venv/bin/python -m pytest tests/test_operator_release_handoff.py -q","curl -fsS http://127.0.0.1:8000/api/operator/release-handoff/integrity.json",".venv/bin/python -m pytest -q","git diff --check"],"changed_artifact_references":{"json_api":"/api/operator/release-handoff","markdown_api":"/api/operator/release-handoff/report.md","html_report_api":"/api/operator/release-handoff/report.html","package_download_api":"/api/operator/release-handoff/package.json","integrity_manifest_api":"/api/operator/release-handoff/integrity.json","archive_index_api":"/api/operator/release-handoff/archive-index.json","retention_report_api":"/api/operator/release-handoff/evidence-retention.json","local_url_smoke_api":"/api/operator/release-handoff/local-url-smoke.json","publish_smoke_api":"/api/operator/release-handoff/publish-smoke.json","package_preflight_api":"/api/operator/release-handoff/preflight.json","package_preflight_csv":"/api/operator/release-handoff/preflight/export.csv","package_preflight_html_review":"/operator-release-handoff/preflight","artifact_drilldown_api_template":"/api/operator/release-handoff/artifacts/{artifact_id}.json","artifact_drilldown_html_template":"/operator-release-handoff/artifacts/{artifact_id}","trend_history_evidence_api":"/api/operator/release-handoff/trend-history-evidence.json","alarm_event_evidence_api":"/api/operator/release-handoff/alarm-event-evidence.json","weather_forecast_evidence_api":"/api/operator/release-handoff/weather-forecast-evidence.json","predictive_evidence_matrix_api":"/api/operator/release-handoff/evidence-matrix.json","predictive_evidence_matrix_csv":"/api/operator/release-handoff/evidence-matrix.csv","controlled_write_readiness_summary_api":"/api/operator/release-handoff/controlled-write-readiness-summary.json","visual_composer_binding_review_api":"/api/visual-composer/binding-candidates","visual_composer_runtime_gate_api":"/api/visual-composer/runtime-binding-use-gate","visual_composer_runtime_health_review_api":"/api/visual-composer/runtime-health-review","visual_composer_operator_graphics_drilldowns_api":"/api/visual-composer/operator-graphics-drilldowns","visual_composer_runtime_gateway_handoff":"/api/operator/release-handoff","visual_composer_blocker_rollup":"/api/operator/release-handoff/visual-composer-blocker-rollup.json","visual_composer_blocker_rollup_api":"/api/operator/release-handoff/visual-composer-blocker-rollup.json","visual_composer_blocker_rollup_csv":"/api/operator/release-handoff/visual-composer-blocker-rollup/export.csv","visual_composer_blocker_rollup_markdown":"/api/operator/release-handoff/visual-composer-blocker-rollup/report.md","visual_composer_blocker_rollup_html":"/operator-release-handoff/visual-composer-blocker-rollup","site_scene_navigation_api":"/api/graphics/site-scenes","site_scene_navigation_html":"/graphics/site-scenes","site_scene_graph_metadata_index_json":"/api/graphics/site-scene-graph-metadata/index.json","site_scene_graph_metadata_index_csv":"/api/graphics/site-scene-graph-metadata/index.csv","site_scene_graph_metadata_review_json":"/api/graphics/site-scene-graph-metadata/review-index.json","site_scene_graph_metadata_review_html":"/graphics/site-scene-graph-metadata","site_scene_release_evidence_map_json":"/api/graphics/site-scene-graph-metadata/release-evidence-map.json","site_scene_release_evidence_map_csv":"/api/graphics/site-scene-graph-metadata/release-evidence-map/export.csv","visual_composer_ai_planner_decision_audit_api":"/api/graphics/ai/scene-planner/workstation/decision-audits","site_scene_graph_metadata_api_template":"/api/graphics/site-scenes/{scene_uid}/scene-graph-metadata","site_scene_graph_metadata_csv_template":"/api/graphics/site-scenes/{scene_uid}/scene-graph-metadata/export.csv","gateway_sync_buffer_remediation_api":"/api/gateway/sync-buffer/remediation-actions","gateway_sync_buffer_remediation_csv":"/api/gateway/sync-buffer/remediation-actions/export.csv","gateway_sync_buffer_status_api":"/api/gateway/sync-buffer/status","gateway_sync_buffer_delivery_audit_api_template":"/api/gateway/sync-buffer/events/{event_uid}/delivery-audit","html_review":"/operator-release-handoff","cli":"scripts/intellicore_operator_handoff_bundle.py","release_checklist_cli":"scripts/intellicore_release_checklist.py","predictive_markdown_api":"/api/predictive/readiness/report.md","deployment_readiness_api":"/api/deployment/readiness","digitalocean_storage_backup_preflight_api":"/api/deployment/digitalocean/storage-backup-preflight","digitalocean_restore_drill_preflight_api":"/api/deployment/digitalocean/restore-drill-preflight","cutover_rollback_checklist_api":"/api/operator/release-handoff/cutover-rollback-checklist.json","cutover_approval_archive_api":"/api/operator/release-handoff/cutover-approval-archive.json","deployment_runbook_review_api":"/api/operator/release-handoff/deployment-runbook-review.json","evidence_history_api":"/api/operator/release-handoff/evidence-history.json","evidence_review_index_api":"/api/operator/release-handoff/evidence-review-index.json","evidence_review_index_html":"/operator-release-handoff/evidence-review-index","demand_limiting_evidence_bundle_refs":[]},"credentials":"redacted","recommended_next_action":"Resolve listed operator placeholders/non-code blockers, rerun verification commands, then hand off read-only deployment artifacts.","publish_smoke_evidence_retention":{"artifact":"publish-smoke-evidence-retention-section-v1","release_id":"intellicore-20260514T094058754788Z","overall_status":"blocked_publish_smoke_evidence_retention","pass":false,"fail":true,"fail_closed":true,"publish_action_performed":false,"network_action_mode":"no_network_dry_run","deploy_action_mode":"no_deploy_action","credentials":"redacted","checks":[{"name":"publish_smoke","status":"pass_with_placeholders","pass":false,"fail":true,"blockers":["semantic_role:zone_temperature","semantic_role:zone_setpoint","trend_samples","occupancy_signals","weather_observations","occupancy_evidence:explicit_equipment_scope_required","weather_forecast:missing_scoped_weather_forecast","explicit_equipment_scope_required","visual composer explicit equipment scope required","missing Visual Composer AI planner decision audit evidence","DigitalOcean Docker Droplet/VPS target must be explicit","Attached DigitalOcean volume path must be configured before restore drill evidence can be trusted","Database restore drill last-run timestamp must be recorded","Restore drill evidence is stale or timestamp is invalid","Restore drill release package id is missing, invalid, or cross-scope","Restore drill build id must be configured","Restore drill operator approval reference must be archived before production cutover","Restore drill operator approval actor must be recorded","Restore drill operator approval timestamp must be valid and no older than the restore drill","Database restore drill evidence path must be stored on the attached volume","Artifact restore drill evidence path must be stored on the attached volume","Rollback runbook path must be stored on the attached volume","Database backup export evidence path must be stored on the attached volume for restore drill readiness","Artifact backup export evidence path must be stored on the attached volume for restore drill readiness","Database backup retention days must be a positive integer for restore drill readiness","Artifact backup retention days must be a positive integer for restore drill readiness","Restore drill target must be isolated staging/sandbox, not production","Restore drill RTO minutes must be a positive integer","Restore drill RPO minutes must be a positive integer","operator must set target BACnet/IP range before live discovery","operator must set target Modbus host before live enumeration","operator must provide deployed remote base URL before external readiness smoke","manual gate pending: operator_approval_recorded","manual gate pending: backup_restore_path_verified","manual gate pending: rollback_plan_reviewed","manual gate pending: evidence_archive_persisted","manual gate pending: write_and_autopilot_disabled_confirmed","storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture","operator must provide deployed target URL before external publish smoke","controlled-write readiness packet is missing or not ready for publish smoke"]},{"name":"evidence_retention","status":"fresh_with_operator_placeholders","pass":false,"fail":true,"blockers":["semantic_role:zone_temperature","semantic_role:zone_setpoint","trend_samples","occupancy_signals","weather_observations","occupancy_evidence:explicit_equipment_scope_required","weather_forecast:missing_scoped_weather_forecast","explicit_equipment_scope_required","visual composer explicit equipment scope required","missing Visual Composer AI planner decision audit evidence","DigitalOcean Docker Droplet/VPS target must be explicit","Attached DigitalOcean volume path must be configured before restore drill evidence can be trusted","Database restore drill last-run timestamp must be recorded","Restore drill evidence is stale or timestamp is invalid","Restore drill release package id is missing, invalid, or cross-scope","Restore drill build id must be configured","Restore drill operator approval reference must be archived before production cutover","Restore drill operator approval actor must be recorded","Restore drill operator approval timestamp must be valid and no older than the restore drill","Database restore drill evidence path must be stored on the attached volume","Artifact restore drill evidence path must be stored on the attached volume","Rollback runbook path must be stored on the attached volume","Database backup export evidence path must be stored on the attached volume for restore drill readiness","Artifact backup export evidence path must be stored on the attached volume for restore drill readiness","Database backup retention days must be a positive integer for restore drill readiness","Artifact backup retention days must be a positive integer for restore drill readiness","Restore drill target must be isolated staging/sandbox, not production","Restore drill RTO minutes must be a positive integer","Restore drill RPO minutes must be a positive integer","operator must set target BACnet/IP range before live discovery","operator must set target Modbus host before live enumeration","operator must provide deployed remote base URL before external readiness smoke","manual gate pending: operator_approval_recorded","manual gate pending: backup_restore_path_verified","manual gate pending: rollback_plan_reviewed","manual gate pending: evidence_archive_persisted","manual gate pending: write_and_autopilot_disabled_confirmed","storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture","controlled-write readiness packet is missing or not ready for release evidence retention"]},{"name":"manual_release_gates","status":"blocked_manual_operator_gates_pending","pass":false,"fail":true,"blockers":["manual gate pending: operator_approval_recorded","manual gate pending: backup_restore_path_verified","manual gate pending: rollback_plan_reviewed","manual gate pending: evidence_archive_persisted","manual gate pending: write_and_autopilot_disabled_confirmed","storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture"]},{"name":"trend_history_evidence","status":"blocked_trend_history_release_preflight","pass":false,"fail":true,"blockers":["explicit_equipment_scope_required","missing_scoped_trend_history_evidence","source_status:not_requested_explicit_equipment_scope_required"]},{"name":"alarm_event_evidence","status":"blocked_alarm_event_release_preflight","pass":false,"fail":true,"blockers":["explicit_equipment_scope_required","missing_scoped_alarm_event_evidence","source_status:not_requested_explicit_equipment_scope_required"]},{"name":"weather_forecast_evidence","status":"blocked_weather_forecast_release_preflight","pass":false,"fail":true,"blockers":["missing_scoped_weather_forecast","explicit_site_scope_required","weather_forecast_freshness:missing","source_status:blocked_weather_forecast_not_ready"]},{"name":"safe_posture","status":"fail_closed","pass":true,"fail":false,"blockers":[]}],"blockers":["publish_smoke: semantic_role:zone_temperature","publish_smoke: semantic_role:zone_setpoint","publish_smoke: trend_samples","publish_smoke: occupancy_signals","publish_smoke: weather_observations","publish_smoke: occupancy_evidence:explicit_equipment_scope_required","publish_smoke: weather_forecast:missing_scoped_weather_forecast","publish_smoke: explicit_equipment_scope_required","publish_smoke: visual composer explicit equipment scope required","publish_smoke: missing Visual Composer AI planner decision audit evidence","publish_smoke: DigitalOcean Docker Droplet/VPS target must be explicit","publish_smoke: Attached DigitalOcean volume path must be configured before restore drill evidence can be trusted","publish_smoke: Database restore drill last-run timestamp must be recorded","publish_smoke: Restore drill evidence is stale or timestamp is invalid","publish_smoke: Restore drill release package id is missing, invalid, or cross-scope","publish_smoke: Restore drill build id must be configured","publish_smoke: Restore drill operator approval reference must be archived before production cutover","publish_smoke: Restore drill operator approval actor must be recorded","publish_smoke: Restore drill operator approval timestamp must be valid and no older than the restore drill","publish_smoke: Database restore drill evidence path must be stored on the attached volume","publish_smoke: Artifact restore drill evidence path must be stored on the attached volume","publish_smoke: Rollback runbook path must be stored on the attached volume","publish_smoke: Database backup export evidence path must be stored on the attached volume for restore drill readiness","publish_smoke: Artifact backup export evidence path must be stored on the attached volume for restore drill readiness","publish_smoke: Database backup retention days must be a positive integer for restore drill readiness","publish_smoke: Artifact backup retention days must be a positive integer for restore drill readiness","publish_smoke: Restore drill target must be isolated staging/sandbox, not production","publish_smoke: Restore drill RTO minutes must be a positive integer","publish_smoke: Restore drill RPO minutes must be a positive integer","publish_smoke: operator must set target BACnet/IP range before live discovery","publish_smoke: operator must set target Modbus host before live enumeration","publish_smoke: operator must provide deployed remote base URL before external readiness smoke","publish_smoke: manual gate pending: operator_approval_recorded","publish_smoke: manual gate pending: backup_restore_path_verified","publish_smoke: manual gate pending: rollback_plan_reviewed","publish_smoke: manual gate pending: evidence_archive_persisted","publish_smoke: manual gate pending: write_and_autopilot_disabled_confirmed","publish_smoke: storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture","publish_smoke: operator must provide deployed target URL before external publish smoke","publish_smoke: controlled-write readiness packet is missing or not ready for publish smoke","evidence_retention: semantic_role:zone_temperature","evidence_retention: semantic_role:zone_setpoint","evidence_retention: trend_samples","evidence_retention: occupancy_signals","evidence_retention: weather_observations","evidence_retention: occupancy_evidence:explicit_equipment_scope_required","evidence_retention: weather_forecast:missing_scoped_weather_forecast","evidence_retention: explicit_equipment_scope_required","evidence_retention: visual composer explicit equipment scope required","evidence_retention: missing Visual Composer AI planner decision audit evidence","evidence_retention: DigitalOcean Docker Droplet/VPS target must be explicit","evidence_retention: Attached DigitalOcean volume path must be configured before restore drill evidence can be trusted","evidence_retention: Database restore drill last-run timestamp must be recorded","evidence_retention: Restore drill evidence is stale or timestamp is invalid","evidence_retention: Restore drill release package id is missing, invalid, or cross-scope","evidence_retention: Restore drill build id must be configured","evidence_retention: Restore drill operator approval reference must be archived before production cutover","evidence_retention: Restore drill operator approval actor must be recorded","evidence_retention: Restore drill operator approval timestamp must be valid and no older than the restore drill","evidence_retention: Database restore drill evidence path must be stored on the attached volume","evidence_retention: Artifact restore drill evidence path must be stored on the attached volume","evidence_retention: Rollback runbook path must be stored on the attached volume","evidence_retention: Database backup export evidence path must be stored on the attached volume for restore drill readiness","evidence_retention: Artifact backup export evidence path must be stored on the attached volume for restore drill readiness","evidence_retention: Database backup retention days must be a positive integer for restore drill readiness","evidence_retention: Artifact backup retention days must be a positive integer for restore drill readiness","evidence_retention: Restore drill target must be isolated staging/sandbox, not production","evidence_retention: Restore drill RTO minutes must be a positive integer","evidence_retention: Restore drill RPO minutes must be a positive integer","evidence_retention: operator must set target BACnet/IP range before live discovery","evidence_retention: operator must set target Modbus host before live enumeration","evidence_retention: operator must provide deployed remote base URL before external readiness smoke","evidence_retention: manual gate pending: operator_approval_recorded","evidence_retention: manual gate pending: backup_restore_path_verified","evidence_retention: manual gate pending: rollback_plan_reviewed","evidence_retention: manual gate pending: evidence_archive_persisted","evidence_retention: manual gate pending: write_and_autopilot_disabled_confirmed","evidence_retention: storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture","evidence_retention: controlled-write readiness packet is missing or not ready for release evidence retention","manual_release_gates: manual gate pending: operator_approval_recorded","manual_release_gates: manual gate pending: backup_restore_path_verified","manual_release_gates: manual gate pending: rollback_plan_reviewed","manual_release_gates: manual gate pending: evidence_archive_persisted","manual_release_gates: manual gate pending: write_and_autopilot_disabled_confirmed","manual_release_gates: storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture","trend_history_evidence: explicit_equipment_scope_required","trend_history_evidence: missing_scoped_trend_history_evidence","trend_history_evidence: source_status:not_requested_explicit_equipment_scope_required","alarm_event_evidence: explicit_equipment_scope_required","alarm_event_evidence: missing_scoped_alarm_event_evidence","alarm_event_evidence: source_status:not_requested_explicit_equipment_scope_required","weather_forecast_evidence: missing_scoped_weather_forecast","weather_forecast_evidence: explicit_site_scope_required","weather_forecast_evidence: weather_forecast_freshness:missing","weather_forecast_evidence: source_status:blocked_weather_forecast_not_ready"],"safe_posture":{"advisory_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true},"artifact_references":{"publish_smoke_api":"/api/operator/release-handoff/publish-smoke.json","retention_report_api":"/api/operator/release-handoff/evidence-retention.json","package_preflight_api":"/api/operator/release-handoff/preflight.json","package_download_api":"/api/operator/release-handoff/package.json"},"recommended_next_action":"Do not publish customer deployment; clear failed publish-smoke/evidence-retention checks and regenerate the handoff package."},"release_cutover_rollback_checklist":{"artifact":"release-cutover-rollback-checklist-v1","status":"blocked_cutover_rollback_prerequisites","release_package":{"package_id":"intellicore-20260514T094058754788Z","package_path":"/api/operator/release-handoff/package.json","value_state":"configured"},"scope":{"site_ref":"all","building_ref":"all","equipment_ref":"all"},"restore_drill_evidence_state":{"status":"blocked_restore_drill_not_verified","last_run_at_state":"missing","target_environment":"missing","database_restore_evidence":"missing","artifact_restore_evidence":"missing","rollback_runbook":"missing","rto_minutes":null,"rpo_minutes":null,"values_redacted":true},"backup_prerequisites":{"storage_backup_status":"blocked_missing_or_unsafe_storage_posture","database_backup_export":"missing","artifact_backup_export":"missing","droplet_volume_snapshots":"missing_operator_snapshot_expectation","values_redacted":true},"manual_approval_gates":[{"name":"operator_approval_recorded","confirmed":false,"evidence_required":"operator/customer deployment approval recorded outside git before production cutover"},{"name":"backup_restore_path_verified","confirmed":false,"evidence_required":"database and artifact backup export/restore path verified by operator"},{"name":"rollback_plan_reviewed","confirmed":false,"evidence_required":"rollback plan reviewed, including restore point and prior release/package fallback"},{"name":"evidence_archive_persisted","confirmed":false,"evidence_required":"handoff package, integrity manifest, archive index, retention report, and preflight packet persisted outside git"},{"name":"write_and_autopilot_disabled_confirmed","confirmed":false,"evidence_required":"operator confirmed write_execution_enabled=false and autopilot_execution_enabled=false for release"}],"rollback_owner_action":{"owner_state":"placeholder_or_missing","action_ref_state":"placeholder_or_missing","values_redacted":true},"rto_rpo_posture":{"rto_minutes":null,"rpo_minutes":null,"state":"missing_or_invalid"},"checks":[{"name":"package_reference","status":"ready","pass":true,"fail":false},{"name":"explicit_scope","status":"blocked","pass":false,"fail":true},{"name":"restore_drill_evidence","status":"blocked","pass":false,"fail":true},{"name":"backup_prerequisites","status":"blocked","pass":false,"fail":true},{"name":"manual_approval_gates","status":"blocked","pass":false,"fail":true},{"name":"rollback_owner_action","status":"blocked","pass":false,"fail":true},{"name":"read_only_safety","status":"ready","pass":true,"fail":false}],"blockers":["cutover scope site_ref must be explicit before production release","cutover scope building_ref must be explicit before production release","cutover scope equipment_ref must be explicit before production release","restore-drill evidence not ready: blocked_restore_drill_not_verified","restore-drill last-run evidence is missing","restore-drill target must be isolated staging/sandbox","restore-drill database_restore_evidence evidence must be on attached volume","restore-drill artifact_restore_evidence evidence must be on attached volume","restore-drill rollback_runbook evidence must be on attached volume","RTO minutes must be recorded as a positive integer","RPO minutes must be recorded as a positive integer","storage/backup prerequisites not ready: blocked_missing_or_unsafe_storage_posture","Droplet/volume snapshot prerequisite is missing","database_backup_export prerequisite must be configured on attached volume","artifact_backup_export prerequisite must be configured on attached volume","rollback owner placeholder must be replaced before cutover","rollback action/reference placeholder must be replaced before cutover","manual gate pending: operator_approval_recorded","manual gate pending: backup_restore_path_verified","manual gate pending: rollback_plan_reviewed","manual gate pending: evidence_archive_persisted","manual gate pending: write_and_autopilot_disabled_confirmed","storage/backup preflight not ready: blocked_missing_or_unsafe_storage_posture"],"safe_posture":{"advisory_only":true,"read_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true,"mutates_environment":false,"mutates_remote_infrastructure":false,"writes_bas_devices":false},"credentials":"redacted","recommended_operator_next_action":"Resolve cutover/rollback blockers, rerun the handoff package, and do not cut over production until this checklist is ready."},"release_cutover_approval_archive":{"artifact":"release-cutover-approval-archive-evidence-v1","status":"blocked_cutover_approval_archive_prerequisites","release_id":"intellicore-20260514T094058754788Z","generated_at":"2026-05-14T09:40:58.895644Z","package_reference":{"package_id":"intellicore-20260514T094058754788Z","package_path":"/api/operator/release-handoff/package.json","operator_package_id_ref_state":"missing_or_placeholder","operator_package_path_ref_state":"missing_or_placeholder","archive_index_id":"archive-intellicore-20260514T094058754788Z","scope":{"site_ref":"all","building_ref":"all","equipment_ref":"all"}},"artifact_references":{"package_api":"/api/operator/release-handoff/package.json","integrity_manifest_api":"/api/operator/release-handoff/integrity.json","archive_index_api":"/api/operator/release-handoff/archive-index.json","cutover_rollback_checklist_api":"/api/operator/release-handoff/cutover-rollback-checklist.json","cutover_approval_archive_api":"/api/operator/release-handoff/cutover-approval-archive.json","approval_archive_api":"/api/operator/release-handoff/cutover-approval-archive.json"},"approval_archive":{"archive_ref_state":"missing_or_placeholder","checksum_algorithm":"SHA-256","checksum_sha256_state":"missing","expected_checksum_sha256":null,"checksum_verified":false,"approved_at_state":"missing_or_invalid","reviewer_state":"missing_or_placeholder","owner_state":"missing_or_placeholder","values_redacted":true},"runbook_review":{"review_state":"missing_or_unconfirmed","review_ref_state":"missing_or_placeholder","values_redacted":true},"checksum_evidence":{"integrity_manifest_artifact":"operator-release-handoff-integrity-manifest-v1","archive_index_artifact":"operator-release-handoff-archive-index-v1","package_core_checksum_sha256":"9d3c36308cdcb08dd40481507ff71bb5956c7ec917e01a334b0091a921c20dae","actual_package_core_checksum_sha256":"9d3c36308cdcb08dd40481507ff71bb5956c7ec917e01a334b0091a921c20dae","package_checksum_verified":true,"approval_archive_checksum_verified":false},"evidence_freshness":{"status":"stale_or_missing","package_age_minutes":0.002,"approval_age_minutes":null,"max_artifact_age_minutes":120,"checked_at":"2026-05-14T09:40:58.895644Z"},"checks":[{"name":"package_scope_reference","status":"blocked","pass":false,"fail":true},{"name":"approval_archive_reference","status":"blocked","pass":false,"fail":true},{"name":"approval_archive_checksum","status":"blocked","pass":false,"fail":true},{"name":"release_package_checksum","status":"ready","pass":true,"fail":false},{"name":"approval_freshness","status":"blocked","pass":false,"fail":true},{"name":"reviewer_owner","status":"blocked","pass":false,"fail":true},{"name":"runbook_review","status":"blocked","pass":false,"fail":true},{"name":"read_only_safety","status":"ready","pass":true,"fail":false}],"blockers":["approval archive package id reference is missing","approval archive package path reference is missing","approval archive reference is missing","approval archive checksum is missing","approval archive approved-at timestamp is missing or invalid","approval archive reviewer placeholder must be replaced","approval archive owner placeholder must be replaced","deployment runbook review must be confirmed before cutover approval","deployment runbook review reference is missing"],"safe_posture":{"advisory_only":true,"read_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true,"bas_scan_action_mode":"no_bas_scan","bas_write_action_mode":"no_bas_write","network_action_mode":"no_network_dry_run","deploy_action_mode":"no_deploy_action","restore_action_mode":"no_restore_action","publish_action_performed":false},"credentials":"redacted","recommended_operator_next_action":"Do not cut over production; clear approval archive checksum, reviewer/owner, runbook review, scope, freshness, and safety blockers first."},"release_deployment_runbook_review":{"artifact":"release-deployment-runbook-review-evidence-v1","status":"blocked_deployment_runbook_review_prerequisites","release_id":"intellicore-20260514T094058754788Z","generated_at":"2026-05-14T09:40:58.905389Z","package_reference":{"package_id":"intellicore-20260514T094058754788Z","package_path":"/api/operator/release-handoff/package.json","operator_package_id_ref_state":"missing_or_placeholder","operator_package_path_ref_state":"missing_or_placeholder","archive_index_id":"archive-intellicore-20260514T094058754788Z","scope":{"site_ref":"all","building_ref":"all","equipment_ref":"all"}},"artifact_references":{"package_api":"/api/operator/release-handoff/package.json","integrity_manifest_api":"/api/operator/release-handoff/integrity.json","archive_index_api":"/api/operator/release-handoff/archive-index.json","cutover_rollback_checklist_api":"/api/operator/release-handoff/cutover-rollback-checklist.json","cutover_approval_archive_api":"/api/operator/release-handoff/cutover-approval-archive.json","deployment_runbook_review_api":"/api/operator/release-handoff/deployment-runbook-review.json"},"runbook_review":{"review_ref_state":"missing_or_placeholder","checksum_algorithm":"SHA-256","checksum_sha256_state":"missing","expected_checksum_sha256":null,"checksum_verified":false,"reviewed_at_state":"missing_or_invalid","reviewer_state":"missing_or_placeholder","owner_state":"missing_or_placeholder","runbook_version_state":"missing_or_placeholder","values_redacted":true},"checksum_evidence":{"integrity_manifest_artifact":"operator-release-handoff-integrity-manifest-v1","archive_index_artifact":"operator-release-handoff-archive-index-v1","package_core_checksum_sha256":"f4f180517f48f61bb2bd971c5fd9658c782287d9799a42461e9e29f0cab1fb47","actual_package_core_checksum_sha256":"f4f180517f48f61bb2bd971c5fd9658c782287d9799a42461e9e29f0cab1fb47","package_checksum_verified":true,"runbook_review_checksum_verified":false},"evidence_freshness":{"status":"stale_or_missing","package_age_minutes":0.003,"review_age_minutes":null,"max_artifact_age_minutes":120,"checked_at":"2026-05-14T09:40:58.905389Z"},"checks":[{"name":"package_scope_reference","status":"blocked","pass":false,"fail":true},{"name":"runbook_review_reference","status":"blocked","pass":false,"fail":true},{"name":"runbook_review_checksum","status":"blocked","pass":false,"fail":true},{"name":"release_package_checksum","status":"ready","pass":true,"fail":false},{"name":"review_freshness","status":"blocked","pass":false,"fail":true},{"name":"reviewer_owner","status":"blocked","pass":false,"fail":true},{"name":"runbook_version","status":"blocked","pass":false,"fail":true},{"name":"read_only_safety","status":"ready","pass":true,"fail":false}],"blockers":["deployment runbook package id reference is missing","deployment runbook package path reference is missing","deployment runbook review reference is missing","deployment runbook review checksum is missing","deployment runbook reviewed-at timestamp is missing or invalid","deployment runbook reviewer placeholder must be replaced","deployment runbook owner placeholder must be replaced","deployment runbook version placeholder must be replaced"],"safe_posture":{"advisory_only":true,"read_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true,"bas_scan_action_mode":"no_bas_scan","bas_write_action_mode":"no_bas_write","network_action_mode":"no_network_dry_run","deploy_action_mode":"no_deploy_action","restore_action_mode":"no_restore_action","publish_action_performed":false},"credentials":"redacted","recommended_operator_next_action":"Do not cut over production; clear deployment runbook review checksum, reviewer/owner/version, scope, freshness, and safety blockers first."},"owner_operator_summary":{"artifact":"owner-operator-release-summary-v1","generated_at":"2026-05-14T09:40:58.754788Z","release_id":"intellicore-20260514T094058754788Z","scope":{"customer_ref":"not_provided","site_ref":"all","building_ref":"all","equipment_ref":"all","point_refs":[]},"trend_history":{"status":"blocked_trend_history_release_preflight","freshness":"missing","point_count":0,"total_samples":0,"stale_point_ids":[],"blockers":["explicit_equipment_scope_required","missing_scoped_trend_history_evidence","source_status:not_requested_explicit_equipment_scope_required"]},"alarm_event":{"status":"blocked_alarm_event_release_preflight","freshness":"missing","event_count":0,"active_event_count":0,"critical_or_high_event_count":0,"acknowledged_count":0,"blockers":["explicit_equipment_scope_required","missing_scoped_alarm_event_evidence","source_status:not_requested_explicit_equipment_scope_required"]},"freshness_staleness":{"trend_history":"missing","alarm_event":"missing"},"critical_blockers":[{"category":"trend_history","blocker":"explicit_equipment_scope_required","owner_visible":"true"},{"category":"trend_history","blocker":"missing_scoped_trend_history_evidence","owner_visible":"true"},{"category":"trend_history","blocker":"source_status:not_requested_explicit_equipment_scope_required","owner_visible":"true"},{"category":"alarm_event","blocker":"explicit_equipment_scope_required","owner_visible":"true"},{"category":"alarm_event","blocker":"missing_scoped_alarm_event_evidence","owner_visible":"true"},{"category":"alarm_event","blocker":"source_status:not_requested_explicit_equipment_scope_required","owner_visible":"true"},{"category":"operator_handoff","blocker":"semantic_role:zone_temperature","owner_visible":"true"},{"category":"operator_handoff","blocker":"semantic_role:zone_setpoint","owner_visible":"true"},{"category":"operator_handoff","blocker":"trend_samples","owner_visible":"true"},{"category":"operator_handoff","blocker":"occupancy_signals","owner_visible":"true"},{"category":"operator_handoff","blocker":"weather_observations","owner_visible":"true"},{"category":"operator_handoff","blocker":"occupancy_evidence:explicit_equipment_scope_required","owner_visible":"true"},{"category":"operator_handoff","blocker":"weather_forecast:missing_scoped_weather_forecast","owner_visible":"true"}],"safety_posture":{"advisory_only":true,"write_execution_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true,"read_only":true,"alarm_acknowledgement_enabled":false,"bas_scan_action_mode":"no_bas_scan","bas_write_action_mode":"no_bas_write","network_action_mode":"no_network_dry_run","deploy_action_mode":"no_deploy_action","publish_action_performed":false},"evidence_references":{"handoff_json_api":"/api/operator/release-handoff","handoff_markdown_api":"/api/operator/release-handoff/report.md","package_preflight_api":"/api/operator/release-handoff/preflight.json","trend_history_evidence_api":"/api/operator/release-handoff/trend-history-evidence.json","alarm_event_evidence_api":"/api/operator/release-handoff/alarm-event-evidence.json","integrity_manifest_api":"/api/operator/release-handoff/integrity.json","archive_index_api":"/api/operator/release-handoff/archive-index.json"},"publish_deploy_readiness":{"ready_for_owner_handoff":false,"trend_history_ready":false,"alarm_event_ready":false,"safety_fail_closed":true,"overall_status":"pass_with_operator_placeholders","deployment_status":"deployable_with_placeholders","release_checklist_status":"pass_with_placeholders","remote_smoke_requires_operator_url_and_auth":true},"recommended_owner_action":"Do not approve owner handoff yet; require operator to clear critical trend/alarm evidence blockers first.","recommended_operator_action":"Refresh scoped trend/alarm evidence, regenerate preflight artifacts, and rerun no-network/no-write verification.","credentials":"redacted","advisory_only":true,"read_only":true,"write_execution_enabled":false,"alarm_acknowledgement_enabled":false,"autopilot_execution_enabled":false,"physical_execution_blocked":true}}