{
  "ok": false,
  "generated_at": "2026-06-26T21:36:30+00:00",
  "summary": {
    "production_complete": false,
    "local_production_complete": false,
    "remote_evidence_complete": false,
    "completion_evidence": {
      "complete": false,
      "completion_source": "incomplete",
      "local_complete": false,
      "remote_evidence_complete": false,
      "required_reports": 71,
      "present_required_reports": 65,
      "missing_required_report_count": 6,
      "failed_check_ids": [
        "remote_required_reports_present",
        "remote_release_upload_bundle_verified",
        "remote_telegram_notify_sent",
        "remote_telegram_notify_fresh",
        "remote_deployed_manifest_verified"
      ],
      "remote_recurring_daily_operation_ok": true,
      "remote_ops_success_days": 5,
      "remote_ops_consecutive_success_days": 5,
      "remote_ops_success_days_required": 2,
      "remote_ops_latest_age_hours": 10.01,
      "remote_ops_latest_age_hours_max": 30.0,
      "remote_telegram_notify_sent": false,
      "remote_telegram_notify_fresh": false,
      "remote_telegram_notify_message_length": 0,
      "public_endpoints": 35,
      "remote_deployed_manifest_ok": false,
      "remote_mutable_report_count": 51,
      "remote_mutable_reports_present": 51,
      "remote_evidence_manifest_ok": true,
      "remote_evidence_archive_ok": true,
      "remote_release_upload_bundle_verified": false,
      "remote_source_freshness_ok": true,
      "remote_source_coverage_ok": true,
      "remote_market_source_coverage_ok": true
    },
    "failed_gates": 10,
    "open_steps": 9,
    "ready_to_go_live": false,
    "latest_package_ok": false,
    "latest_backup_ok": true,
    "configured_deploy_mode": "docker",
    "configured_public_dashboard_url": "https://35-221-72-238.sslip.io/dashboard.html"
  },
  "gate_steps": [
    {
      "gate": "deploy_mode_selected",
      "status": "open",
      "title": "DEPLOY_MODEをsystemdまたはdockerに固定する",
      "primary_command": "scripts/operator_go_live.sh --validate-inputs-only",
      "commands": [
        "scripts/operator_go_live.sh --validate-inputs-only",
        "sudo scripts/configure_env.sh --app-dir /app --env-file /app/.env --public-url \"https://35-221-72-238.sslip.io/dashboard.html\" --telegram-bot-token \"$TELEGRAM_BOT_TOKEN\" --telegram-chat-id \"$TELEGRAM_CHAT_ID\" --deploy-mode systemd --validate",
        "sudo scripts/configure_env.sh --app-dir /app --env-file /app/.env --public-url \"https://35-221-72-238.sslip.io/dashboard.html\" --telegram-bot-token \"$TELEGRAM_BOT_TOKEN\" --telegram-chat-id \"$TELEGRAM_CHAT_ID\" --deploy-mode docker --dashboard-port 8080 --validate"
      ]
    },
    {
      "gate": "env_clear",
      "status": "open",
      "title": ".envにTelegramと公開URLを入れて形式チェックする",
      "primary_command": "scripts/operator_go_live.sh --validate-inputs-only",
      "commands": [
        "scripts/operator_go_live.sh --validate-inputs-only",
        "python3 scripts/market_intel.py env-check --env-file /app/.env --require-telegram --require-public-url --require-deploy-mode --format json --output reports/env_check.json"
      ],
      "required_env": [
        "TELEGRAM_BOT_TOKEN",
        "TELEGRAM_CHAT_ID",
        "PUBLIC_DASHBOARD_URL",
        "DEPLOY_MODE"
      ]
    },
    {
      "gate": "deployment_clear",
      "status": "open",
      "title": "選択した実行基盤を起動して配備監査を通す",
      "primary_command": "scripts/operator_go_live.sh --all-strict",
      "commands": [
        "scripts/operator_go_live.sh --all-strict",
        "scripts/operator_go_live.sh --push",
        "scripts/operator_go_live.sh --preflight-only",
        "docker compose up -d --build",
        "docker compose ps",
        "python3 scripts/market_intel.py deployment-check --env-file /app/.env --deploy-mode docker --require-telegram --format json --output reports/deployment_check.json"
      ]
    },
    {
      "gate": "public_dashboard_clear",
      "status": "ok",
      "title": "reports/を公開し公開URLから全JSONを検証する",
      "primary_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py public-dashboard-check --env-file /app/.env --require-public-url --format json --output reports/public_dashboard_check.json",
        "curl -fsS \"https://35-221-72-238.sslip.io/dashboard.html\""
      ]
    },
    {
      "gate": "telegram_test_sent",
      "status": "open",
      "title": "Telegramへ実送信テストを行う",
      "primary_command": "scripts/operator_go_live.sh --send-telegram-test",
      "commands": [
        "scripts/operator_go_live.sh --send-telegram-test",
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py telegram-test --env-file /app/.env --send --format json --output reports/telegram_test.json",
        "python3 scripts/market_intel.py telegram-notify --output reports/telegram_notify.json"
      ]
    },
    {
      "gate": "telegram_content_clear",
      "status": "open",
      "title": "Telegram戦略サマリーの本文を監査する",
      "primary_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py telegram-content-check --require-dashboard-url --format json --output reports/telegram_content_check.json"
      ]
    },
    {
      "gate": "requirements_complete",
      "status": "open",
      "title": "要件監査を再生成してpartialを潰す",
      "primary_command": "scripts/operator_go_live.sh --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py source-candidates --check --output reports/source_candidates.json",
        "python3 scripts/market_intel.py source-promotion-plan --candidate-report reports/source_candidates.json --output reports/source_promotion_plan.json --markdown reports/source_promotion_plan.md",
        "SOURCE_PROMOTION_VERIFY_RUN=1 scripts/finalize_vps.sh --app-dir /app --env-file /app/.env --service-name market-intel --deploy-mode docker --apply-promotions",
        "python3 scripts/market_intel.py source-coverage --format json --output reports/source_coverage.json",
        "python3 scripts/market_intel.py market-source-coverage --format json --output reports/market_source_coverage.json",
        "python3 scripts/market_intel.py requirements-audit --format json --output reports/requirements_audit.json --markdown reports/requirements_audit.md"
      ]
    },
    {
      "gate": "readiness_clear",
      "status": "open",
      "title": "本番準備監査を再生成する",
      "primary_command": "scripts/operator_go_live.sh --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py readiness --strict --format json --output reports/readiness.json --pending-threshold 3000"
      ]
    },
    {
      "gate": "health_clear",
      "status": "open",
      "title": "health警告を確認し、必要なら運用アラートを送る",
      "primary_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py health --output reports/health.json --pending-threshold 3000",
        "python3 scripts/market_intel.py health-notify --notify-ok"
      ]
    },
    {
      "gate": "backup_verified_recent",
      "status": "ok",
      "title": "本番直近バックアップを検証する",
      "primary_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py backup --keep 14 --format text",
        "python3 scripts/market_intel.py backup-verify --format text"
      ]
    },
    {
      "gate": "backup_drill_clear",
      "status": "ok",
      "title": "バックアップ復旧ドリルを通して復元可能性を確認する",
      "primary_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py backup-drill --format text --output reports/backup_drill.json"
      ]
    },
    {
      "gate": "final_audit",
      "status": "open",
      "title": "最後にproduction-auditを通す",
      "primary_command": "scripts/operator_go_live.sh --wait --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --wait --check-evidence --strict-evidence",
        "scripts/operator_go_live.sh --all-strict",
        "scripts/operator_go_live.sh --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py production-audit --env-file /app/.env --deploy-mode docker --format json --output reports/production_audit.json --markdown reports/production_audit.md",
        "python3 scripts/market_intel.py dashboard --limit 40"
      ]
    }
  ],
  "open_steps": [
    {
      "gate": "deploy_mode_selected",
      "status": "open",
      "title": "DEPLOY_MODEをsystemdまたはdockerに固定する",
      "primary_command": "scripts/operator_go_live.sh --validate-inputs-only",
      "commands": [
        "scripts/operator_go_live.sh --validate-inputs-only",
        "sudo scripts/configure_env.sh --app-dir /app --env-file /app/.env --public-url \"https://35-221-72-238.sslip.io/dashboard.html\" --telegram-bot-token \"$TELEGRAM_BOT_TOKEN\" --telegram-chat-id \"$TELEGRAM_CHAT_ID\" --deploy-mode systemd --validate",
        "sudo scripts/configure_env.sh --app-dir /app --env-file /app/.env --public-url \"https://35-221-72-238.sslip.io/dashboard.html\" --telegram-bot-token \"$TELEGRAM_BOT_TOKEN\" --telegram-chat-id \"$TELEGRAM_CHAT_ID\" --deploy-mode docker --dashboard-port 8080 --validate"
      ]
    },
    {
      "gate": "env_clear",
      "status": "open",
      "title": ".envにTelegramと公開URLを入れて形式チェックする",
      "primary_command": "scripts/operator_go_live.sh --validate-inputs-only",
      "commands": [
        "scripts/operator_go_live.sh --validate-inputs-only",
        "python3 scripts/market_intel.py env-check --env-file /app/.env --require-telegram --require-public-url --require-deploy-mode --format json --output reports/env_check.json"
      ],
      "required_env": [
        "TELEGRAM_BOT_TOKEN",
        "TELEGRAM_CHAT_ID",
        "PUBLIC_DASHBOARD_URL",
        "DEPLOY_MODE"
      ]
    },
    {
      "gate": "deployment_clear",
      "status": "open",
      "title": "選択した実行基盤を起動して配備監査を通す",
      "primary_command": "scripts/operator_go_live.sh --all-strict",
      "commands": [
        "scripts/operator_go_live.sh --all-strict",
        "scripts/operator_go_live.sh --push",
        "scripts/operator_go_live.sh --preflight-only",
        "docker compose up -d --build",
        "docker compose ps",
        "python3 scripts/market_intel.py deployment-check --env-file /app/.env --deploy-mode docker --require-telegram --format json --output reports/deployment_check.json"
      ]
    },
    {
      "gate": "telegram_test_sent",
      "status": "open",
      "title": "Telegramへ実送信テストを行う",
      "primary_command": "scripts/operator_go_live.sh --send-telegram-test",
      "commands": [
        "scripts/operator_go_live.sh --send-telegram-test",
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py telegram-test --env-file /app/.env --send --format json --output reports/telegram_test.json",
        "python3 scripts/market_intel.py telegram-notify --output reports/telegram_notify.json"
      ]
    },
    {
      "gate": "telegram_content_clear",
      "status": "open",
      "title": "Telegram戦略サマリーの本文を監査する",
      "primary_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py telegram-content-check --require-dashboard-url --format json --output reports/telegram_content_check.json"
      ]
    },
    {
      "gate": "requirements_complete",
      "status": "open",
      "title": "要件監査を再生成してpartialを潰す",
      "primary_command": "scripts/operator_go_live.sh --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py source-candidates --check --output reports/source_candidates.json",
        "python3 scripts/market_intel.py source-promotion-plan --candidate-report reports/source_candidates.json --output reports/source_promotion_plan.json --markdown reports/source_promotion_plan.md",
        "SOURCE_PROMOTION_VERIFY_RUN=1 scripts/finalize_vps.sh --app-dir /app --env-file /app/.env --service-name market-intel --deploy-mode docker --apply-promotions",
        "python3 scripts/market_intel.py source-coverage --format json --output reports/source_coverage.json",
        "python3 scripts/market_intel.py market-source-coverage --format json --output reports/market_source_coverage.json",
        "python3 scripts/market_intel.py requirements-audit --format json --output reports/requirements_audit.json --markdown reports/requirements_audit.md"
      ]
    },
    {
      "gate": "readiness_clear",
      "status": "open",
      "title": "本番準備監査を再生成する",
      "primary_command": "scripts/operator_go_live.sh --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py readiness --strict --format json --output reports/readiness.json --pending-threshold 3000"
      ]
    },
    {
      "gate": "health_clear",
      "status": "open",
      "title": "health警告を確認し、必要なら運用アラートを送る",
      "primary_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py health --output reports/health.json --pending-threshold 3000",
        "python3 scripts/market_intel.py health-notify --notify-ok"
      ]
    },
    {
      "gate": "final_audit",
      "status": "open",
      "title": "最後にproduction-auditを通す",
      "primary_command": "scripts/operator_go_live.sh --wait --check-evidence --strict-evidence",
      "commands": [
        "scripts/operator_go_live.sh --wait --check-evidence --strict-evidence",
        "scripts/operator_go_live.sh --all-strict",
        "scripts/operator_go_live.sh --check-evidence --strict-evidence",
        "python3 scripts/market_intel.py production-audit --env-file /app/.env --deploy-mode docker --format json --output reports/production_audit.json --markdown reports/production_audit.md",
        "python3 scripts/market_intel.py dashboard --limit 40"
      ]
    }
  ],
  "completion_evidence": {
    "complete": false,
    "completion_source": "incomplete",
    "local_complete": false,
    "remote_evidence_complete": false,
    "required_reports": 71,
    "present_required_reports": 65,
    "missing_required_report_count": 6,
    "failed_check_ids": [
      "remote_required_reports_present",
      "remote_release_upload_bundle_verified",
      "remote_telegram_notify_sent",
      "remote_telegram_notify_fresh",
      "remote_deployed_manifest_verified"
    ],
    "remote_recurring_daily_operation_ok": true,
    "remote_ops_success_days": 5,
    "remote_ops_consecutive_success_days": 5,
    "remote_ops_success_days_required": 2,
    "remote_ops_latest_age_hours": 10.01,
    "remote_ops_latest_age_hours_max": 30.0,
    "remote_telegram_notify_sent": false,
    "remote_telegram_notify_fresh": false,
    "remote_telegram_notify_message_length": 0,
    "public_endpoints": 35,
    "remote_deployed_manifest_ok": false,
    "remote_mutable_report_count": 51,
    "remote_mutable_reports_present": 51,
    "remote_evidence_manifest_ok": true,
    "remote_evidence_archive_ok": true,
    "remote_release_upload_bundle_verified": false,
    "remote_source_freshness_ok": true,
    "remote_source_coverage_ok": true,
    "remote_market_source_coverage_ok": true
  },
  "production_audit_summary": {
    "complete": false,
    "local_complete": false,
    "remote_evidence_complete": false,
    "completion_evidence": {
      "complete": false,
      "completion_source": "incomplete",
      "local_complete": false,
      "remote_evidence_complete": false,
      "required_reports": 71,
      "present_required_reports": 65,
      "missing_required_report_count": 6,
      "failed_check_ids": [
        "remote_required_reports_present",
        "remote_release_upload_bundle_verified",
        "remote_telegram_notify_sent",
        "remote_telegram_notify_fresh",
        "remote_deployed_manifest_verified"
      ],
      "remote_recurring_daily_operation_ok": true,
      "remote_ops_success_days": 5,
      "remote_ops_consecutive_success_days": 5,
      "remote_ops_success_days_required": 2,
      "remote_ops_latest_age_hours": 10.01,
      "remote_ops_latest_age_hours_max": 30.0,
      "remote_telegram_notify_sent": false,
      "remote_telegram_notify_fresh": false,
      "remote_telegram_notify_message_length": 0,
      "public_endpoints": 35,
      "remote_deployed_manifest_ok": false,
      "remote_mutable_report_count": 51,
      "remote_mutable_reports_present": 51,
      "remote_evidence_manifest_ok": true,
      "remote_evidence_archive_ok": true,
      "remote_release_upload_bundle_verified": false,
      "remote_source_freshness_ok": true,
      "remote_source_coverage_ok": true,
      "remote_market_source_coverage_ok": true
    },
    "gates": 15,
    "passed": 5,
    "failed": 10,
    "local_failed": 10,
    "failed_gate_ids": [
      "requirements_complete",
      "readiness_clear",
      "deploy_mode_selected",
      "deployment_clear",
      "env_clear",
      "dashboard_content_clear",
      "telegram_content_clear",
      "source_candidates_resolved",
      "telegram_test_sent",
      "health_clear"
    ],
    "local_failed_gate_ids": [
      "requirements_complete",
      "readiness_clear",
      "deploy_mode_selected",
      "deployment_clear",
      "env_clear",
      "dashboard_content_clear",
      "telegram_content_clear",
      "source_candidates_resolved",
      "telegram_test_sent",
      "health_clear"
    ]
  },
  "remote_evidence_summary": {
    "complete": false,
    "checks": 34,
    "passed": 29,
    "failed": 5,
    "failed_check_ids": [
      "remote_required_reports_present",
      "remote_release_upload_bundle_verified",
      "remote_telegram_notify_sent",
      "remote_telegram_notify_fresh",
      "remote_deployed_manifest_verified"
    ],
    "required_reports": 71,
    "present_required_reports": 65,
    "missing_required_report_count": 6,
    "required_report_coverage": 0.9155,
    "next_missing_required_reports": [
      "weekly_market_strategy_report.json",
      "weekly_market_strategy_report.md",
      "weekly_capital_flow_themes.csv",
      "weekly_attention_companies.csv",
      "weekly_market_strategy_telegram.txt",
      "weekly_market_strategy_telegram.json"
    ],
    "missing_required_reports": [
      "weekly_market_strategy_report.json",
      "weekly_market_strategy_report.md",
      "weekly_capital_flow_themes.csv",
      "weekly_attention_companies.csv",
      "weekly_market_strategy_telegram.txt",
      "weekly_market_strategy_telegram.json"
    ],
    "public_endpoints": 35,
    "telegram_send_ok": true,
    "remote_telegram_notify_sent": false,
    "remote_telegram_notify_status": "skipped_missing_credentials",
    "remote_telegram_notify_api_ok": false,
    "remote_telegram_notify_message_length": 0,
    "remote_telegram_notify_fresh": false,
    "remote_telegram_notify_date": "",
    "remote_telegram_content_date": "2026-06-11",
    "remote_telegram_notify_age_hours": 63.845669873333335,
    "production_complete": true,
    "remote_release_upload_bundle_ok": true,
    "remote_release_upload_bundle_verified": false,
    "remote_release_upload_bundle_sha_matches": false,
    "remote_release_upload_bundle_sha256": "a5b3b8435dc628c178e898fcf9342a638cfc2992673dd36d31914fa982270fae",
    "remote_deployed_release_sha256": "b32e3e95beb3b1510238b1838b6c56b924b7f4e2d7acc79a7a810bbedc33bfa3",
    "remote_deploy_release_sha256": "b32e3e95beb3b1510238b1838b6c56b924b7f4e2d7acc79a7a810bbedc33bfa3",
    "remote_deploy_release_report_sha256": "a5b3b8435dc628c178e898fcf9342a638cfc2992673dd36d31914fa982270fae",
    "ops_snapshot_open_items": 0,
    "remote_source_followup_sources": 3,
    "remote_source_followup_counts": {
      "fetch_error": 3
    },
    "remote_source_candidate_only_sources": 0,
    "remote_source_silent_gap_sources": 0,
    "remote_source_freshness_ok": true,
    "remote_source_freshness_errors": 0,
    "remote_source_freshness_warnings": 0,
    "remote_source_target_reference_ok": true,
    "remote_source_target_official_targets": 59,
    "remote_source_target_configured_targets": 59,
    "remote_source_target_missing_in_config": 0,
    "remote_source_target_extra_in_config": 0,
    "remote_source_target_host_drift": 0,
    "remote_source_target_fallback_used": false,
    "remote_source_coverage_ok": true,
    "remote_source_coverage_targets": 59,
    "remote_source_coverage_active": 59,
    "remote_source_coverage_monitoring_verified": 59,
    "remote_source_coverage_collection_verified": 59,
    "remote_source_coverage_collection_unverified_targets": [],
    "remote_source_coverage_missing": 0,
    "remote_source_coverage_candidate_only": 0,
    "remote_market_source_coverage_ok": true,
    "remote_market_source_coverage_targets": 70,
    "remote_market_source_coverage_active": 70,
    "remote_market_source_coverage_monitoring_verified": 70,
    "remote_market_source_coverage_collection_verified": 70,
    "remote_market_source_coverage_collection_unverified_targets": [],
    "remote_market_source_coverage_missing": 0,
    "remote_market_source_coverage_candidate_only": 0,
    "remote_ops_monitor_ok": true,
    "remote_daily_lock_audit_ok": true,
    "remote_daily_lock_status": "completed",
    "remote_daily_lock_ops_success_days": 5,
    "remote_daily_lock_ops_consecutive_success_days": 5,
    "remote_recurring_daily_operation_ok": true,
    "remote_ops_success_days": 5,
    "remote_ops_consecutive_success_days": 5,
    "remote_ops_success_days_required": 2,
    "remote_ops_latest_age_hours": 10.01,
    "remote_ops_latest_age_hours_max": 30.0,
    "remote_strategy_reuse_ok": true,
    "remote_plain_explainer_analyses": 8115,
    "remote_lens_reuse_analyses": 8111,
    "remote_source_strategy_context_reuse_ok": true,
    "remote_source_strategy_eligible_analyses": 8115,
    "remote_source_strategy_reused_after": 8115,
    "remote_backup_drill_ok": true,
    "remote_backup_drill_db_integrity_ok": true,
    "remote_backup_drill_db_hash_ok": true,
    "remote_backup_drill_report_members": 80,
    "remote_runtime_host": "kabu-engine-staging-350gb.asia-northeast1-b.c.gen-lang-client-0996387302.internal",
    "remote_runtime_ok": true,
    "remote_deployed_manifest_present": true,
    "remote_deployed_manifest_ok": false,
    "remote_deployed_manifest_verified_required": 38,
    "remote_mutable_report_count": 51,
    "remote_mutable_reports_present": 51,
    "remote_mutable_missing_reports": [],
    "remote_finalize_returncode": 0,
    "remote_finalize_command": "scripts/finalize_vps.sh --app-dir /opt/market-intel-engine --env-file /opt/market-intel-engine/.env --service-name market-intel --nginx-site-name market-intel.conf --deploy-mode docker",
    "remote_finalize_apply_promotions": false,
    "remote_finalize_promotion_verify_run": true,
    "remote_finalize_log_collected": true,
    "remote_finalize_log_size": 1360267,
    "remote_evidence_manifest_ok": true,
    "remote_evidence_manifest_files": 64,
    "remote_evidence_manifest_release_sha256": "b32e3e95beb3b1510238b1838b6c56b924b7f4e2d7acc79a7a810bbedc33bfa3",
    "remote_evidence_manifest_release_sha_matches": true,
    "remote_evidence_manifest_required_reports": 69,
    "remote_evidence_manifest_present_required_reports": 63,
    "remote_evidence_manifest_missing_required_reports": 6,
    "remote_evidence_archive_ok": true,
    "remote_evidence_archive_files": 65,
    "remote_evidence_archive_sha256": "4d04ceb5aee3ed15765fa8e8686bdb077a887b110ceb1dc0c632bea82a409baf",
    "remote_evidence_archive_manifest_release_sha256": "b32e3e95beb3b1510238b1838b6c56b924b7f4e2d7acc79a7a810bbedc33bfa3",
    "remote_evidence_archive_manifest_release_sha_matches": true,
    "remote_evidence_archive_manifest_required_reports": 69,
    "remote_evidence_archive_manifest_present_required_reports": 63,
    "remote_evidence_archive_manifest_missing_required_reports": 6,
    "remediation_actions": [
      {
        "id": "redeploy_release",
        "title": "配布zipをVPSへ再投入する",
        "command": "scripts/operator_go_live.sh --push",
        "detail": "展開manifest、mutable report、ランタイム証跡が欠ける場合は、最新zipを再投入してbootstrap/finalizeを走らせます。",
        "priority": 10,
        "failed_check": "remote_release_upload_bundle_verified"
      },
      {
        "id": "collect_remote_evidence",
        "title": "回収済みVPS証跡を更新する",
        "command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
        "detail": "VPS上でfinalize_vps.shを再実行し、必須レポート、runtime証跡、manifest、archiveを回収して再判定します。",
        "priority": 20,
        "failed_check": "remote_required_reports_present"
      }
    ],
    "next_remediation_action": {
      "id": "redeploy_release",
      "title": "配布zipをVPSへ再投入する",
      "command": "scripts/operator_go_live.sh --push",
      "detail": "展開manifest、mutable report、ランタイム証跡が欠ける場合は、最新zipを再投入してbootstrap/finalizeを走らせます。",
      "priority": 10,
      "failed_check": "remote_release_upload_bundle_verified"
    },
    "gap_report": {
      "complete": false,
      "total_failed_checks": 5,
      "phase_count": 3,
      "phases": [
        {
          "phase": "deployment",
          "label": "VPS配布・本番ゲート",
          "failed_checks": 2,
          "checks": [
            "remote_release_upload_bundle_verified",
            "remote_deployed_manifest_verified"
          ],
          "next_action": {
            "id": "redeploy_release",
            "title": "配布zipをVPSへ再投入する",
            "command": "scripts/operator_go_live.sh --push",
            "detail": "展開manifest、mutable report、ランタイム証跡が欠ける場合は、最新zipを再投入してbootstrap/finalizeを走らせます。",
            "priority": 10
          }
        },
        {
          "phase": "telegram",
          "label": "Telegram通知",
          "failed_checks": 2,
          "checks": [
            "remote_telegram_notify_sent",
            "remote_telegram_notify_fresh"
          ],
          "next_action": {
            "id": "collect_remote_evidence",
            "title": "回収済みVPS証跡を更新する",
            "command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
            "detail": "VPS上でfinalize_vps.shを再実行し、必須レポート、runtime証跡、manifest、archiveを回収して再判定します。",
            "priority": 20
          }
        },
        {
          "phase": "evidence_integrity",
          "label": "証跡ファイル完全性",
          "failed_checks": 1,
          "checks": [
            "remote_required_reports_present"
          ],
          "next_action": {
            "id": "collect_remote_evidence",
            "title": "回収済みVPS証跡を更新する",
            "command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
            "detail": "VPS上でfinalize_vps.shを再実行し、必須レポート、runtime証跡、manifest、archiveを回収して再判定します。",
            "priority": 20
          }
        }
      ],
      "missing_required_report_count": 6,
      "missing_required_report_categories": [
        {
          "category": "ops",
          "label": "運用監視",
          "missing": 6,
          "examples": [
            "weekly_market_strategy_report.json",
            "weekly_market_strategy_report.md",
            "weekly_capital_flow_themes.csv",
            "weekly_attention_companies.csv",
            "weekly_market_strategy_telegram.txt",
            "weekly_market_strategy_telegram.json"
          ]
        }
      ],
      "blockers": [
        {
          "phase": "deployment",
          "label": "VPS配布・本番ゲート",
          "failed_checks": 2,
          "first_check": "remote_release_upload_bundle_verified",
          "next_action_id": "redeploy_release",
          "next_command": "scripts/operator_go_live.sh --push"
        },
        {
          "phase": "telegram",
          "label": "Telegram通知",
          "failed_checks": 2,
          "first_check": "remote_telegram_notify_sent",
          "next_action_id": "collect_remote_evidence",
          "next_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence"
        },
        {
          "phase": "evidence_integrity",
          "label": "証跡ファイル完全性",
          "failed_checks": 1,
          "first_check": "remote_required_reports_present",
          "next_action_id": "collect_remote_evidence",
          "next_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence"
        }
      ]
    },
    "operator_context": {
      "stage": "partial_remote_collection",
      "label": "VPS証跡の一部不足",
      "detail": "VPS証跡は回収済みですが、必須レポートが不足しています。finalizeと回収を再実行してください。",
      "evidence_dir_present": true,
      "present_required_reports": 65,
      "required_reports": 71,
      "primary_action_id": "collect_remote_evidence",
      "primary_command": "scripts/operator_go_live.sh --collect --check-evidence --strict-evidence",
      "primary_action_title": "回収済みVPS証跡を更新する"
    },
    "bootstrap_exception": {
      "applied": false
    }
  },
  "env_check_summary": {
    "errors": 2,
    "warnings": 41,
    "env_file": "/app/.env",
    "keys": [],
    "runtime_checks_included": true,
    "operator_inputs_ready": false,
    "operator_inputs_missing": [
      "VPS_HOST",
      "VPS_USER",
      "PUBLIC_DASHBOARD_URL",
      "TELEGRAM_BOT_TOKEN",
      "TELEGRAM_CHAT_ID",
      "DEPLOY_MODE"
    ],
    "operator_inputs_invalid": [
      "env_deploy_mode_valid"
    ]
  },
  "deployment_check_summary": {
    "errors": 0,
    "warnings": 36,
    "app_dir": "/app",
    "service_name": "market-intel",
    "deploy_mode": "auto",
    "platform": "linux"
  },
  "public_dashboard_check_summary": {
    "errors": 0,
    "warnings": 0,
    "configured_url": "https://35-221-72-238.sslip.io/dashboard.html",
    "base_url": "https://35-221-72-238.sslip.io/",
    "endpoint_count": 36
  },
  "telegram_test_summary": {
    "status": "ok",
    "send_ok": false
  },
  "health_summary": {
    "ok": false,
    "warnings": [
      "source_errors_or_unchecked",
      "audit_reports_need_attention"
    ]
  },
  "readiness_summary": {
    "errors": 0,
    "warnings": 4,
    "sources": 148,
    "documents": 13924,
    "analyses": 10502,
    "pending_fetch": 131
  },
  "latest_package": null,
  "latest_package_verification": null,
  "latest_backup": {
    "created_at": "2026-06-26T21:34:44+00:00",
    "backup_path": "/app/backups/20260626T213436Z",
    "manifest_path": "/app/backups/20260626T213436Z/manifest.json",
    "db_backup": "/app/backups/20260626T213436Z/market_intel.db",
    "db_size": 343166976,
    "db_sha256": "11839951015f552b16ea848603e6d8a02471bf46ac46c05056751db89a7e4185",
    "db_integrity": {
      "ok": true,
      "result": "ok",
      "messages": [
        "ok"
      ],
      "path": "/app/backups/20260626T213436Z/market_intel.db"
    },
    "config_zip": "/app/backups/20260626T213436Z/config.zip",
    "config_zip_size": 25225,
    "report_zip": "/app/backups/20260626T213436Z/reports.zip",
    "report_zip_size": 1191676
  },
  "latest_backup_verification": {
    "ok": true,
    "manifest_path": "/app/backups/20260626T213436Z/manifest.json",
    "manifest": {
      "created_at": "2026-06-26T21:34:44+00:00",
      "backup_path": "/app/backups/20260626T213436Z",
      "manifest_path": "/app/backups/20260626T213436Z/manifest.json",
      "db_backup": "/app/backups/20260626T213436Z/market_intel.db",
      "db_size": 343166976,
      "db_sha256": "11839951015f552b16ea848603e6d8a02471bf46ac46c05056751db89a7e4185",
      "db_integrity": {
        "ok": true,
        "result": "ok",
        "messages": [
          "ok"
        ],
        "path": "/app/backups/20260626T213436Z/market_intel.db"
      },
      "config_zip": "/app/backups/20260626T213436Z/config.zip",
      "config_zip_size": 25225,
      "report_zip": "/app/backups/20260626T213436Z/reports.zip",
      "report_zip_size": 1191676
    },
    "db_exists": true,
    "db_size": 343166976,
    "db_size_ok": true,
    "db_sha256_expected": "11839951015f552b16ea848603e6d8a02471bf46ac46c05056751db89a7e4185",
    "db_sha256_actual": "11839951015f552b16ea848603e6d8a02471bf46ac46c05056751db89a7e4185",
    "db_sha256_ok": true,
    "db_integrity": {
      "ok": true,
      "result": "ok",
      "messages": [
        "ok"
      ],
      "path": "/app/backups/20260626T213436Z/market_intel.db"
    },
    "config_zip": {
      "ok": true,
      "path": "/app/backups/20260626T213436Z/config.zip",
      "member_count": 6,
      "bad_member": null
    },
    "report_zip": {
      "ok": true,
      "path": "/app/backups/20260626T213436Z/reports.zip",
      "member_count": 86,
      "bad_member": null
    }
  },
  "one_command_systemd": "sudo scripts/bootstrap_vps.sh --app-dir /app --public-url \"https://35-221-72-238.sslip.io/dashboard.html\" --telegram-bot-token \"$TELEGRAM_BOT_TOKEN\" --telegram-chat-id \"$TELEGRAM_CHAT_ID\" --deploy-mode systemd --install-nginx",
  "one_command_docker": "sudo scripts/configure_env.sh --app-dir /app --public-url \"https://35-221-72-238.sslip.io/dashboard.html\" --telegram-bot-token \"$TELEGRAM_BOT_TOKEN\" --telegram-chat-id \"$TELEGRAM_CHAT_ID\" --deploy-mode docker --dashboard-port 8080 --validate && docker compose up -d --build"
}
