{
  "schema_version": 1,
  "output_version": 3,
  "usage": "Source list for diagnosis-oriented PingCAP docs. Edit topics here, then run scripts/generate_official_docs_index.py (optional: --strict to require all URLs HTTP 2xx). Generated output: official-docs-index.json.",
  "doc_bases": {
    "tidb_stable_en": "https://docs.pingcap.com/tidb/stable",
    "tidb_stable_zh": "https://docs.pingcap.com/zh/tidb/stable",
    "tidb_cloud_en": "https://docs.pingcap.com/tidbcloud",
    "tidb_cloud_zh": "https://docs.pingcap.com/zh/tidbcloud"
  },
  "resolve_url": {
    "pattern": "{doc_bases[base]}{path}",
    "example_base": "tidb_stable_en",
    "example_path": "/tidb-resource-control",
    "example_result": "https://docs.pingcap.com/tidb/stable/tidb-resource-control"
  },
  "topics": [
    {
      "id": "cluster-troubleshooting-guide",
      "category": "troubleshooting",
      "keywords": ["troubleshoot", "cannot connect", "startup", "panic", "cluster down"],
      "base": "tidb_stable_en",
      "path": "/troubleshoot-tidb-cluster",
      "summary": "Entry troubleshooting for connectivity, process start, and basic cluster issues."
    },
    {
      "id": "troubleshooting-map",
      "category": "troubleshooting",
      "keywords": ["troubleshooting map", "symptom", "where to look", "diagnosis flow"],
      "base": "tidb_stable_en",
      "path": "/tidb-troubleshooting-map",
      "summary": "Structured map from symptoms to likely components and next steps."
    },
    {
      "id": "lock-conflicts",
      "category": "troubleshooting",
      "keywords": ["lock", "lock wait", "deadlock", "pessimistic lock conflict"],
      "base": "tidb_stable_en",
      "path": "/troubleshoot-lock-conflicts",
      "summary": "Diagnosing lock-related errors and contention."
    },
    {
      "id": "slow-query-identify",
      "category": "sql_perf",
      "keywords": ["slow query", "slowquery", "slow log", "identify slow"],
      "base": "tidb_stable_en",
      "path": "/identify-slow-queries",
      "summary": "Finding and interpreting slow queries."
    },
    {
      "id": "top-sql",
      "category": "sql_perf",
      "keywords": ["Top SQL", "TopSQL", "CPU by statement", "workload", "digest"],
      "base": "tidb_stable_en",
      "path": "/top-sql",
      "summary": "Top SQL feature: CPU-oriented statement attribution on TiDB/TiKV instances."
    },
    {
      "id": "sql-tuning-overview",
      "category": "sql_perf",
      "keywords": ["SQL tuning", "optimization overview", "planner"],
      "base": "tidb_stable_en",
      "path": "/sql-tuning-overview",
      "summary": "High-level SQL tuning concepts and links to EXPLAIN and plan control."
    },
    {
      "id": "explain-overview",
      "category": "sql_perf",
      "keywords": ["EXPLAIN", "execution plan", "estRows", "operator"],
      "base": "tidb_stable_en",
      "path": "/explain-overview",
      "summary": "Reading TiDB EXPLAIN output and operators."
    },
    {
      "id": "control-execution-plan",
      "category": "sql_perf",
      "keywords": ["hints", "SPM", "plan management", "bind", "execution plan control"],
      "base": "tidb_stable_en",
      "path": "/control-execution-plan",
      "summary": "Controlling plans: hints, SQL plan management, blocklist, optimizer fix controls."
    },
    {
      "id": "sql-plan-management",
      "category": "sql_perf",
      "keywords": ["SQL binding", "baseline", "plan evolution", "SPM"],
      "base": "tidb_stable_en",
      "path": "/sql-plan-management",
      "summary": "SQL plan capture, binding, and evolution."
    },
    {
      "id": "optimizer-hints",
      "category": "sql_perf",
      "keywords": ["optimizer hint", "MERGE_JOIN", "INL_JOIN", "hint syntax"],
      "base": "tidb_stable_en",
      "path": "/optimizer-hints",
      "summary": "Optimizer hint reference."
    },
    {
      "id": "statement-summary-tables",
      "category": "sql_perf",
      "keywords": ["statement summary", "information_schema", "cluster statements"],
      "base": "tidb_stable_en",
      "path": "/statement-summary-tables",
      "summary": "Aggregated SQL statistics via system tables."
    },
    {
      "id": "statistics",
      "category": "sql_perf",
      "keywords": ["ANALYZE", "statistics", "histogram", "cardinality", "stats"],
      "base": "tidb_stable_en",
      "path": "/statistics",
      "summary": "Table statistics collection and use by the optimizer."
    },
    {
      "id": "index-advisor",
      "category": "sql_perf",
      "keywords": ["Index Advisor", "index recommendation"],
      "base": "tidb_stable_en",
      "path": "/index-advisor",
      "summary": "Automatic index recommendations."
    },
    {
      "id": "tidb-best-practices",
      "category": "sql_perf",
      "keywords": ["best practices", "hotspot", "write hotspot", "read hotspot", "sharding"],
      "base": "tidb_stable_en",
      "path": "/tidb-best-practices",
      "summary": "Operational and SQL best practices including hotspot avoidance."
    },
    {
      "id": "resource-control-ru",
      "category": "resources",
      "keywords": ["RU", "resource unit", "resource control", "quota", "throttle", "RCU"],
      "base": "tidb_stable_en",
      "path": "/tidb-resource-control",
      "summary": "Resource control and Request Units (RU)."
    },
    {
      "id": "dashboard-intro",
      "category": "observability",
      "keywords": ["TiDB Dashboard", "UI", "cluster status", "diagnostics UI"],
      "base": "tidb_stable_en",
      "path": "/dashboard-intro",
      "summary": "TiDB Dashboard features: overview, statements, slow query, diagnostics, logs."
    },
    {
      "id": "tidb-monitoring-framework",
      "category": "observability",
      "keywords": ["Prometheus", "Grafana", "monitoring framework", "metrics stack"],
      "base": "tidb_stable_en",
      "path": "/tidb-monitoring-framework",
      "summary": "Monitoring architecture (Prometheus/Grafana) for TiDB."
    },
    {
      "id": "gc-overview",
      "category": "transactions_storage",
      "keywords": ["GC", "garbage collection", "safepoint", "resolve lock"],
      "base": "tidb_stable_en",
      "path": "/garbage-collection-overview",
      "summary": "TiDB GC behavior and impact."
    },
    {
      "id": "pessimistic-transaction",
      "category": "transactions_storage",
      "keywords": ["pessimistic", "SELECT FOR UPDATE", "lock"],
      "base": "tidb_stable_en",
      "path": "/pessimistic-transaction",
      "summary": "Pessimistic transaction model."
    },
    {
      "id": "optimistic-transaction",
      "category": "transactions_storage",
      "keywords": ["optimistic transaction", "retry", "conflict"],
      "base": "tidb_stable_en",
      "path": "/optimistic-transaction",
      "summary": "Optimistic transaction model and retries."
    },
    {
      "id": "pd-scheduling",
      "category": "components",
      "keywords": ["PD", "scheduler", "balance", "Region", "placement"],
      "base": "tidb_stable_en",
      "path": "/tidb-scheduling",
      "summary": "PD scheduling and Region management overview."
    },
    {
      "id": "tikv-overview",
      "category": "components",
      "keywords": ["TiKV", "Raft", "Region", "coprocessor", "storage"],
      "base": "tidb_stable_en",
      "path": "/tikv-overview",
      "summary": "TiKV architecture."
    },
    {
      "id": "tikv-massive-regions",
      "category": "components",
      "keywords": ["massive Regions", "Raftstore", "too many regions", "raft store CPU"],
      "base": "tidb_stable_en",
      "path": "/massive-regions-best-practices",
      "summary": "Performance impact of many Regions and mitigation (merge, hibernate, etc.)."
    },
    {
      "id": "tune-region-performance",
      "category": "components",
      "keywords": ["Region size", "region split", "bucket", "Active PD Follower"],
      "base": "tidb_stable_en",
      "path": "/tune-region-performance",
      "summary": "Tuning Region size, buckets, and PD follower for large Regions."
    },
    {
      "id": "tiflash-overview",
      "category": "components",
      "keywords": ["TiFlash", "MPP", "columnar", "HTAP"],
      "base": "tidb_stable_en",
      "path": "/tiflash-overview",
      "summary": "TiFlash architecture and use."
    },
    {
      "id": "ticdc-overview",
      "category": "replication",
      "keywords": ["TiCDC", "changefeed", "replication"],
      "base": "tidb_stable_en",
      "path": "/ticdc-overview",
      "summary": "TiCDC overview for change data capture."
    },
    {
      "id": "cloud-monitor-cluster",
      "category": "cloud_ops",
      "keywords": ["TiDB Cloud", "monitor cluster", "cluster status", "metrics page"],
      "base": "tidb_cloud_en",
      "path": "/monitor-tidb-cluster",
      "summary": "Monitoring entry for TiDB Cloud clusters and node status."
    },
    {
      "id": "cloud-built-in-metrics",
      "category": "cloud_ops",
      "keywords": ["TiDB Cloud metrics", "RU", "RCU", "Query Duration", "TiProxy", "Dedicated"],
      "base": "tidb_cloud_en",
      "path": "/built-in-monitoring",
      "summary": "Built-in Metrics page panels (Dedicated, Starter/Essential) for RCA."
    }
  ]
}
