{"schema": "qazstack.qazread.export.v1", "generatedAt": "2026-06-27T05:51:17.825414+00:00", "product": {"id": "qazread", "name": "QazRead", "canonicalDomain": "qread.pro", "canonicalDomainStatus": "live", "currentLiveDomain": "qread.pro", "lifecycle": "beta"}, "runtime": {"contractVersion": "qazread.preview.v0.40", "environment": "live_runtime", "release": {"id": "codex/fix-qazstack-consumer-contract-schema-20260727@a91f501", "shortSha": "a91f501", "fullSha": "a91f50113d47fa158057c52f7ecbaa1fb58b8cc1", "branch": "codex/fix-qazstack-consumer-contract-schema-20260727", "deployedAt": "2026-08-05T05:54:46Z", "source": "release_file", "reportedAt": "2026-08-05T09:26:10.357013+00:00"}, "health": {"api": "ok", "seed": "ok", "challengeState": "ok", "worker": "ok", "postgres": "configured"}, "storage": {"challengeState": "preview_state.sqlite3", "stateMirror": "preview_state.json", "mode": "postgres_primary", "runtimeBackend": "postgresql", "configuredBackend": "postgresql", "dbSchema": "qazread", "databaseConfigured": true, "migrationsRunner": "production/run_migrations.py"}, "operations": {"totalLogs": 9, "pendingLogs": 4, "acceptedLogs": 5, "auditEvents": 9, "latestAuditAt": "2026-06-27T05:51:17.825414+00:00", "joinedMemberships": 11, "pendingDeliveries": 9, "sentDeliveries": 0, "workerRuns": 8}}, "surfaces": [{"id": "portfolio", "label": "Обзор", "status": "готово", "access": "public"}, {"id": "portal", "label": "Портал", "status": "готово", "access": "public"}, {"id": "index", "label": "Указатель", "status": "готово", "access": "public"}, {"id": "challenge", "label": "Маршрут чтения", "status": "готово", "access": "protected"}, {"id": "observatory", "label": "Координация", "status": "готово", "access": "protected"}, {"id": "publish", "label": "Права и публикация", "status": "готово", "access": "protected"}], "catalog": {"totalItems": 83, "publicReadyItems": 83, "metrics": [{"label": "Каталожные записи", "value": "83", "note": "доступны в публичных машиночитаемых выгрузках"}, {"label": "Открытые карточки", "value": "83", "note": "публичные метаданные; онлайн-чтение и фрагменты считаются отдельно"}, {"label": "Читать онлайн", "value": "0", "note": "есть реальный онлайн-доступ"}, {"label": "Публичный фрагмент", "value": "0", "note": "записи с открытым фрагментом или выдержкой"}, {"label": "Ограниченный доступ", "value": "0", "note": "остаются внутри институциональных маршрутов"}], "typeBreakdown": [{"key": "books", "label": "Книги", "value": "60", "note": "тип записи в открытом каталоге"}, {"key": "authors", "label": "Авторы", "value": "8", "note": "тип записи в открытом каталоге"}, {"key": "libraries", "label": "Библиотеки", "value": "6", "note": "тип записи в открытом каталоге"}, {"key": "events", "label": "События", "value": "9", "note": "тип записи в открытом каталоге"}], "deliveryBreakdown": [{"label": "Только метаданные", "value": "83", "note": "режим выдачи в открытом каталоге"}, {"label": "Публичный фрагмент", "value": "0", "note": "режим выдачи в открытом каталоге"}, {"label": "Читать онлайн", "value": "0", "note": "режим выдачи в открытом каталоге"}, {"label": "Только для институции", "value": "0", "note": "режим выдачи в открытом каталоге"}], "sourceBreakdown": [{"label": "karlib.event.shyragyn club 2026", "value": "2", "note": "источник каталога"}, {"label": "ONIX-импорт издательских метаданных", "value": "2", "note": "структурированная издательская выгрузка"}, {"label": "csl.institution profile", "value": "1", "note": "источник каталога"}, {"label": "karlib.institution profile", "value": "1", "note": "источник каталога"}, {"label": "KazNEB и Adebiportal: «Қара сөздер»", "value": "1", "note": "публичная каталожная запись"}, {"label": "KazNEB: «Абай жолы»", "value": "1", "note": "публичная каталожная запись"}, {"label": "Открытый каталог", "value": "1", "note": "публичная каталожная запись"}, {"label": "Открытый каталог", "value": "1", "note": "публичная каталожная запись"}, {"label": "kazneb.koha.1110990", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1163164", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.132489", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1518239", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1519008", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1519009", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1519010", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "Открытый каталог", "value": "1", "note": "публичная каталожная запись"}, {"label": "KazNEB: «Көшпенділер»", "value": "1", "note": "публичная каталожная запись"}, {"label": "KazNEB: «Менің атым Қожа»", "value": "1", "note": "публичная каталожная запись"}, {"label": "KazNEB: «Қан мен тер»", "value": "1", "note": "публичная каталожная запись"}, {"label": "nabrk.institution profile", "value": "1", "note": "источник каталога"}, {"label": "nlrk.institution profile", "value": "1", "note": "источник каталога"}, {"label": "Поиск по открытому книжному каталогу", "value": "1", "note": "обновляемый публичный источник"}, {"label": "pushkinlibrary.institution profile", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author abai 001", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author auezov 002", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author esenberlin 003", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author mukanov 008", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author mustafin 007", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author nurpeisov 005", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author sokpakbaev 004", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author zhumabayev 006", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event abai audio 003", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event batyr bayan audio 007", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event catalog day 008", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event family 001", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event kokserek school 006", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event rights clinic 005", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event summer 002", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.qara sozder bilingual", "value": "1", "note": "источник каталога"}, {"label": "Сценарий проверки прав QazRead", "value": "1", "note": "рабочий сценарий продукта"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Koha-импорт библиотеки QazRead", "value": "1", "note": "структурированная библиотечная выгрузка"}], "facets": [{"key": "type", "label": "Тип записи", "options": [{"key": "books", "label": "Книги", "count": 60}, {"key": "events", "label": "События", "count": 9}, {"key": "authors", "label": "Авторы", "count": 8}, {"key": "libraries", "label": "Библиотеки", "count": 6}]}, {"key": "sourceType", "label": "Тип источника", "options": [{"key": "curated_metadata", "label": "кураторский корпус QazRead", "count": 40}, {"key": "author_profile", "label": "авторская карточка", "count": 8}, {"key": "public_catalog", "label": "публичный каталог", "count": 8}, {"key": "qazread_scenario", "label": "программа QazRead", "count": 8}, {"key": "structured_koha", "label": "структурированная Koha-выгрузка", "count": 8}, {"key": "institution_profile", "label": "профиль институции", "count": 5}, {"key": "public_event_context", "label": "публичный контекст события", "count": 2}, {"key": "structured_onix", "label": "структурированный ONIX", "count": 2}, {"key": "live_public_api", "label": "live_public_api", "count": 1}, {"key": "workflow_scenario", "label": "рабочий процесс", "count": 1}]}, {"key": "deliveryKey", "label": "Режим доставки", "options": [{"key": "catalog", "label": "Только метаданные", "count": 83}]}, {"key": "relationStatus", "label": "Уровень идентичности", "options": [{"key": "work_only", "label": "Только произведение", "count": 50}, {"key": "not_applicable", "label": "Не библиографическая запись", "count": 23}, {"key": "edition_linked", "label": "Произведение и издание", "count": 9}, {"key": "unresolved", "label": "Идентичность требует сверки", "count": 1}]}, {"key": "freshnessStatus", "label": "Свежесть источника", "options": [{"key": "observed", "label": "Время источника указано", "count": 50}, {"key": "unknown", "label": "Время источника неизвестно", "count": 33}]}], "exports": [{"key": "json", "title": "Каталог в машиночитаемом виде", "href": "/api/v1/public/catalog", "note": "Постраничная машиночитаемая выгрузка для поиска, встраивания и внешних проверок."}, {"key": "csv", "title": "Табличная выгрузка", "href": "/api/v1/public/catalog.csv", "note": "Плоская выгрузка для партнёров, ручной сверки и быстрого обмена."}, {"key": "ndjson", "title": "Построчная лента данных", "href": "/api/v1/public/catalog.ndjson", "note": "Потоковая машиночитаемая лента для адаптеров и фоновых задач."}, {"key": "opds", "title": "OPDS 2.0 каталог", "href": "/api/v1/public/catalog.opds.json", "note": "Стандартная книжная лента для совместимости с reader/catalog-клиентами."}]}, "provenance": {"sourceFamilies": [{"key": "qazread_onix_import", "title": "ONIX-метаданные KazNEB для QazRead", "status": "ready"}, {"key": "qazread_library_import", "title": "Загрузка библиотечных данных Koha для QazRead", "status": "ready"}, {"key": "qazread_curated_corpus", "title": "Кураторский корпус QazRead", "status": "ready"}], "structuredMetrics": {"structuredSources": 3, "structuredCatalogItems": 50, "structuredRightsRecords": 49}, "catalogSources": [{"label": "karlib.event.shyragyn club 2026", "value": "2", "note": "источник каталога"}, {"label": "ONIX-импорт издательских метаданных", "value": "2", "note": "структурированная издательская выгрузка"}, {"label": "csl.institution profile", "value": "1", "note": "источник каталога"}, {"label": "karlib.institution profile", "value": "1", "note": "источник каталога"}, {"label": "KazNEB и Adebiportal: «Қара сөздер»", "value": "1", "note": "публичная каталожная запись"}, {"label": "KazNEB: «Абай жолы»", "value": "1", "note": "публичная каталожная запись"}, {"label": "Открытый каталог", "value": "1", "note": "публичная каталожная запись"}, {"label": "Открытый каталог", "value": "1", "note": "публичная каталожная запись"}, {"label": "kazneb.koha.1110990", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1163164", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.132489", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1518239", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1519008", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1519009", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "kazneb.koha.1519010", "value": "1", "note": "структурированная библиотечная выгрузка"}, {"label": "Открытый каталог", "value": "1", "note": "публичная каталожная запись"}, {"label": "KazNEB: «Көшпенділер»", "value": "1", "note": "публичная каталожная запись"}, {"label": "KazNEB: «Менің атым Қожа»", "value": "1", "note": "публичная каталожная запись"}, {"label": "KazNEB: «Қан мен тер»", "value": "1", "note": "публичная каталожная запись"}, {"label": "nabrk.institution profile", "value": "1", "note": "источник каталога"}, {"label": "nlrk.institution profile", "value": "1", "note": "источник каталога"}, {"label": "Поиск по открытому книжному каталогу", "value": "1", "note": "обновляемый публичный источник"}, {"label": "pushkinlibrary.institution profile", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author abai 001", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author auezov 002", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author esenberlin 003", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author mukanov 008", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author mustafin 007", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author nurpeisov 005", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author sokpakbaev 004", "value": "1", "note": "источник каталога"}, {"label": "qazread.author profile.author zhumabayev 006", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event abai audio 003", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event batyr bayan audio 007", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event catalog day 008", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event family 001", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event kokserek school 006", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event rights clinic 005", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.event summer 002", "value": "1", "note": "источник каталога"}, {"label": "qazread.scenario.qara sozder bilingual", "value": "1", "note": "источник каталога"}, {"label": "Сценарий проверки прав QazRead", "value": "1", "note": "рабочий сценарий продукта"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Кураторский корпус QazRead", "value": "1", "note": "кураторская карточка казахстанского корпуса"}, {"label": "Koha-импорт библиотеки QazRead", "value": "1", "note": "структурированная библиотечная выгрузка"}], "liveSource": {"provider": "openlibrary_search", "status": "live"}}, "governance": {"accessRequests": {"pending": 1, "approved": 1, "declined": 0, "total": 2}, "accessGrants": {"active": 1, "revoked": 0, "expired": 0, "total": 1}, "secureRoomActivity": {"total": 3, "packageViews": 1, "assetDownloads": 1, "bundleDownloads": 1, "grantAccess": 2, "roleAccess": 1}, "eventsVisibility": "protected_observatory_only"}, "designSystem": {"name": "AV DS", "version": "4.0.0", "contract": "avds4.qazread.surface.v1", "mode": "shared_tokens_local_composition"}, "qazstack": {"version": "1.43.0", "adoptionMode": "versioned_contracts_with_local_domain_adapters"}, "ecosystemHandoff": {"provides": [{"target": "qazstack", "contract": "qazstack.qazread.export.v1", "direction": "qazread_to_qazstack", "payloads": ["product identity", "canonical domain and route manifest", "public catalog metrics and export links", "public-safe provenance aggregates", "aggregate governance totals", "runtime health envelope", "reusable primitive catalog", "source, cover and translation quality contracts"], "endpoint": "/api/v1/platform/export", "privacy": "public_safe_aggregate"}, {"target": "qazstack", "contract": "qazstack.lifecycle.events.v1", "direction": "qazread_to_qazstack", "payloads": ["normalized lifecycle events", "surface names", "timestamps", "compact event titles"], "endpoint": "/api/v1/platform/events", "privacy": "protected_control_plane"}, {"target": "avds4", "contract": "avds4.qazread.surface.v1", "direction": "qazread_to_avds4", "payloads": ["surface inventory", "reader cards", "metric cards", "badges", "empty states", "footer shell"], "endpoint": "/portfolio", "privacy": "public_ui_inventory"}], "consumes": [{"source": "qazstack", "contract": "qazstack.product.registry.v1", "direction": "qazstack_to_qazread", "payloads": ["product registry status", "shared auth handoff metadata", "platform readiness links", "cross-product navigation policy"], "mode": "read_only_configuration"}, {"source": "qazstack", "contract": "qazstack.monitor.DataQualityObservation.v1", "direction": "qazstack_to_qazread", "payloads": ["source freshness", "required-field completeness", "degradation reasons"], "mode": "read_only_quality_adapter"}, {"source": "qazstack", "contract": "qazstack-export-provenance-v1", "direction": "qazstack_to_qazread", "payloads": ["snapshot identity", "field schema", "checksum", "evidence references"], "mode": "read_only_export_sidecar"}, {"source": "qazstack", "contract": "qazstack.governance.ConsumerHealth.v1", "direction": "qazstack_to_qazread", "payloads": ["installation evidence", "test evidence", "runtime proof"], "mode": "read_only_adoption_status"}, {"source": "qazstack", "contract": "qazstack-reviewed-activity-evidence-v1", "direction": "qazstack_to_qazread", "payloads": ["activity identity", "review state and timestamps", "opaque evidence references"], "mode": "protected_activity_adapter"}, {"source": "qazstack", "contract": "qazstack-rights-clearance-v1", "direction": "qazstack_to_qazread", "payloads": ["requested and permitted uses", "evidence-bound decision", "expiry"], "mode": "protected_rights_adapter"}, {"source": "qazstack", "contract": "qazstack-access-grant-v1", "direction": "qazstack_to_qazread", "payloads": ["opaque subject and resource references", "scopes and expiry", "revocation evidence"], "mode": "protected_access_adapter"}, {"source": "avds4", "contract": "avds4.tokens.v1", "direction": "avds4_to_qazread", "payloads": ["spacing scale", "card radius", "type scale", "badge and button states", "responsive shell constraints"], "mode": "css_foundation_and_component_contract"}, {"source": "qazcompute", "contract": "qazread.qazcompute.preview.v1", "direction": "qazcompute_to_qazread", "payloads": ["language", "ner", "sentiment", "summary"], "mode": "preview_only_no_writeback"}, {"source": "qazpipe", "contract": "qazpipe.source-contracts.v1", "direction": "qazpipe_to_qazread", "payloads": ["source identity", "source type", "freshness status", "license policy", "public item counts"], "mode": "read_only_source_contract"}, {"source": "qazlake", "contract": "qazlake.media-evidence.v1", "direction": "qazlake_to_qazread", "payloads": ["cover evidence", "source URL", "license note", "fallback reason"], "mode": "read_only_evidence_contract"}, {"source": "qmt", "contract": "qmt.translation-diagnostics.v1", "direction": "qmt_to_qazread", "payloads": ["translation status", "language mismatch flags", "number and date checks", "glossary drift"], "mode": "batch_quality_gate"}], "rules": ["QazRead owns reader-facing routes and domain copy.", "QazStack consumes public-safe registry data and must not duplicate QazRead UI logic.", "AV DS 4 supplies shared visual primitives; QazRead keeps product-specific composition.", "QazCompute output remains review-only until a separate mutation contract is approved."]}, "reusablePrimitives": [{"id": "qazread.catalog-record-card", "contract": "qazread.primitive.catalog-record-card.v1", "surface": "portal,index,portfolio", "publicSafe": true, "owner": "qazread"}, {"id": "qazread.source-provenance", "contract": "qazpipe.source-contracts.v1", "surface": "portal,index,platform-export", "publicSafe": true, "owner": "qazread"}, {"id": "qazread.catalog-identity-provenance", "contract": "qazread.record-identity-provenance.v1", "surface": "index,public-catalog,opds,platform-export", "publicSafe": true, "owner": "qazread"}, {"id": "qazread.edition-holdings", "contract": "qazread.edition-holdings.v1", "surface": "index,public-catalog,availability,opds,platform-export", "publicSafe": true, "owner": "qazread"}, {"id": "qazread.access-state", "contract": "qazread.primitive.access-state.v1", "surface": "portal,challenge,portfolio", "publicSafe": false, "owner": "qazread"}, {"id": "qazread.reading-route", "contract": "qazread.primitive.reading-route.v1", "surface": "portal,portfolio", "publicSafe": true, "owner": "qazread"}, {"id": "qazread.reading-evidence", "contract": "qazstack-reviewed-activity-evidence-v1", "surface": "challenge,observatory", "publicSafe": false, "owner": "qazread"}, {"id": "qazread.rights-clearance", "contract": "qazstack-rights-clearance-v1", "surface": "publish,observatory", "publicSafe": false, "owner": "qazread"}, {"id": "qazread.secure-room-grant", "contract": "qazstack-access-grant-v1", "surface": "portfolio,observatory", "publicSafe": false, "owner": "qazread"}, {"id": "qazread.cover-evidence", "contract": "qazlake.media-evidence.v1", "surface": "portal,index,public-catalog", "publicSafe": true, "owner": "qazread"}, {"id": "qazread.public-export", "contract": "qazstack.qazread.export.v1", "surface": "platform-export,machine-export", "publicSafe": true, "owner": "qazread"}, {"id": "qazread.lite-card", "contract": "avds4.qazread.lite-card.v1", "surface": "portal,index", "publicSafe": true, "owner": "qazread"}], "qualityContracts": {"dataQuality": {"contract": "qazstack.monitor.DataQualityObservation.v1", "requiredFields": ["source_id", "observed_at", "source_updated_at", "stale_after_seconds", "completeness", "reasons"], "publicRule": "Unknown freshness remains unknown until the primary source supplies an update timestamp."}, "exportProvenance": {"contract": "qazstack-export-provenance-v1", "requiredFields": ["source_snapshot_id", "generated_at", "field_schema", "checksum", "evidence_refs"], "publicRule": "Every published catalog snapshot carries a deterministic checksum and evidence references."}, "consumerHealth": {"contract": "qazstack.governance.ConsumerHealth.v1", "requiredFields": ["project_id", "applicability", "installed", "tested", "runtime_proven", "status"], "publicRule": "Installed, tested and runtime-proven are reported as separate evidence stages."}, "sourceProvenance": {"contract": "qazpipe.source-contracts.v1", "requiredFields": ["source_id", "source_type", "access_mode", "license_policy", "freshness_status", "public_item_count"], "publicRule": "Expose source class, status and counts; keep private access notes out of public exports."}, "catalogIdentityProvenance": {"contract": "qazread.record-identity-provenance.v1", "requiredFields": ["catalogIdentity.entityId", "catalogIdentity.entityType", "catalogIdentity.relationStatus", "provenance.sourceKey", "provenance.sourceType", "provenance.attributionStatus", "provenance.freshnessStatus"], "publicRule": "Expose work/edition resolution and source freshness honestly; absent identifiers and timestamps remain empty or unknown."}, "editionHoldings": {"contract": "qazread.edition-holdings.v1", "requiredFields": ["edition.contract", "edition.status", "edition.editionId", "edition.sourceRecordId", "holdings.contract", "holdings.status", "holdings.observedAt", "holdings.locations"], "publicRule": "Only source-backed edition records and source-supplied branch statuses are public; unresolved identity and unavailable holdings remain explicit."}, "rightsStatement": {"contract": "qazread.rights-statement.v1", "requiredFields": ["rightsStatement.contract", "rightsStatement.status", "rightsStatement.uri", "rightsStatement.label", "rightsStatement.sourceKey", "rightsStatement.sourceType"], "publicRule": "Only source-supplied or reviewed rights URI values are public; prose never becomes a legal URI automatically."}, "coverEvidence": {"contract": "qazlake.media-evidence.v1", "statuses": ["unverified", "operator_reviewed", "source_verified"], "publicRule": "Show covers only with attribution, source URL or explicit fallback reason."}, "translationDiagnostics": {"contract": "qmt.translation-diagnostics.v1", "checks": ["target_not_kazakh", "target_not_russian", "source_copy_repeated", "number_date_mismatch", "glossary_drift"], "publicRule": "Do not present generated translations as polished copy before diagnostics pass."}}, "sharedDomainContracts": {"reviewedActivity": {"contract": "qazstack-reviewed-activity-evidence-v1", "qazstackVersion": "1.43.0", "localBoundary": "Reading rules, participant identity, scoring and moderation remain in QazRead.", "publicSafe": false}, "rightsClearance": {"contract": "qazstack-rights-clearance-v1", "qazstackVersion": "1.43.0", "localBoundary": "Rights-holder records, legal interpretation and publication policy remain in QazRead.", "publicSafe": false}, "accessGrant": {"contract": "qazstack-access-grant-v1", "qazstackVersion": "1.43.0", "localBoundary": "Contact details, invitation tokens and protected files remain in QazRead.", "publicSafe": false}}, "dataQuality": {"contract": "qazstack.monitor.DataQualityObservation.v1", "summary": {"total": 11, "fresh": 0, "degraded": 0, "stale": 0, "unknown": 11}, "observations": [{"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "csl", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 1, "source_label": "Алматы · library.kz"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "karlib", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 3, "source_label": "Н.В. Гоголь атындағы Қарағанды облыстық әмбебап ғылыми кітапханасы"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "kazneb", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 15, "source_label": "KazNEB / Adebiportal"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "nabrk", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 1, "source_label": "Астана"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "nlrk", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 1, "source_label": "Алматы · Abai Ave. 14"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "openlibrary", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 1, "source_label": "Абай Кунанбаев · 2018"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "pushkinlibrary", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 1, "source_label": "Өскемен"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "qazread", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 17, "source_label": "Абай Құнанбайұлы · двуязычный маршрут"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "qazread_curated_corpus", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 40, "source_label": "Кураторский корпус QazRead"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "qazread_library_import", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 1, "source_label": "Выгрузка Koha · доступность филиала"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "qazread_onix_import", "observed_at": "2026-06-27T05:51:17.825414+00:00", "source_updated_at": null, "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete", "source_updated_at_missing"], "age_seconds": null, "status": "unknown", "record_count": 2, "source_label": "Қазақстандық Ұлттық Электронды Кітапхана"}], "note": "Свежесть не считается подтверждённой без времени обновления первичного источника."}, "exportProvenance": {"schema_version": "qazstack-export-provenance-v1", "source_snapshot_id": "qazread.catalog:a91f501", "generated_at": "2026-06-27T05:51:17.825414+00:00", "field_schema": ["id", "type", "title", "sourceKey", "sourceType", "partnerTitle", "rightsMode", "accessMode"], "checksum": "sha256:2e1156f9e40a261544378b09065e2b2391e71e79d13704375aef01aaaed080cf", "evidence_refs": ["https://qread.pro/api/v1/public/catalog", "https://qread.pro/api/v1/health"]}, "consumerHealth": {"contract": "qazstack.governance.ConsumerHealth.v1", "project_id": "qazread", "applicability": "required", "installed": true, "tested": true, "runtime_proven": true, "status": "healthy", "owner": "qdev", "evidence_refs": ["/api/v1/platform/export", "/api/v1/health", "smoke_platform_integration_contract.py"], "note": "Контракт установлен, проверен и подтверждён рабочим выпуском."}, "compute": {"contract": "qazread.qazcompute.preview.v1", "mode": "preview_only", "enabled": false, "configured": false, "endpoint": "/api/v1/process", "allowedTasks": ["language", "ner", "sentiment", "summary"], "writeBack": false, "note": "Результат не меняет каталог и требует явного review в QazRead."}, "endpoints": {"publicCatalog": "/api/v1/public/catalog", "publicCatalogOpds": "/api/v1/public/catalog.opds.json", "publicExport": "/api/v1/platform/export", "protectedEvents": "/api/v1/platform/events", "protectedComputePreview": "/api/v1/platform/compute/preview"}, "caveats": ["qread.pro является единственным публичным доменом QazRead.", "Production runtime использует PostgreSQL; локальный preview сохраняет SQLite и preview_state.json для проверок.", "QazCompute preview выключен по умолчанию и не записывает результат в каталог."]}