{
  "schema_version": "qaz.expert.platform-exchange-contract.v1",
  "generated_at": "2026-07-28T22:48:30.302Z",
  "project": {
    "id": "qaz-expert",
    "canonical_url": "https://qaz.expert",
    "role": "Публичный каталог проверенных данных о Казахстане"
  },
  "verified_sources": {
    "qazstack_version": "1.31.0",
    "qazstack_revision": "7fe108c5a107b8da423952355badbb5869d480e9",
    "qazstack_vendor_revision": "7fe108c5a107b8da423952355badbb5869d480e9",
    "avds_source": {
      "site": "https://avds.digital",
      "package": "@sgeo/ui-kit",
      "version": "4.x"
    },
    "platform_registry_observation": {
      "checked_at": "2026-07-18",
      "qz_runtime_policy": "Не менять закреплённую версию QazStack до отдельной ветки миграции, обновления локальных примитивов и прохождения контрактных и публичных проверок.",
      "observed_qazstack_readiness_release": "1.39.0",
      "observed_qazstack_implementation_release": "1.18.0"
    }
  },
  "exchange": {
    "consume_from_qazstack": [
      {
        "id": "ui-ranked-search",
        "status": "active",
        "local_surface": [
          "/search/",
          "/assets/vendor/qazstack/ranked-search.js"
        ],
        "reason": "Единый алгоритм ранжирования публичного индекса без второй поисковой реализации."
      },
      {
        "id": "ui-disclosure-group",
        "status": "active",
        "local_surface": [
          "/regions/<slug>/",
          "/assets/vendor/qazstack/disclosure-group.js"
        ],
        "reason": "Компактные раскрываемые группы для операторских мобильных экранов."
      },
      {
        "id": "public-provenance-contract",
        "status": "active",
        "local_surface": [
          "/data/datasets/provenance.json",
          "/data/quality-report.json"
        ],
        "reason": "Каждый публичный факт держит источник, период, актуальность и границу применения."
      },
      {
        "id": "temporal-release-contracts",
        "status": "active",
        "local_surface": [
          "/api/timemachine/event-batch",
          "/api/timemachine/snapshot-diff",
          "/api/timemachine/temporal-contracts"
        ],
        "reason": "TimeMachine выпускает воспроизводимые срезы без привязки браузера к внутренней вычислительной среде."
      },
      {
        "id": "release-manifest-contract",
        "status": "active",
        "local_surface": [
          "/data/release-manifest.json",
          "/data/public-probe-registry.json"
        ],
        "reason": "Публичный выпуск проверяется по контрольным суммам, реестру проверок и версии для отката."
      }
    ],
    "evaluate_from_qazstack": [
      {
        "id": "consumer-health-registry",
        "observed_status": "implemented-needs-adoption-evidence",
        "target_surface": [
          "/data/database-health.json",
          "/workbench/"
        ],
        "reason": "QAZ.EXPERT уже выпускает публичную сводку состояния; следующий шаг – привести её к общему реестру качества QazStack без потери локальных лимитов."
      },
      {
        "id": "consumer-smoke-matrix",
        "observed_status": "implemented-needs-adoption-evidence",
        "target_surface": [
          "/data/public-probe-registry.json",
          "scripts/check-live.mjs"
        ],
        "reason": "Локальный реестр быстрых проверок можно сделать совместимым с общей матрицей проверок потребителей."
      },
      {
        "id": "privacy-safe-evidence",
        "observed_status": "implemented-needs-adoption-evidence",
        "target_surface": [
          "/data/datasets/provenance.json",
          "/data/reviewed-projection-registry.json"
        ],
        "reason": "Публичные подтверждения должны оставаться без сырых наблюдений, приватных URL, персональных данных и внутренних заметок."
      },
      {
        "id": "ai-discovery-map",
        "observed_status": "implemented-needs-adoption-evidence",
        "target_surface": [
          "/ai.json",
          "/ai-manifest.json",
          "/llms.txt",
          "/data/site-discovery.json"
        ],
        "reason": "Карта машиночитаемых данных уже есть; её стоит сверить с общим форматом QazStack, не меняя публичные URL."
      },
      {
        "id": "geo-and-location-layer-registry",
        "observed_status": "runtime-ready",
        "target_surface": [
          "/data/qazgeo-public-contract.json",
          "/data/region-analytics/index.json"
        ],
        "reason": "ADM1 уже подключён; ADM2, районы и города нужно добирать только из версионированного контракта QazGeo/QazRegion."
      },
      {
        "id": "entity-store-alias-policy",
        "observed_status": "documented",
        "target_surface": [
          "/data/entities.json",
          "/data/entity-federation.json"
        ],
        "reason": "Общую политику алиасов и идентичности можно использовать только без автоматической склейки людей и с обязательной проверкой связей тождественности."
      },
      {
        "id": "compute-and-inference-contracts",
        "observed_status": "runtime-ready-shadow-only",
        "target_surface": [
          "/api/timemachine/temporal-contracts"
        ],
        "reason": "Для обмена подходят только ограниченные вычисления после проверки; редакционные решения, веса и публикационная политика остаются локальными."
      }
    ],
    "consume_from_avds4": [
      {
        "id": "metrics-and-summary",
        "status": "active-semantic",
        "local_surface": [
          "/",
          "/indicators/",
          "/regions/"
        ],
        "reason": "Компактные метрики и сводные строки удерживают рабочую плотность без декоративных панелей."
      },
      {
        "id": "evidence-and-provenance",
        "status": "active-semantic",
        "local_surface": [
          "/sources/",
          "/datasets/",
          "/api/"
        ],
        "reason": "Источник, период и статус качества показаны одинаковым языком на всех страницах."
      },
      {
        "id": "navigation-filtering",
        "status": "active-semantic",
        "local_surface": [
          "/search/",
          "/entities/",
          "/cards/"
        ],
        "reason": "Фильтры, метки и поисковые поля используют общий компактный паттерн."
      },
      {
        "id": "mobile-operator-shell",
        "status": "active-semantic",
        "local_surface": [
          "/",
          "/assets/styles.css",
          "/assets/app.js"
        ],
        "reason": "Телефон и планшет работают как рабочее приложение, а не как длинный лендинг."
      },
      {
        "id": "ops-status",
        "status": "active-semantic",
        "local_surface": [
          "/data/database-health.json",
          "/workbench/"
        ],
        "reason": "Статусы актуально/ограничено/устаревает/неизвестно показываются как эксплуатационные состояния, а не как оформление."
      }
    ],
    "evaluate_from_avds4": [
      {
        "id": "route-specific-read-models",
        "observed_status": "platform-audit-candidate",
        "target_surface": [
          "/regions/",
          "/entities/",
          "/workbench/"
        ],
        "reason": "AV DS и платформенный аудит рекомендуют не грузить крупные общие модели там, где нужен маленький срез под конкретный маршрут."
      },
      {
        "id": "size-budget-indicators",
        "observed_status": "platform-audit-candidate",
        "target_surface": [
          "/data/database-health.json",
          "/workbench/"
        ],
        "reason": "Вес публичных моделей чтения должен быть видимым операционным статусом, а не скрытым техническим риском."
      },
      {
        "id": "compact-filter-toolbar",
        "observed_status": "design-system-candidate",
        "target_surface": [
          "/search/",
          "/entities/",
          "/cards/"
        ],
        "reason": "Фильтры должны занимать одну компактную рабочую строку на телефоне и планшете."
      },
      {
        "id": "evidence-data-table",
        "observed_status": "design-system-candidate",
        "target_surface": [
          "/sources/",
          "/datasets/",
          "/api/"
        ],
        "reason": "Табличные поверхности с подтверждениями лучше стандартизировать, чем поддерживать несколько локальных вариантов."
      },
      {
        "id": "graph-overview-panel",
        "observed_status": "design-system-candidate",
        "target_surface": [
          "/",
          "/entities/"
        ],
        "reason": "Граф связей нужен как примитив данных: узлы, связи, фильтр и происхождение, без декоративной визуализации ради визуализации."
      }
    ],
    "contribute_to_qazstack": [
      {
        "id": "public-data-health-v1",
        "candidate_from": "/data/database-health.json",
        "status": "ready-for-extraction",
        "reason": "Проверяет вес публичной базы, дубли, граф, маршруты, неразрешённые локации и целостность выпуска."
      },
      {
        "id": "source-declared-region-resolution-policy",
        "candidate_from": "scripts/build-region-analytics.mjs",
        "status": "ready-for-qazgeo-review",
        "reason": "Безопасный резерв связывает населённый пункт с регионом только при явно указанном QazGeo slug и не заменяет точную геометрию."
      },
      {
        "id": "public-probe-registry-v1",
        "candidate_from": "/data/public-probe-registry.json",
        "status": "ready-for-extraction",
        "reason": "Компактный реестр быстрых проверок дополняет глубокую проверку живого сайта и может стать общим контрактом публичных сайтов."
      },
      {
        "id": "reviewed-entity-federation-v1",
        "candidate_from": "/data/entity-federation.json",
        "status": "reviewed-link-source-needed",
        "reason": "Разделяет идентичность, покрытие и проверенные связи тождественности, не склеивая персон автоматически.",
        "evidence": {
          "geo_bindings": 267,
          "reviewed_same_as_links": 0
        }
      },
      {
        "id": "public-entity-graph-v1",
        "candidate_from": "/data/entity-graph.json",
        "status": "ready-for-extraction",
        "reason": "Единый формат узлов и связей между разделами, регионами, источниками и публичными сущностями.",
        "evidence": {
          "nodes_total": 1921,
          "edges_total": 4649
        }
      }
    ],
    "contribute_to_avds4": [
      {
        "id": "dense-operator-data-card",
        "candidate_from": "QAZ.EXPERT summary cards",
        "status": "ready-for-design-system-review",
        "reason": "Плотная карточка с числом, периодом, источником и маршрутом без лишнего текста."
      },
      {
        "id": "provenance-chip-stack",
        "candidate_from": "published collection detail pages",
        "status": "ready-for-design-system-review",
        "reason": "Единый компактный способ показывать период, источник и актуальность."
      },
      {
        "id": "database-health-panel",
        "candidate_from": "/workbench/",
        "status": "ready-for-design-system-review",
        "reason": "Операционный статус публичной базы с причинами деградации и проверяемыми лимитами."
      },
      {
        "id": "region-comparison-row",
        "candidate_from": "/regions/<slug>/",
        "status": "ready-for-design-system-review",
        "reason": "Сравнение региона с национальным ориентиром, сопоставимыми регионами и источниковой привязкой в одну строку."
      },
      {
        "id": "mobile-data-app-shell",
        "candidate_from": "global responsive shell",
        "status": "ready-for-design-system-review",
        "reason": "Паттерн мобильного рабочего инструмента с нижней навигацией и компактной системной панелью."
      },
      {
        "id": "regional-relationship-explorer",
        "candidate_from": "/workbench/#compare",
        "status": "ready-for-design-system-review",
        "reason": "Компактное доступное представление связи двух показателей с медианными секторами, переходом к объекту, выгрузкой и явной границей причинности."
      },
      {
        "id": "indicator-reuse-actions",
        "candidate_from": "/indicators/<slug>/",
        "status": "ready-for-design-system-review",
        "reason": "Единая строка действий для конкретного показателя: CSV, воспроизводимая ссылка, JSON, источник и компактная оценка покрытия."
      }
    ]
  },
  "boundaries": [
    "QAZ.EXPERT не публикует сырые QazLake/QazPipe, внутренние очереди, автоматически извлечённые неподтверждённые сущности или операторские заметки.",
    "Персоны не объединяются автоматически: связь тождественности требует проверки, внешнего устойчивого идентификатора и источника.",
    "QazCompute остаётся в теневом режиме до отдельного публичного запуска.",
    "Локальные HTML/CSS-примитивы можно переносить в AV DS 4 только после проверки, без обратной зависимости на этот сайт."
  ],
  "next_actions": [
    {
      "id": "qazstack-public-data-health-contract",
      "owner": "QazStack + QAZ.EXPERT",
      "priority": "P1",
      "done_when": "QazStack принимает нейтральную схему качества и проверок, а QAZ.EXPERT остаётся её потребителем и проверочной площадкой."
    },
    {
      "id": "avds4-operator-data-primitives",
      "owner": "AV DS 4 + QAZ.EXPERT",
      "priority": "P1",
      "done_when": "Плотные карточки, метки происхождения и строка сравнения регионов описаны как системные примитивы и не дублируются локально."
    },
    {
      "id": "reviewed-cross-project-entities",
      "owner": "QazPipe + QazLake + QazStack + QAZ.EXPERT",
      "priority": "P1",
      "done_when": "Появляется проверенный выпуск персон, организаций и локаций с политикой алиасов и явным запретом автоматического слияния."
    },
    {
      "id": "qazgeo-adm2-public-contract",
      "owner": "QazGeo + QazRegion",
      "priority": "P2",
      "done_when": "Районы и города приходят как версионированный публичный контракт, а не как локальная производная QAZ.EXPERT."
    }
  ]
}
