{
  "schema_version": "qazpolit.route-matrix.v1",
  "canonical_site": "https://qazpolit.com",
  "languages": ["ru", "kz", "en"],
  "viewports": [
    {"id": "phone-compact", "width": 320, "height": 800},
    {"id": "phone", "width": 390, "height": 844},
    {"id": "tablet", "width": 768, "height": 1024},
    {"id": "desktop", "width": 1024, "height": 900},
    {"id": "desktop-wide", "width": 1440, "height": 1000}
  ],
  "themes": ["light", "dark"],
  "states": ["populated", "sparse", "empty", "error", "disabled", "degraded", "translation_pending"],
  "critical_profiles": [
    "oyan-qazaqstan",
    "human-rights-watch",
    "bokayev-sanzhar",
    "fond-sorosa",
    "ablyazov-mukhtar",
    "taizhan-mukhtar",
    "tashimova-saltanat",
    "mels-eleusizov"
  ],
  "intentional_no_image_profiles": ["fond-sorosa", "mels-eleusizov"],
  "sitemap_static_pages": [
    {"suffix": "", "priority": "1.0", "changefreq": "weekly"},
    {"suffix": "browse", "priority": "0.9", "changefreq": "weekly"},
    {"suffix": "graph", "priority": "0.8", "changefreq": "weekly"},
    {"suffix": "monitoring", "priority": "0.8", "changefreq": "daily"},
    {"suffix": "documents", "priority": "0.7", "changefreq": "weekly"},
    {"suffix": "quality", "priority": "0.6", "changefreq": "daily"},
    {"suffix": "about", "priority": "0.7", "changefreq": "monthly"},
    {"suffix": "tools", "priority": "0.5", "changefreq": "monthly"},
    {"suffix": "for-professionals", "priority": "0.7", "changefreq": "monthly"}
  ],
  "visual_routes": [
    {"path": "/ru/", "expected_status": [200], "capture": true},
    {"path": "/ru/browse", "expected_status": [200], "capture": true},
    {"path": "/ru/search", "expected_status": [200], "capture": true},
    {"path": "/ru/search?q=__qazpolit_no_match_route_audit__", "expected_status": [200], "capture": true},
    {"path": "/ru/zagranopp", "expected_status": [200]},
    {"path": "/ru/zagranopp/ablyazov-mukhtar", "expected_status": [200], "capture": true},
    {"path": "/ru/zagranopp/kozlovskaya-lyudmila", "expected_status": [200]},
    {"path": "/ru/graph", "expected_status": [200], "capture": true},
    {"path": "/ru/monitoring", "expected_status": [200], "capture": true},
    {"path": "/ru/documents", "expected_status": [200]},
    {"path": "/ru/quality", "expected_status": [200], "capture": true},
    {"path": "/ru/about", "expected_status": [200]},
    {"path": "/ru/for-professionals", "expected_status": [200]},
    {"path": "/ru/tools", "expected_status": [200], "capture": true},
    {"path": "/ru/corrections", "expected_status": [200]},
    {"path": "/ru/compare", "expected_status": [200]},
    {"path": "/ru/__qazpolit_missing_route_audit__", "expected_status": [404], "capture": true},
    {"path": "/kz/", "expected_status": [200]},
    {"path": "/kz/zagranopp/ablyazov-mukhtar", "expected_status": [200]},
    {"path": "/kz/tools", "expected_status": [200]},
    {"path": "/kz/for-professionals", "expected_status": [200]},
    {"path": "/en/", "expected_status": [200]},
    {"path": "/en/zagranopp/ablyazov-mukhtar", "expected_status": [200]},
    {"path": "/en/tools", "expected_status": [200]},
    {"path": "/en/for-professionals", "expected_status": [200]}
  ],
  "smoke": {
    "fixed_routes": [
      "/health",
      "/api/runtime",
      "/api/status",
      "/api/data-quality",
      "/api/data-quality/issues?limit=5",
      "/api/content-enrichment-backlog",
      "/api/editorial-backlog?limit=5",
      "/api/qazgeo/health",
      "/api/categories",
      "/api/entities?lang=ru&per_page=3",
      "/api/featured?lang=ru&limit=3",
      "/api/recent?lang=ru&limit=3",
      "/api/browse?lang=ru&limit=3",
      "/api/search?lang=ru&q=%D0%90%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2&limit=3",
      "/api/stats?lang=ru",
      "/api/updates",
      "/api/monitoring",
      "/api/compare?lang=ru&left=oyan-qazaqstan&right=ndi-kazakhstan",
      "/api/reconcile",
      "/api/reconcile/suggest/entity?lang=ru&prefix=%D0%90&limit=3",
      "/api/semantic-search?lang=ru&q=%D0%90%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2&limit=3",
      "/api/graph?lang=ru&limit=10",
      "/api/graph?lang=ru&limit=10&reviewed_only=false",
      "/api/graph/insights",
      "/api/timeline-global?lang=ru&limit=5",
      "/api/export/entities.csv?lang=ru",
      "/api/export/entities.xlsx?lang=ru",
      "/contracts/",
      "/contracts/avds-ui-contract-v1.json",
      "/contracts/qazpolit-platform-integration-v1.json",
      "/contracts/qazpolit-route-matrix-v1.json",
      "/contracts/qazpipe-evidence-v2.schema.json",
      "/contracts/qazpolit-content-enrichment-jobs-v1.schema.json",
      "/contracts/qazstack-review-queue-v1.schema.json",
      "/llms.txt",
      "/ai-index.json",
      "/ru/search?q=%D0%90%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2",
      "/ru/updates.xml",
      "/ru/zagranopp/ablyazov-mukhtar",
      "/kz/zagranopp/ablyazov-mukhtar",
      "/en/zagranopp/ablyazov-mukhtar",
      "/sitemap.xml"
    ],
    "localized_suffixes": [
      "",
      "browse",
      "graph",
      "monitoring",
      "compare",
      "tools",
      "updates",
      "documents",
      "qa",
      "quality",
      "about",
      "for-professionals",
      "corrections",
      "contracts"
    ]
  },
  "journeys": [
    {"id": "home_discovery", "path": "/ru/"},
    {"id": "professional_workflows", "path": "/ru/for-professionals"},
    {"id": "search_empty_guidance", "path": "/ru/search?q=__qazpolit_no_match_route_audit__"},
    {"id": "search_results_scopes", "path": "/ru/search?q=%D0%90%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2"},
    {"id": "search_mentions_scope", "path": "/ru/search?q=%D0%90%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2&scope=mentions"},
    {"id": "search_events_scope", "path": "/ru/search?q=%D0%90%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2&scope=events"},
    {"id": "search_documents_scope", "path": "/ru/search?q=%D0%90%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2&scope=documents"},
    {"id": "htmx_search_suggestions", "path": "/htmx/search?lang=ru&q=%D0%90%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2"},
    {"id": "browse_filter_recovery", "path": "/ru/browse?entity_type=person&q=__qazpolit_no_match_route_audit__"},
    {"id": "browse_index", "path": "/ru/browse"},
    {"id": "browse_second_page", "path": "/ru/browse?page=2"},
    {"id": "category_filter_recovery", "path": "/ru/zagranopp?q=__qazpolit_no_match_route_audit__"},
    {"id": "profile_reading_and_correction", "path": "/ru/zagranopp/ablyazov-mukhtar"},
    {"id": "profile_brief_followup", "path": "/ru/brief/ablyazov-mukhtar"},
    {"id": "profile_updates_recovery", "path": "/ru/updates?entity=ablyazov-mukhtar"},
    {"id": "graph_workbench", "path": "/ru/graph"},
    {"id": "graph_path_state", "path": "/ru/graph?from=oyan-qazaqstan&to=ndi-kazakhstan&reviewed_only=false"},
    {"id": "monitoring_filters", "path": "/ru/monitoring?q=%D0%B0%D0%B1%D0%BB%D1%8F%D0%B7%D0%BE%D0%B2"},
    {"id": "monitoring_empty_recovery", "path": "/ru/monitoring?q=__qazpolit_no_match_route_audit__"},
    {"id": "documents_recovery", "path": "/ru/documents?q=__qazpolit_no_match_route_audit__"},
    {"id": "compare_workbench", "path": "/ru/compare"},
    {"id": "compare_valid_state", "path": "/ru/compare?left=oyan-qazaqstan&right=ndi-kazakhstan"},
    {"id": "compare_invalid_recovery", "path": "/ru/compare?left=__missing__&right=ndi-kazakhstan"},
    {"id": "tools_operator_hub", "path": "/ru/tools"},
    {"id": "correction_intake", "path": "/ru/corrections?entity=ablyazov-mukhtar"},
    {"id": "correction_invalid_form_recovery", "path": "/ru/corrections"},
    {"id": "correction_submitted_next_steps", "path": "/ru/corrections?submitted=1&request=1&entity=ablyazov-mukhtar"},
    {"id": "not_found_recovery", "path": "/ru/__qazpolit_missing_route_audit__"},
    {"id": "machine_llms_index", "path": "/llms.txt"},
    {"id": "machine_ai_index", "path": "/ai-index.json"},
    {"id": "machine_contracts", "path": "/contracts/"},
    {"id": "kz_core_navigation", "path": "/kz/"},
    {"id": "en_core_navigation", "path": "/en/"}
  ]
}
