{
  "generated_at": "2026-08-25T17:44:09.570080+08:00",
  "schema_version": 8,
  "datasets": {
    "tracked_market.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:41:25.450187+08:00",
      "bytes": 23161
    },
    "funds.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:39:22.721479+08:00",
      "bytes": 595405
    },
    "gold.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:41:47.328171+08:00",
      "bytes": 1546619
    },
    "candidate_pool.json": {
      "exists": true,
      "updated_at": "2026-08-25T15:30:33.217645+08:00",
      "bytes": 24457
    },
    "health.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:41:43.744578+08:00",
      "bytes": 17741
    },
    "analysis_stage1.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:42:38.252757+08:00",
      "bytes": 18328
    },
    "analysis_stage2_daily.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:44:00.018435+08:00",
      "bytes": 653254
    },
    "analysis_duckdb_evidence.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:44:05.633165+08:00",
      "bytes": 10519
    },
    "data_contracts.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:43:43.038910+08:00",
      "bytes": 5537
    },
    "calendar_alignment.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:43:43.701013+08:00",
      "bytes": 7777
    },
    "analysis_evidence_summary.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:44:08.948491+08:00",
      "bytes": 7576
    },
    "report_readiness.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:44:09.570080+08:00",
      "bytes": 8291
    },
    "candidate_scan_health.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:44:09.631092+08:00",
      "bytes": 718
    },
    "data_health_alerts.json": {
      "exists": true,
      "updated_at": "2026-08-25T17:44:09.763315+08:00",
      "bytes": 5764
    }
  },
  "report_readiness": {
    "delivery_mode_17": "FULL_REPORT_WITH_EXPLICIT_DEGRADATIONS",
    "a_share_public_market_ready": true,
    "private_join_required_for_exact_action": true,
    "candidate_scan_status": "degraded_partial_inputs",
    "content_contract_version": "2026-08-17-v1",
    "analysis_engine_stage": "STAGE_1_RUNNING",
    "stage2_daily_pilot_status": "STAGE_2_DAILY_PILOT_RUNNING",
    "evidence_status": "READY_RESEARCH_ONLY",
    "blockers": [
      "DATA_HEALTH::CANDIDATE_SCAN_DEGRADED"
    ],
    "minute_status": "fresh",
    "intraday_public_market_ready": true,
    "candidate_scan_freshness_state": "fresh_same_session",
    "candidate_scan_same_session": true,
    "candidate_scan_fresh_for_cadence": true,
    "data_health_status": "degraded",
    "data_health_ready": false,
    "data_health_blockers": [
      "CANDIDATE_SCAN_DEGRADED"
    ]
  },
  "analysis_engine": {
    "stage": "STAGE_1_RUNNING",
    "generated_at": "2026-08-25T17:42:38.252757+08:00",
    "stage1_fund_ready": true,
    "stage1_a_share_history_ready": true,
    "stage2_vectorbt_daily_pilot_ready": true,
    "stage2_daily_pilot": {
      "status": "STAGE_2_DAILY_PILOT_RUNNING",
      "generated_at": "2026-08-25T17:44:00.018435+08:00",
      "research_core_ready": true,
      "coverage": {
        "a_research_core_ok": 7,
        "a_research_core_expected": 7,
        "candidate_seed_ok": 5,
        "candidate_seed_expected": 5
      },
      "tool": {
        "name": "vectorbt",
        "version": "1.1.0",
        "role": "point-in-time daily-bar signal research and moving-average computation"
      },
      "production_use": "RESEARCH_ONLY",
      "statistical_evidence": {
        "status": "RESEARCH_ONLY",
        "sufficient_signal_horizons": 104,
        "insufficient_signal_horizons": 76,
        "fdr_reject_5pct_count": 11
      }
    },
    "support_layer": {
      "data_contracts_status": "OK",
      "calendar_stale_symbols": 0,
      "calendar_missing_history": 0,
      "duckdb_pandas_match": true,
      "duckdb_missing_or_invalid_histories": 0,
      "evidence_status": "READY_RESEARCH_ONLY"
    },
    "stage3_qlib_ready": false,
    "tools": {
      "quantstats": {
        "available": true,
        "version": "0.0.81",
        "mode": null
      },
      "xalpha": {
        "available": true,
        "version": "0.12.4",
        "mode": null
      },
      "vectorbt": {
        "available": false,
        "version": null,
        "mode": "DAILY_PILOT_READY",
        "pilot_status": "STAGE_2_DAILY_PILOT_RUNNING",
        "pilot_version": "1.1.0"
      },
      "statsmodels": {
        "available": true,
        "version": "0.14.6",
        "mode": "HAC_PLUS_FDR_RESEARCH_ONLY"
      },
      "duckdb": {
        "available": true,
        "version": "1.5.5",
        "mode": "DESCRIPTIVE_CROSS_SECTIONAL_EVIDENCE"
      },
      "pandera": {
        "available": true,
        "version": "unknown",
        "mode": "OK"
      },
      "pandas_market_calendars": {
        "available": true,
        "version": "5.4.0",
        "mode": "HISTORICAL_SESSION_ALIGNMENT_ONLY"
      }
    }
  },
  "content_contract": {
    "version": "2026-08-17-v1",
    "principle": "Market-data readiness is only the input gate. It never replaces the fixed analysis/report content.",
    "required_17_modules": [
      "01_ledger_sync",
      "02_data_validation",
      "03_actual_trades",
      "04_daily_performance_card",
      "05_all_accounts_summary",
      "06_global_domestic_environment",
      "07_portfolio_level",
      "08_yesterday_plan_validation",
      "09_all_7_a_share_reviews",
      "10_hk_management",
      "11_us_management",
      "12_all_12_funds",
      "13_gold_review",
      "14_medium_term_candidate_pool",
      "14B_ultrashort_pool",
      "15_ipo_industry_radar",
      "16_account_slimming",
      "17_risk_warnings",
      "18_goal_progress",
      "19_operation_score_log",
      "20_overall_strategy",
      "21_hypothetical_1m_opportunities",
      "22_next_day_action_card",
      "23_sources",
      "24_ledger_and_data_health"
    ],
    "mandatory_summary_tables": {
      "a_share": "All private-ledger A-share positions in one table before detailed reviews.",
      "hk": "All named HK positions/accounts in one table; no omission because a position is small or old.",
      "us": "All named US positions/accounts in one table; same ticker across accounts remains separate.",
      "funds": "Exactly 12 funds in one table with latest formally published NAV, NAV date, latest daily change when available, stage/status and action.",
      "gold": "Gold layers table: XAUUSD / COMEX / SGE RMB gold / bank-private execution layer, clearly separated.",
      "candidate_pool": "Show scan freshness/status, current ranking and whether list changed; never present an old seed list as a fresh full-market scan."
    },
    "mandatory_per_a_share_fields": [
      "account_and_position",
      "formal_ohlc_and_volume",
      "technical_structure",
      "support_and_resistance",
      "fundamental_news_catalyst",
      "short_term_1_5d",
      "medium_term_1_2m",
      "long_term_3_12m",
      "next_day_reference_prices",
      "action_quantity_or_amount",
      "trigger_conditions",
      "cancel_or_invalidation_conditions",
      "position_role_and_opportunity_cost"
    ],
    "fund_timing_rule": {
      "17_00": "Use the latest formally published NAV available at report time. If same-day NAV is not published, use the latest prior formal NAV and explicitly show its NAV date; never use intraday estimate as formal NAV.",
      "09_00_next_day": "Backfill the prior trading day final NAVs that became available overnight, summarize changes, and recalibrate the new trading-day guidance."
    },
    "gold_rule": {
      "public_reference": "Build a stock-like RMB gold reference series from SGE Au99.99/Au(T+D) plus international gold; an independent public bank account-gold quote may be used only as a reference cross-check.",
      "private_execution": "Bank executable accumulation-gold quotes remain bank-specific/private and may not be inferred from public gold or another bank quote.",
      "daily_review_fields": [
        "position",
        "domestic_gold",
        "international_drivers",
        "technical_support_resistance",
        "operation_plan",
        "goal_progress",
        "next_observations"
      ]
    },
    "candidate_rule": "A failed full-market scan must be labeled failed/degraded. Retained seed names may still be monitored, but cannot be described as today's fresh scan result.",
    "publication_rule": "A 17:00 report missing any fixed module, required asset summary table, or required per-A-share short/medium/long/next-day fields cannot call itself complete. If length is large, keep all modules and compress wording rather than deleting fields."
  },
  "governance": {
    "charter_version": "1.0.0",
    "report_contract_version": "1.0.0",
    "analysis_roadmap_version": "1.0.0"
  },
  "privacy": "public market data and research evidence only; no private account ids, position sizes, costs, cash balances, private bank quotes or trade states",
  "freshness_hardening_updated_at": "2026-08-25T17:44:09.631092+08:00",
  "data_health_gate_updated_at": "2026-08-25T17:44:09.720157+08:00",
  "data_health_alerts": {
    "status": "warning",
    "critical": 0,
    "warning": 10,
    "total": 10,
    "external_notification_enabled": false
  },
  "data_health_alerts_updated_at": "2026-08-25T17:44:09.763315+08:00"
}
