{
  "ok": false,
  "generated_at": "2026-06-26T21:31:36+00:00",
  "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"
    ]
  },
  "checks": [
    {
      "check": "env_file_present",
      "ok": false,
      "severity": "error",
      "detail": "env_file=/app/.env exists=False",
      "path": "/app/.env"
    },
    {
      "check": "env_required_python_bin",
      "ok": false,
      "severity": "warning",
      "detail": "PYTHON_BIN is not set",
      "key": "PYTHON_BIN",
      "value": ""
    },
    {
      "check": "env_required_lock_file",
      "ok": false,
      "severity": "warning",
      "detail": "LOCK_FILE is not set",
      "key": "LOCK_FILE",
      "value": ""
    },
    {
      "check": "env_required_run_limit",
      "ok": false,
      "severity": "warning",
      "detail": "RUN_LIMIT is not set",
      "key": "RUN_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_fetch_limit",
      "ok": false,
      "severity": "warning",
      "detail": "FETCH_LIMIT is not set",
      "key": "FETCH_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_fetch_timeout",
      "ok": false,
      "severity": "warning",
      "detail": "FETCH_TIMEOUT is not set",
      "key": "FETCH_TIMEOUT",
      "value": ""
    },
    {
      "check": "env_required_fetch_http_retries",
      "ok": false,
      "severity": "warning",
      "detail": "FETCH_HTTP_RETRIES is not set",
      "key": "FETCH_HTTP_RETRIES",
      "value": ""
    },
    {
      "check": "env_required_source_sleep",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_SLEEP is not set",
      "key": "SOURCE_SLEEP",
      "value": ""
    },
    {
      "check": "env_required_report_limit",
      "ok": false,
      "severity": "warning",
      "detail": "REPORT_LIMIT is not set",
      "key": "REPORT_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_priority_scan_limit",
      "ok": false,
      "severity": "warning",
      "detail": "PRIORITY_SCAN_LIMIT is not set",
      "key": "PRIORITY_SCAN_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_health_pending_threshold",
      "ok": false,
      "severity": "warning",
      "detail": "HEALTH_PENDING_THRESHOLD is not set",
      "key": "HEALTH_PENDING_THRESHOLD",
      "value": ""
    },
    {
      "check": "env_required_health_backlog_limit",
      "ok": false,
      "severity": "warning",
      "detail": "HEALTH_BACKLOG_LIMIT is not set",
      "key": "HEALTH_BACKLOG_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_ops_monitor_window_days",
      "ok": false,
      "severity": "warning",
      "detail": "OPS_MONITOR_WINDOW_DAYS is not set",
      "key": "OPS_MONITOR_WINDOW_DAYS",
      "value": ""
    },
    {
      "check": "env_required_ops_monitor_max_latest_age_hours",
      "ok": false,
      "severity": "warning",
      "detail": "OPS_MONITOR_MAX_LATEST_AGE_HOURS is not set",
      "key": "OPS_MONITOR_MAX_LATEST_AGE_HOURS",
      "value": ""
    },
    {
      "check": "env_required_ops_monitor_min_success_days",
      "ok": false,
      "severity": "warning",
      "detail": "OPS_MONITOR_MIN_SUCCESS_DAYS is not set",
      "key": "OPS_MONITOR_MIN_SUCCESS_DAYS",
      "value": ""
    },
    {
      "check": "env_required_ops_monitor_max_zero_output_runs",
      "ok": false,
      "severity": "warning",
      "detail": "OPS_MONITOR_MAX_ZERO_OUTPUT_RUNS is not set",
      "key": "OPS_MONITOR_MAX_ZERO_OUTPUT_RUNS",
      "value": ""
    },
    {
      "check": "env_required_ops_monitor_min_sources_checked",
      "ok": false,
      "severity": "warning",
      "detail": "OPS_MONITOR_MIN_SOURCES_CHECKED is not set",
      "key": "OPS_MONITOR_MIN_SOURCES_CHECKED",
      "value": ""
    },
    {
      "check": "env_required_source_freshness_max_checked_age_hours",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_FRESHNESS_MAX_CHECKED_AGE_HOURS is not set",
      "key": "SOURCE_FRESHNESS_MAX_CHECKED_AGE_HOURS",
      "value": ""
    },
    {
      "check": "env_required_source_freshness_stale_document_days",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_FRESHNESS_STALE_DOCUMENT_DAYS is not set",
      "key": "SOURCE_FRESHNESS_STALE_DOCUMENT_DAYS",
      "value": ""
    },
    {
      "check": "env_required_source_freshness_max_error_count",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_FRESHNESS_MAX_ERROR_COUNT is not set",
      "key": "SOURCE_FRESHNESS_MAX_ERROR_COUNT",
      "value": ""
    },
    {
      "check": "env_required_source_freshness_max_fetch_error_rate",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_FRESHNESS_MAX_FETCH_ERROR_RATE is not set",
      "key": "SOURCE_FRESHNESS_MAX_FETCH_ERROR_RATE",
      "value": ""
    },
    {
      "check": "env_required_fetch_error_triage_limit",
      "ok": false,
      "severity": "warning",
      "detail": "FETCH_ERROR_TRIAGE_LIMIT is not set",
      "key": "FETCH_ERROR_TRIAGE_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_fetch_error_triage_sample_limit",
      "ok": false,
      "severity": "warning",
      "detail": "FETCH_ERROR_TRIAGE_SAMPLE_LIMIT is not set",
      "key": "FETCH_ERROR_TRIAGE_SAMPLE_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_fetch_error_retry_limit",
      "ok": false,
      "severity": "warning",
      "detail": "FETCH_ERROR_RETRY_LIMIT is not set",
      "key": "FETCH_ERROR_RETRY_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_fetch_error_retry_categories",
      "ok": false,
      "severity": "warning",
      "detail": "FETCH_ERROR_RETRY_CATEGORIES is not set",
      "key": "FETCH_ERROR_RETRY_CATEGORIES",
      "value": ""
    },
    {
      "check": "env_required_fetch_error_retry_sleep",
      "ok": false,
      "severity": "warning",
      "detail": "FETCH_ERROR_RETRY_SLEEP is not set",
      "key": "FETCH_ERROR_RETRY_SLEEP",
      "value": ""
    },
    {
      "check": "env_required_rss_metadata_backfill_limit",
      "ok": false,
      "severity": "warning",
      "detail": "RSS_METADATA_BACKFILL_LIMIT is not set",
      "key": "RSS_METADATA_BACKFILL_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_rss_metadata_backfill_analyze_limit",
      "ok": false,
      "severity": "warning",
      "detail": "RSS_METADATA_BACKFILL_ANALYZE_LIMIT is not set",
      "key": "RSS_METADATA_BACKFILL_ANALYZE_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_quality_prune_limit",
      "ok": false,
      "severity": "warning",
      "detail": "QUALITY_PRUNE_LIMIT is not set",
      "key": "QUALITY_PRUNE_LIMIT",
      "value": ""
    },
    {
      "check": "env_required_quality_prune_min_analysis_chars",
      "ok": false,
      "severity": "warning",
      "detail": "QUALITY_PRUNE_MIN_ANALYSIS_CHARS is not set",
      "key": "QUALITY_PRUNE_MIN_ANALYSIS_CHARS",
      "value": ""
    },
    {
      "check": "env_required_backup_enabled",
      "ok": false,
      "severity": "warning",
      "detail": "BACKUP_ENABLED is not set",
      "key": "BACKUP_ENABLED",
      "value": ""
    },
    {
      "check": "env_required_backup_keep",
      "ok": false,
      "severity": "warning",
      "detail": "BACKUP_KEEP is not set",
      "key": "BACKUP_KEEP",
      "value": ""
    },
    {
      "check": "env_required_deploy_service_name",
      "ok": false,
      "severity": "warning",
      "detail": "DEPLOY_SERVICE_NAME is not set",
      "key": "DEPLOY_SERVICE_NAME",
      "value": ""
    },
    {
      "check": "env_required_nginx_site_name",
      "ok": false,
      "severity": "warning",
      "detail": "NGINX_SITE_NAME is not set",
      "key": "NGINX_SITE_NAME",
      "value": ""
    },
    {
      "check": "env_required_deploy_mode",
      "ok": false,
      "severity": "warning",
      "detail": "DEPLOY_MODE is not set",
      "key": "DEPLOY_MODE",
      "value": ""
    },
    {
      "check": "env_required_source_candidates_min_source_weight",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_CANDIDATES_MIN_SOURCE_WEIGHT is not set",
      "key": "SOURCE_CANDIDATES_MIN_SOURCE_WEIGHT",
      "value": ""
    },
    {
      "check": "env_required_source_candidates_max_promotions",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_CANDIDATES_MAX_PROMOTIONS is not set",
      "key": "SOURCE_CANDIDATES_MAX_PROMOTIONS",
      "value": ""
    },
    {
      "check": "env_required_source_candidates_http_timeout",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_CANDIDATES_HTTP_TIMEOUT is not set",
      "key": "SOURCE_CANDIDATES_HTTP_TIMEOUT",
      "value": ""
    },
    {
      "check": "env_required_source_candidates_http_retries",
      "ok": false,
      "severity": "warning",
      "detail": "SOURCE_CANDIDATES_HTTP_RETRIES is not set",
      "key": "SOURCE_CANDIDATES_HTTP_RETRIES",
      "value": ""
    },
    {
      "check": "env_deploy_mode_valid",
      "ok": false,
      "severity": "error",
      "detail": "DEPLOY_MODE=- should be auto, systemd, or docker",
      "value": ""
    },
    {
      "check": "env_deploy_mode_production_specific",
      "ok": true,
      "severity": "warning",
      "detail": "DEPLOY_MODE=auto is allowed for local checks; use systemd or docker for production",
      "value": ""
    },
    {
      "check": "env_public_dashboard_url_valid",
      "ok": false,
      "severity": "warning",
      "detail": "PUBLIC_DASHBOARD_URL is missing or invalid",
      "value": ""
    },
    {
      "check": "env_telegram_token_format",
      "ok": false,
      "severity": "warning",
      "detail": "TELEGRAM_BOT_TOKEN is missing or has an unexpected format",
      "value": ""
    },
    {
      "check": "env_telegram_chat_id_format",
      "ok": false,
      "severity": "warning",
      "detail": "TELEGRAM_CHAT_ID is missing or has an unexpected format",
      "value": ""
    }
  ],
  "redacted_env": {}
}
