{
  "schemaVersion": "2026-07-14.1",
  "id": "qpolity-content-backlog",
  "name": "QPolity coverage limits and absent fields",
  "description": "Machine-readable publication boundary for QPolity corpora: current public coverage, absent fields, responsible layers, source requirements and acceptance rules.",
  "generatedAt": "2026-08-01T00:00:00.000Z",
  "contentAsOf": "2026-08-01T00:00:00.000Z",
  "itemCount": 18,
  "recordSource": "coverage-limit-registry",
  "fields": [
    "id",
    "priority",
    "corpus",
    "institutionId",
    "currentState",
    "publishedRecords",
    "officialTotal",
    "missingFields",
    "responsibleLayers",
    "candidateSources",
    "collectionPlan",
    "nextAction",
    "acceptanceCriteria",
    "publicationPolicy",
    "qpolityRoute",
    "provenance"
  ],
  "fieldSchema": [
    {
      "name": "id",
      "type": "string"
    },
    {
      "name": "priority",
      "type": "string"
    },
    {
      "name": "corpus",
      "type": "string"
    },
    {
      "name": "institutionId",
      "type": "string"
    },
    {
      "name": "currentState",
      "type": "string"
    },
    {
      "name": "publishedRecords",
      "type": "integer"
    },
    {
      "name": "officialTotal",
      "type": [
        "integer",
        "null"
      ]
    },
    {
      "name": "missingFields",
      "type": "array"
    },
    {
      "name": "responsibleLayers",
      "type": "array"
    },
    {
      "name": "candidateSources",
      "type": "array"
    },
    {
      "name": "collectionPlan",
      "type": "array"
    },
    {
      "name": "nextAction",
      "type": "string"
    },
    {
      "name": "acceptanceCriteria",
      "type": "string"
    },
    {
      "name": "publicationPolicy",
      "type": "string"
    },
    {
      "name": "qpolityRoute",
      "type": "string"
    },
    {
      "name": "provenance",
      "type": "object"
    }
  ],
  "coverage": {
    "completeness": "coverage-limit-registry",
    "factStatus": "publication-boundary-not-factual-claim",
    "priorityCounts": {
      "p0": 5,
      "p1": 10,
      "p2": 3
    },
    "publicationRule": "Records describe corpus boundaries, absent fields and source requirements; they do not assert facts about people, votes or documents."
  },
  "htmlListUrl": "https://qpolity.pro/sources",
  "jsonListUrl": "https://qpolity.pro/datasets/content-backlog.json",
  "sourceCollectionUrl": "https://qpolity.pro/sources",
  "recordStatus": "coverage-limit-record",
  "records": [
    {
      "id": "mazhilis-viii-request-records",
      "priority": "P0",
      "corpus": "Полная база депутатских запросов VIII созыва",
      "institutionId": "mazhilis-viii",
      "currentState": "Опубликован официальный полный срез: 1661 запросов VIII созыва; 0 проверенных карточек из старой БД; 10 внутренних карточек остаются в карантине; сессионный агрегат в БД - 1421; по формальной сверке карточный API расходится с сессионным агрегатом на +240 записей, крупнейшая дельта приходится на сессию 4 (+239); сопоставление персон покрывает 98/111 уникальных официальных идентификаторов авторов.",
      "publishedRecords": 1661,
      "officialTotal": 1661,
      "missingFields": [
        "объяснение расхождения карточного API и сессионного агрегата (+240)",
        "13 официальных идентификаторов авторов без локальной карточки",
        "тематическая классификация",
        "связанные органы и законопроекты"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Официальные данные депутатских запросов Мажилиса",
          "url": "https://mazhilis.parlam.kz/api/core/deputy-requests/?convocation_id=8",
          "kind": "official-api"
        },
        {
          "title": "Сессионная статистика QPolity",
          "url": "https://qpolity.pro/api/session-stats",
          "kind": "published-aggregate"
        }
      ],
      "collectionPlan": [
        "Сверить карточный API, сессионный агрегат и reconciliation records по каждой сессии.",
        "Разобрать unmapped official author ids через official profile search и identity-review queue без fuzzy merge.",
        "Добавить темы, адресатов, связанные органы и экспорт подборок по авторам.",
        "Обновить datasets, quality scorecard, coverage limits и страницу запросов после проверки."
      ],
      "nextAction": "Проверить методологию сессионного агрегата и причину расхождения карточного API по сессиям, затем разобрать оставшиеся несопоставленные официальные идентификаторы авторов через проверку персон в QazStack.",
      "acceptanceCriteria": "Каждый запрос имеет официальный идентификатор, регистрационный номер, дату, автора, адресата, документ, ответ при наличии и прямую ссылку на официальный источник.",
      "publicationPolicy": "Официальный полный срез публикуется отдельно от локальных карточек; слабые сопоставления персон не становятся фактами без проверки.",
      "qpolityRoute": "https://qpolity.pro/mazhilis/viii/requests",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "mazhilis-viii-bill-procedure-actions",
      "priority": "P0",
      "corpus": "Процедурные досье официальных законопроектов",
      "institutionId": "mazhilis-viii",
      "currentState": "Опубликован официальный реестр из 388 законопроектов и 388 расширенных досье с документами; стадийная лента и связи с итоговыми актами пока не нормализованы.",
      "publishedRecords": 388,
      "officialTotal": 388,
      "missingFields": [
        "хронология действий",
        "инициатор",
        "версии текста по стадиям",
        "поправки",
        "итоговый акт",
        "Adilet-ссылка",
        "связанные депутаты и комитеты"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Официальные данные законопроектов Мажилиса",
          "url": "https://mazhilis.parlam.kz/api/core/draft-laws/",
          "kind": "official-api"
        },
        {
          "title": "Официальные карточки законопроектов",
          "url": "https://mazhilis.parlam.kz/ru/all-bill",
          "kind": "official-site"
        },
        {
          "title": "Adilet",
          "url": "https://adilet.zan.kz",
          "kind": "official-legal-system"
        }
      ],
      "collectionPlan": [
        "Материализовать timeline действий из official dossier/detail records без неподтверждённых догадок.",
        "Связать документы досье с типом стадии: текст, заключение, поправка, сопроводительный документ, итоговый акт.",
        "Проверить Adilet-кандидаты только по номеру, дате, названию и official sourceRef.",
        "Опубликовать procedure actions как отдельный derived corpus и привязать к карточке законопроекта."
      ],
      "nextAction": "Использовать расширенные досье как базу; следующим проходом собрать хронологию действий, итоговый НПА и связи с Adilet.",
      "acceptanceCriteria": "Для каждого законопроекта есть текущая стадия, события с датами, документы/версии, ответственный комитет, источник и связь с итоговым актом при наличии.",
      "publicationPolicy": "Официальный реестр остается отдельным от локальных карточек инициатив; неполные процедуры показывают пробел в охвате, а не выдуманную ленту.",
      "qpolityRoute": "https://qpolity.pro/mazhilis/viii/official-draft-laws",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "mazhilis-viii-committee-events",
      "priority": "P0",
      "corpus": "Заседания, повестки и публикации комитетов",
      "institutionId": "mazhilis-viii",
      "currentState": "Опубликован официальный срез 7 комитетов с составом; события комитетов, повестки и документы заседаний не выделены в отдельный корпус.",
      "publishedRecords": 0,
      "officialTotal": null,
      "missingFields": [
        "дата заседания",
        "повестка",
        "участники",
        "законопроекты",
        "документы",
        "видео или новость",
        "протокол"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Официальные данные комитетов Мажилиса",
          "url": "https://mazhilis.parlam.kz/api/core/committees/with-deputies/",
          "kind": "official-api"
        }
      ],
      "collectionPlan": [
        "Найти официальный источник событий комитетов отдельно от состава комитетов.",
        "Собрать дату, повестку, участников, документы, видео или новость и протокол, если они опубликованы.",
        "Связать событие с комитетом, законопроектами, депутатами и document corpus.",
        "Если source не найден, сохранить explicit source-gap вместо пустой ленты."
      ],
      "nextAction": "Сначала найти разрешённый официальный источник событий комитетов; затем собрать даты заседаний, повестки, документы и ссылки на новости или видео как отдельный corpus, не смешивая его со срезом состава комитетов.",
      "acceptanceCriteria": "Карточка комитета показывает не только состав, но и проверяемую ленту событий с официальными ссылками.",
      "publicationPolicy": "Не публиковать пустые события; при отсутствии источника показывать явную границу корпуса.",
      "qpolityRoute": "https://qpolity.pro/mazhilis/viii/committees",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "person-profile-content-enrichment",
      "priority": "P0",
      "corpus": "Углубление карточек персон и должностных лиц",
      "institutionId": "qpolity",
      "currentState": "Опубликована карта полноты профилей: 156 публичных персон, 156 профилей закрыты по минимальному составу. Следующий разрыв - не минимальные поля, а карьерные хронологии, основания назначений, связанные документы и содержательные подборки упоминаний.",
      "publishedRecords": 156,
      "officialTotal": 156,
      "missingFields": [
        "карьерная хронология",
        "основание назначения",
        "предшественник/преемник",
        "связанные документы",
        "тематические подборки упоминаний",
        "связанные органы и комитеты"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Карта полноты персональных профилей QPolity",
          "url": "https://qpolity.pro/datasets/person-profile-coverage.json",
          "kind": "published-coverage-map"
        },
        {
          "title": "Портал государственных органов",
          "url": "https://www.gov.kz",
          "kind": "official-site"
        },
        {
          "title": "Akorda",
          "url": "https://www.akorda.kz",
          "kind": "official-site"
        },
        {
          "title": "Премьер-Министр Республики Казахстан",
          "url": "https://primeminister.kz",
          "kind": "official-site"
        }
      ],
      "collectionPlan": [
        "Для каждой персоны собрать career timeline с датой, ролью, органом и official sourceRef.",
        "Добавить основания назначения и освобождения: указ, постановление, официальная карточка или documented gap.",
        "Связать профиль с predecessor/successor, документами, комитетами, органами и curated mentions.",
        "Не публиковать биографические расширения без official source или проверенного derived record."
      ],
      "nextAction": "Перевести профили из режима минимального покрытия в режим полного досье: дозаполнить карьерные интервалы, основания назначений, связанные документы и curated mentions bundles.",
      "acceptanceCriteria": "Каждая публичная персона отвечает не только на вопрос кто это, но и показывает когда, на каком основании, с какими ролями, документами и публичными сигналами связана.",
      "publicationPolicy": "Новый биографический или карьерный факт публикуется только при явном official source или source-linked derived record.",
      "qpolityRoute": "https://qpolity.pro/people",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "institution-reference-enrichment",
      "priority": "P1",
      "corpus": "Содержательное усиление карточек институтов",
      "institutionId": "institutions",
      "currentState": "Опубликован реестр из 15 институциональных контуров и обзорные страницы по ключевым ветвям власти; следующий разрыв - правовые основания, структура, история руководства и связанные документы по каждому органу.",
      "publishedRecords": 15,
      "officialTotal": 15,
      "missingFields": [
        "правовое основание",
        "структура",
        "руководители по периодам",
        "связанные документы и решения",
        "история изменения статуса",
        "подведомственные единицы"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Публичный реестр институтов QPolity",
          "url": "https://qpolity.pro/datasets/institutions.json",
          "kind": "published-registry"
        },
        {
          "title": "Официальный сайт Президента Республики Казахстан",
          "url": "https://www.akorda.kz",
          "kind": "official-site"
        },
        {
          "title": "Портал государственных органов",
          "url": "https://www.gov.kz",
          "kind": "official-site"
        },
        {
          "title": "Adilet",
          "url": "https://adilet.zan.kz",
          "kind": "official-legal-system"
        }
      ],
      "collectionPlan": [
        "Для каждого института собрать правовое основание, полномочия и официальный sourceRef.",
        "Добавить руководителей по периодам и связь с публичными профилями персон.",
        "Связать орган с документами, решениями, переходным статусом и подведомственными структурами.",
        "Обновить карточку института, coverage limits и quality scorecard после проверки."
      ],
      "nextAction": "Для каждого института собрать короткую проверяемую справку: правовой статус, полномочия, руководство, связанные документы и историю изменения роли в системе власти.",
      "acceptanceCriteria": "Карточка института отвечает на вопросы что это за орган, на каком основании работает, кто руководит, как менялся и какие документы его определяют.",
      "publicationPolicy": "Если по институту отсутствует опубликованный состав или история, показывать явную границу охвата, а не имитировать полный reference module.",
      "qpolityRoute": "https://qpolity.pro/institutions",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "entity-mentions-curation",
      "priority": "P1",
      "corpus": "Подборки упоминаний по персонам и организациям",
      "institutionId": "mentions",
      "currentState": "Опубликован общий контур мониторинга персон и организаций с read-only поиском QazLake Media API; следующий разрыв - curated bundles под каждой персоной и организацией, разделение тем и сигналов по периодам.",
      "publishedRecords": 156,
      "officialTotal": null,
      "missingFields": [
        "тематические кластеры",
        "сигналы по периодам",
        "кураторские summary",
        "разделение СМИ и соцсетей",
        "связь упоминаний с назначениями и документами"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazCompute",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Мониторинг персон и организаций QPolity",
          "url": "https://qpolity.pro/mentions",
          "kind": "published-product-surface"
        },
        {
          "title": "QazLake Media",
          "url": "https://qpolity.pro/api/mentions/search",
          "kind": "published-api"
        }
      ],
      "collectionPlan": [
        "Собрать aliases и безопасные entity queries для персон, органов, партий и комитетов.",
        "Разделить результаты по СМИ, Telegram, соцсетям, видео, периоду и теме.",
        "Сформировать curated bundles с коротким summary и ссылкой на evidence, не превращая mentions в факты назначения.",
        "Вывести подборки в профиль персоны, карточку органа и общий мониторинг."
      ],
      "nextAction": "Сделать под каждой персоной и организацией не сырой поиск, а отфильтрованную подборку: последние сигналы, темы, всплески и связанные документы/назначения.",
      "acceptanceCriteria": "Пользователь получает по сущности не только список ссылок, но и понятную картину: что обсуждают, когда был всплеск и с какими событиями это связано.",
      "publicationPolicy": "Упоминание не подтверждает назначение, полномочие или факт; медиаслой остается отдельным доказательным контуром.",
      "qpolityRoute": "https://qpolity.pro/mentions",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "today-operational-briefing",
      "priority": "P1",
      "corpus": "Оперативная витрина дня и последних изменений",
      "institutionId": "qpolity",
      "currentState": "Публичная страница /today показывает опубликованные наборы и часть текущих сводок, но ещё не собрана как полноценная ежедневная картина изменений по персонам, институтам, процедурам и медиасигналам.",
      "publishedRecords": 4,
      "officialTotal": null,
      "missingFields": [
        "последние назначения и освобождения",
        "новые официальные документы",
        "последние изменения составов и ролей",
        "всплески упоминаний по ключевым сущностям",
        "coverage warnings и source-gap дня"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Главная оперативная страница QPolity",
          "url": "https://qpolity.pro/today",
          "kind": "published-product-surface"
        },
        {
          "title": "QPolity institutions registry",
          "url": "https://qpolity.pro/datasets/institutions.json",
          "kind": "published-registry"
        },
        {
          "title": "QPolity role intervals",
          "url": "https://qpolity.pro/datasets/role-intervals.json",
          "kind": "published-derived-corpus"
        },
        {
          "title": "QazLake mentions search",
          "url": "https://qpolity.pro/api/mentions/search",
          "kind": "published-api"
        }
      ],
      "collectionPlan": [
        "Собрать последние изменения из role intervals, institution registry, document corpus и QazLake signals.",
        "Разделить карточки дня на назначения, документы, изменения составов, медиапики и source-gap warnings.",
        "Для каждой карточки указать источник, дату среза, связанный маршрут и границу доверия.",
        "Сделать /today ежедневным входом в рабочие корпуса, а не обзором статичных счетчиков."
      ],
      "nextAction": "Собрать /today как операторскую дневную сводку: последние кадровые изменения, новые документы, актуальные переходы и медиасигналы с понятными переходами в профили и корпуса.",
      "acceptanceCriteria": "Страница дня показывает, что именно изменилось, где это подтверждено и по каким сущностям или корпусам нужно идти дальше.",
      "publicationPolicy": "Оперативный блок не должен имитировать новости без источника; каждая карточка дня должна ссылаться на опубликованный корпус, официальный документ или QazLake evidence.",
      "qpolityRoute": "https://qpolity.pro/today",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "kurultai-transition-calendar-and-roster",
      "priority": "P1",
      "corpus": "Переходный календарь и корпус Курултая 2026",
      "institutionId": "kurultai",
      "currentState": "Страница /kurultai уже показывает правовую рамку, дату первых выборов, официальные документы и медиаматериалы, но календарь перехода, состав после регистрации и связка с округами и кандидатами пока не превращены в полный структурированный корпус.",
      "publishedRecords": 1,
      "officialTotal": null,
      "missingFields": [
        "этапы кампании по датам",
        "состав после регистрации",
        "округа",
        "кандидаты и статус регистрации",
        "итоговый roster",
        "связанные официальные акты"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazGeo",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Страница перехода и выборов Курултая",
          "url": "https://qpolity.pro/kurultai",
          "kind": "published-product-surface"
        },
        {
          "title": "Официальная кампания ЦИК",
          "url": "https://www.election.gov.kz",
          "kind": "official-site"
        },
        {
          "title": "Adilet",
          "url": "https://adilet.zan.kz",
          "kind": "official-legal-system"
        }
      ],
      "collectionPlan": [
        "Собрать календарь перехода и кампании по датам из ЦИК, Adilet и официальных актов.",
        "Связать этапы с округами, статусом регистрации, кандидатами и будущим roster без догадок.",
        "Подключить QazGeo для округов и региональной привязки, если source дает территориальные данные.",
        "После публикации официальных итогов перевести transition layer в архивированный состав первого созыва."
      ],
      "nextAction": "Собрать календарь переходного периода и кампании в машиночитаемый корпус, затем связать его с официальными актами, округами QazGeo и будущим составом Курултая.",
      "acceptanceCriteria": "Переходный модуль показывает не только юридическую рамку, но и проверяемую последовательность этапов, участников и итоговый состав после публикации официальных данных.",
      "publicationPolicy": "До появления официальных списков и результатов нельзя заполнять roster догадками или медиапересказом.",
      "qpolityRoute": "https://qpolity.pro/kurultai",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "evidence-graph-relation-expansion",
      "priority": "P1",
      "corpus": "Расширение доказательного графа связей",
      "institutionId": "graph",
      "currentState": "Опубликован evidence graph и JSON/JSONL-корпус связей между персонами, органами, партиями, комитетами и документами, но часть полезных типов связей и человекочитаемых объяснений ещё не вынесена в публичный слой.",
      "publishedRecords": 13060,
      "officialTotal": null,
      "missingFields": [
        "объяснение связи человеческим языком",
        "расширенные типы связей по назначениям и преемственности",
        "связь с итоговыми актами и событиями",
        "фильтруемые relation families",
        "coverage map по источникам графа"
      ],
      "responsibleLayers": [
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Evidence graph dataset",
          "url": "https://qpolity.pro/datasets/entity-graph.json",
          "kind": "published-derived-corpus"
        },
        {
          "title": "Graph page",
          "url": "https://qpolity.pro/graph",
          "kind": "published-product-surface"
        },
        {
          "title": "Role intervals dataset",
          "url": "https://qpolity.pro/datasets/role-intervals.json",
          "kind": "published-derived-corpus"
        }
      ],
      "collectionPlan": [
        "Сгруппировать текущие связи в relation families: роли, авторство, адресаты, комитеты, партии, документы.",
        "Добавить human-readable explanation, period, confidence и source coverage по каждой family.",
        "Расширять граф только через source-linked records и identity-review decisions.",
        "Синхронизировать новые связи с профилями, timeline и AI index."
      ],
      "nextAction": "Расширить типы связей, добавить краткие объяснения и явнее связывать граф с ролями, документами, правовыми актами и кадровыми переходами.",
      "acceptanceCriteria": "Пользователь и ИИ-система понимают не только, что две сущности связаны, но и почему, в какой период и на каком источнике это основано.",
      "publicationPolicy": "Review-required и слабые identity matches не должны автоматически становиться подтвержденными связями графа.",
      "qpolityRoute": "https://qpolity.pro/graph",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "person-role-intervals",
      "priority": "P0",
      "corpus": "Временной граф ролей персон",
      "institutionId": "qpolity",
      "currentState": "Опубликован единый слой /datasets/role-intervals.json: мандаты, комитеты, исполнительные, региональные, судебные и конституционные должности. Линия премьер-министров 2016-2026 уже материализована с точными датами по официальным указам; следующий разрыв - точные даты начала/окончания и основания назначения по остальным историческим периодам.",
      "publishedRecords": 250,
      "officialTotal": null,
      "missingFields": [
        "точная дата начала",
        "точная дата окончания",
        "основание назначения",
        "предыдущая роль",
        "предшественник/преемник"
      ],
      "responsibleLayers": [
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Официальный сайт Мажилиса",
          "url": "https://mazhilis.parlam.kz",
          "kind": "official-site"
        },
        {
          "title": "Портал государственных органов",
          "url": "https://www.gov.kz",
          "kind": "official-site"
        },
        {
          "title": "Akorda",
          "url": "https://www.akorda.kz",
          "kind": "official-site"
        }
      ],
      "collectionPlan": [
        "Разделить интервалы по точности даты: exact, year, snapshot и documented gap.",
        "Для действующих ролей найти official act/sourceRef назначения и дату начала.",
        "Для архивных ролей найти дату окончания, основание перехода и следующую роль.",
        "Синхронизировать role intervals с evidence graph и профилями без автоматического identity merge."
      ],
      "nextAction": "Дозаполнить точные даты и основания для действующих должностных лиц, архивных созывов и кабинетных портфелей; новые связи добавлять только с sourceRefs.",
      "acceptanceCriteria": "Каждая публичная персона имеет проверяемые интервалы должностей, точные даты при наличии официального источника и основание назначения без искусственного вывода.",
      "publicationPolicy": "Слабые сопоставления имён остаются на ручной проверке и не становятся публичными фактами.",
      "qpolityRoute": "https://qpolity.pro/people",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "historical-parliament-rosters",
      "priority": "P1",
      "corpus": "Исторические составы Мажилиса I-VII и Сената",
      "institutionId": "mazhilis-convocations",
      "currentState": "Опубликованы обзорные страницы созывов и отдельный coverage map по официальному API Мажилиса: VIII созыв отдается как roster, I-VII на том же endpoint возвращают пустые массивы и требуют другого официального источника.",
      "publishedRecords": 8,
      "officialTotal": null,
      "missingFields": [
        "персона",
        "созыв",
        "палата",
        "фракция или группа",
        "комитет",
        "роль",
        "период",
        "источник"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Официальные данные созывов Мажилиса",
          "url": "https://mazhilis.parlam.kz/api/core/convocations/",
          "kind": "official-api"
        },
        {
          "title": "Официальный coverage map QPolity по endpoint депутатов",
          "url": "https://qpolity.pro/datasets/parliament-convocation-coverage.json",
          "kind": "published-coverage-map"
        },
        {
          "title": "Официальный сайт Сената",
          "url": "https://senate.parlam.kz",
          "kind": "official-site"
        }
      ],
      "collectionPlan": [
        "Зафиксировать для I-VII Мажилиса пустой ответ текущего endpoint как source-gap, а не как нулевой состав.",
        "Найти официальные архивные страницы или документы состава по каждому созыву и палате.",
        "Нормализовать поля: персона, палата, созыв, фракция, комитет, роль, период, sourceRef.",
        "Опубликовать roster corpus только после проверки completeness или оставить documented gap."
      ],
      "nextAction": "Для I-VII Мажилиса и Сената найти архивные официальные страницы или документы состава; пустой ответ текущего API считать source-gap, а не фактом отсутствия записей.",
      "acceptanceCriteria": "Для каждого созыва есть либо машиночитаемый список состава с источниками и датами, либо явная source-gap запись с проверенным endpoint и следующим источником-кандидатом.",
      "publicationPolicy": "Исторический созыв нельзя показывать как полный модуль без реального состава и метаданных охвата.",
      "qpolityRoute": "https://qpolity.pro/mazhilis",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "votes-divisions-attendance",
      "priority": "P1",
      "corpus": "Голосования, деления и присутствие",
      "institutionId": "mazhilis-viii",
      "currentState": "Персональные поимённые голосования не опубликованы в текущем корпусе QPolity.",
      "publishedRecords": 0,
      "officialTotal": null,
      "missingFields": [
        "идентификатор голосования",
        "дата",
        "вопрос",
        "результат",
        "голос депутата",
        "тип голосования",
        "источник",
        "присутствие"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Официальный сайт Мажилиса",
          "url": "https://mazhilis.parlam.kz",
          "kind": "official-site"
        }
      ],
      "collectionPlan": [
        "Проверить наличие официального корпуса поимённых голосований и посещаемости.",
        "Если source найден, собрать vote id, дату, вопрос, результат, голос депутата и официальный URL.",
        "Если source не найден, опубликовать explicit source-gap без персональных выводов из новостей.",
        "Связать найденные голосования с законопроектами, депутатами и методологией публикации."
      ],
      "nextAction": "Проверить, существует ли официальный корпус поимённых голосований; если нет, публиковать только агрегаты и явную запись об отсутствии источника.",
      "acceptanceCriteria": "Либо есть проверенный корпус голосований, либо публичная машиночитаемая запись об отсутствии официального персонального источника.",
      "publicationPolicy": "Не выводить персональные позиции депутатов из новостей, пересказов или модельных предположений.",
      "qpolityRoute": "https://qpolity.pro/mazhilis/viii/methodology",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "debates-speeches-hansard",
      "priority": "P1",
      "corpus": "Стенограммы, выступления и вклад депутатов",
      "institutionId": "mazhilis-viii",
      "currentState": "Опубликованный корпус выступлений и стенограмм по парламентским заседаниям: 0 записей.",
      "publishedRecords": 0,
      "officialTotal": null,
      "missingFields": [
        "заседание",
        "дата",
        "спикер",
        "текст",
        "тема",
        "связанный законопроект",
        "видео/стенограмма",
        "официальный URL"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazCompute",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Официальный сайт Мажилиса",
          "url": "https://mazhilis.parlam.kz",
          "kind": "official-site"
        },
        {
          "title": "Официальные видео и публикации",
          "url": "https://www.parlam.kz",
          "kind": "official-site"
        }
      ],
      "collectionPlan": [
        "Найти официальные стенограммы, видео, новости заседаний и карточки выступлений.",
        "Собрать дату, спикера, тему, связанный законопроект, source URL и media/document reference.",
        "Оставить ASR/OCR/NER как QazCompute candidate layer до проверки источником.",
        "Вывести проверенные выступления в профиль депутата, mentions и document graph."
      ],
      "nextAction": "Собрать официальные стенограммы, видео и новости; распознавание текста, речи и именованных сущностей оставить в QazCompute как кандидатные признаки; публикация только после подтверждения источником.",
      "acceptanceCriteria": "Профиль депутата показывает проверяемые выступления с датой, темой, источником и связанным объектом.",
      "publicationPolicy": "Модельная расшифровка не является фактом без ссылки на первичный материал и статуса проверки.",
      "qpolityRoute": "https://qpolity.pro/mentions",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "document-snapshot-text-coverage",
      "priority": "P1",
      "corpus": "Локальные снимки и текстовый слой официальных документов",
      "institutionId": "qpolity-document-corpus",
      "currentState": "Опубликован официальный инвентарь 4566 документов; локально сохранены 9 файлов и опубликованы 9 текстовых sidecars. Остальной корпус остаётся inventory официальных URL, а не полнотекстовым архивом QPolity.",
      "publishedRecords": 9,
      "officialTotal": 4566,
      "missingFields": [
        "bounded capture plan по корпусам",
        "локальный snapshot",
        "SHA-256",
        "plain text sidecar",
        "OCR/PDF extraction",
        "object storage boundary"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazCompute",
        "QazLake",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "QPolity document corpus inventory",
          "url": "https://qpolity.pro/datasets/document-corpus.json",
          "kind": "published-url-inventory"
        },
        {
          "title": "QPolity local document snapshots",
          "url": "https://qpolity.pro/datasets/document-snapshots.json",
          "kind": "bounded-local-snapshot-manifest"
        },
        {
          "title": "QPolity document text sidecars",
          "url": "https://qpolity.pro/datasets/document-text-sidecars.json",
          "kind": "bounded-text-sidecar-manifest"
        }
      ],
      "collectionPlan": [
        "Разбить 4566 official URLs на batches по корпусу, типу файла, размеру и приоритету.",
        "Для выбранного batch выполнить bounded fetch, checksum, snapshot manifest и failure reason.",
        "Извлечь text sidecars через QazPipe/QazCompute, не выполняя массовый OCR в public runtime.",
        "Публиковать в git только manifest/provenance, а крупные файлы переводить в owned object storage."
      ],
      "nextAction": "Перевести document corpus из metadata inventory в управляемый архивный контур: расширять bounded snapshots, извлекать текст из DOCX/PDF через QazPipe/QazCompute, а массовые файлы хранить вне git в object storage с манифестом, checksum и provenance.",
      "acceptanceCriteria": "Каждый выбранный документ имеет официальный URL, локальный snapshot или явную причину отсутствия, checksum, статус извлечения текста и границу хранения; полнотекстовый поиск использует только опубликованные sidecars.",
      "publicationPolicy": "Document metadata не считается локальным архивом. Массовый захват 1.5+ ГБ документов не коммитить в git; QPolity публикует манифест, provenance и ссылки на безопасный storage.",
      "qpolityRoute": "https://qpolity.pro/sources",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "interests-disclosures",
      "priority": "P1",
      "corpus": "Декларации, интересы и публичные раскрытия",
      "institutionId": "qpolity",
      "currentState": "В карточках предусмотрены поля финансового раскрытия, но системный корпус интересов не собран.",
      "publishedRecords": 0,
      "officialTotal": null,
      "missingFields": [
        "тип раскрытия",
        "период",
        "документ",
        "орган публикации",
        "ссылка",
        "дата проверки",
        "правовой режим"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Портал государственных органов",
          "url": "https://www.gov.kz",
          "kind": "official-site"
        },
        {
          "title": "Антикоррупционная служба",
          "url": "https://www.gov.kz/memleket/entities/anticorruption",
          "kind": "official-site"
        }
      ],
      "collectionPlan": [
        "Проверить правовой режим публичных раскрытий и запреты на републикацию персональных данных.",
        "Собирать только законно опубликованные metadata, URLs, периоды и типы раскрытия.",
        "Связать наличие раскрытия с профилем персоны без публикации закрытых сведений.",
        "Если открытый source отсутствует, показывать documented gap вместо пустой карточки."
      ],
      "nextAction": "Проверить законные публичные источники раскрытий и границы воспроизведения; собрать только метаданные и ссылки, если текст/файл нельзя републиковать.",
      "acceptanceCriteria": "Публичная карточка показывает наличие/отсутствие проверенного источника раскрытия и не публикует закрытые данные.",
      "publicationPolicy": "Не хранить и не выводить приватные данные; только законно опубликованные документы или метаданные.",
      "qpolityRoute": "https://qpolity.pro/sources",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "government-cabinet-history",
      "priority": "P2",
      "corpus": "История правительств, кабинетов и министров",
      "institutionId": "governments",
      "currentState": "Опубликована обзорная страница правительств, source-linked линия премьер-министров 2016-2026 (4 подтвержденных кабинетных периода) и часть персон; полный временной корпус министров по кабинетам пока не собран.",
      "publishedRecords": 4,
      "officialTotal": null,
      "missingFields": [
        "состав кабинета по периодам",
        "министр",
        "портфель",
        "дата назначения",
        "дата прекращения",
        "указ/постановление",
        "источник"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Премьер-Министр Республики Казахстан",
          "url": "https://primeminister.kz",
          "kind": "official-site"
        },
        {
          "title": "Akorda",
          "url": "https://www.akorda.kz",
          "kind": "official-site"
        },
        {
          "title": "Adilet",
          "url": "https://adilet.zan.kz",
          "kind": "official-legal-system"
        }
      ],
      "collectionPlan": [
        "Собрать составы кабинетов по периодам: премьер-министр, министры, портфели и даты.",
        "Связать каждое назначение и освобождение с указом, постановлением или official profile source.",
        "Нормализовать изменения названий министерств и портфелей без смешения периодов.",
        "Опубликовать cabinet role intervals и связать их с /governments, /people и graph."
      ],
      "nextAction": "Собрать составы министров и портфели по каждому кабинету, затем связать их со слоем временных интервалов ролей и правовыми актами.",
      "acceptanceCriteria": "Для каждого периода правительства есть состав, портфели, даты и официальный источник назначения.",
      "publicationPolicy": "Не смешивать действующее правительство и исторические кабинеты без дат периодов.",
      "qpolityRoute": "https://qpolity.pro/governments",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "regional-mio-akims-history",
      "priority": "P2",
      "corpus": "МИО, акимы и история назначений",
      "institutionId": "akims",
      "currentState": "Опубликован текущий срез акимов с локальными фото; заместители, аппараты и история назначений не собраны.",
      "publishedRecords": 20,
      "officialTotal": null,
      "missingFields": [
        "регион",
        "должность",
        "назначение",
        "освобождение",
        "предшественник",
        "заместители",
        "аппарат",
        "ссылка на источник"
      ],
      "responsibleLayers": [
        "QazPipe",
        "QazGeo",
        "QazLake",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "Портал государственных органов",
          "url": "https://www.gov.kz",
          "kind": "official-site"
        },
        {
          "title": "QazGeo",
          "url": "https://qazgeo.qdev.run",
          "kind": "internal-reference"
        }
      ],
      "collectionPlan": [
        "Связать каждый регион с устойчивым QazGeo id, типом региона и официальным gov.kz разделом.",
        "Собрать историю назначений акимов: дата, основание, predecessor, successor и sourceRef.",
        "Добавить заместителей и аппарат только при наличии официального опубликованного источника.",
        "Связать региональные роли с mentions, graph и profile coverage без внешних hotlinks."
      ],
      "nextAction": "Связать текущих акимов с идентификаторами регионов QazGeo и собрать историю назначений по официальным биографиям и указам.",
      "acceptanceCriteria": "Каждый регион имеет текущего руководителя, историю назначений, ссылку на источник и стабильный идентификатор региона.",
      "publicationPolicy": "Карта не должна тянуть фото или данные со сторонних сайтов в браузере.",
      "qpolityRoute": "https://qpolity.pro/akims",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    },
    {
      "id": "comparative-parliament-indicators",
      "priority": "P2",
      "corpus": "Сравнимые парламентские показатели",
      "institutionId": "qpolity",
      "currentState": "QPolity показывает локальные показатели, но пока не публикует сопоставимые международные индикаторы по парламентам.",
      "publishedRecords": 0,
      "officialTotal": null,
      "missingFields": [
        "пол",
        "возрастная группа",
        "способ избрания",
        "регион",
        "срок полномочий",
        "тип палаты",
        "источник"
      ],
      "responsibleLayers": [
        "QazLake",
        "QazStack",
        "QPolity"
      ],
      "candidateSources": [
        {
          "title": "IPU Parline",
          "url": "https://data.ipu.org/",
          "kind": "international-reference"
        },
        {
          "title": "Официальный сайт Мажилиса",
          "url": "https://mazhilis.parlam.kz",
          "kind": "official-site"
        }
      ],
      "collectionPlan": [
        "Определить методологию каждого показателя: единица измерения, дата среза, population и source.",
        "Собрать локальные показатели Казахстана из официальных QPolity corpora.",
        "Сравнивать с IPU Parline только по совместимым полям и с явной границей лицензии/методологии.",
        "Опубликовать indicators dataset, scorecard и визуальные карточки без неподтвержденных выводов."
      ],
      "nextAction": "Собрать локальные сравнимые показатели Казахстана и явно отделить их от международных справочных данных.",
      "acceptanceCriteria": "Есть отдельная выгрузка indicators с методологией, единицами измерения и датой среза.",
      "publicationPolicy": "Не строить сравнения без единиц, даты среза и определения показателя.",
      "qpolityRoute": "https://qpolity.pro/today",
      "provenance": {
        "sourceType": "content-backlog",
        "sourceUrl": "https://qpolity.pro/datasets/content-backlog.json",
        "sourceCheckedAt": "2026-08-01T00:00:00.000Z",
        "confidence": "high",
        "sourceTitle": "QPolity coverage limits registry",
        "sourceDocumentType": "coverage-limit-registry",
        "sourceCollectionUrl": "https://qpolity.pro/sources",
        "recordStatus": "publication-boundary-not-factual-claim",
        "collectionMethod": "benchmark-derived-coverage-limit-registry"
      }
    }
  ]
}
