{"schema": "qazstack.qazread.export.v1", "generatedAt": "2026-09-25T14:39:12.245630+00:00", "product": {"id": "qazread", "name": "QazRead", "profile": "public-web", "canonicalDomain": "qread.pro", "canonicalDomainStatus": "live", "currentLiveDomain": "qread.pro", "lifecycle": "beta"}, "runtime": {"contractVersion": "qazread.preview.v0.40", "environment": "live_runtime", "release": {"id": "codex/qread-portal-state-truth-20260925@674ae68", "shortSha": "674ae68", "fullSha": "674ae6860c71c498666b108bf15d5ed00d85e3dc", "branch": "codex/qread-portal-state-truth-20260925", "deployedAt": "2026-09-25T11:04:38Z", "source": "release_file", "reportedAt": "2026-09-25T14:39:12.244306+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": 0, "sentDeliveries": 10, "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": 130, "publicReadyItems": 130, "metrics": [{"label": "Каталожные записи", "value": "130", "note": "открыты в форматах JSON, CSV, NDJSON и OPDS"}, {"label": "Открытые карточки", "value": "130", "note": "описание открыто; доступ для чтения и фрагменты считаются отдельно"}, {"label": "Доступно для чтения", "value": "11", "note": "есть подтверждённый доступ для чтения"}, {"label": "Публичный фрагмент", "value": "0", "note": "записи с открытым фрагментом или выдержкой"}, {"label": "Ограниченный доступ", "value": "0", "note": "доступны через библиотеку или организацию"}], "typeBreakdown": [{"key": "books", "label": "Книги", "value": "90", "note": "тип записи в открытом каталоге"}, {"key": "authors", "label": "Авторы", "value": "24", "note": "тип записи в открытом каталоге"}, {"key": "libraries", "label": "Библиотеки", "value": "7", "note": "тип записи в открытом каталоге"}, {"key": "events", "label": "События", "value": "9", "note": "тип записи в открытом каталоге"}], "deliveryBreakdown": [{"label": "Каталожное описание", "value": "119", "note": "режим выдачи в открытом каталоге"}, {"label": "Публичный фрагмент", "value": "0", "note": "режим выдачи в открытом каталоге"}, {"label": "Доступно для чтения", "value": "11", "note": "режим выдачи в открытом каталоге"}, {"label": "Только для институции", "value": "0", "note": "режим выдачи в открытом каталоге"}], "sourceBreakdown": [{"label": "Кураторский корпус QazRead", "value": "40", "note": "тематическая карточка казахстанского корпуса"}, {"label": "Каталог авторов Adebiportal", "value": "16", "note": "каталог авторов с атрибутивными ссылками"}, {"label": "Wikisource", "value": "11", "note": "открытый текстовый источник"}, {"label": "Национальная академическая библиотека РК", "value": "10", "note": "обновляемый каталог библиотеки"}, {"label": "Электронный каталог Костанайской ОУНБ", "value": "10", "note": "обновляемый каталог библиотеки"}, {"label": "Библиотечная выгрузка Koha", "value": "8", "note": "структурированная библиотечная выгрузка"}, {"label": "Карточки авторов QazRead", "value": "8", "note": "профиль автора и связи с произведениями"}, {"label": "Сценарии чтения QazRead", "value": "8", "note": "сценарий чтения продукта"}, {"label": "KazNEB", "value": "6", "note": "открытая каталожная запись"}, {"label": "KazNEB и Adebiportal", "value": "2", "note": "открытая каталожная запись"}, {"label": "Издательская выгрузка ONIX", "value": "2", "note": "структурированная издательская выгрузка"}, {"label": "Карагандинская областная библиотека: события", "value": "2", "note": "библиотечный контекст события"}, {"label": "Библиотека имени А. С. Пушкина Восточно-Казахстанской области", "value": "1", "note": "профиль библиотеки или учреждения"}, {"label": "Карагандинская областная библиотека", "value": "1", "note": "профиль библиотеки или учреждения"}, {"label": "Национальная академическая библиотека", "value": "1", "note": "профиль библиотеки или учреждения"}, {"label": "Национальная библиотека Республики Казахстан", "value": "1", "note": "профиль библиотеки или учреждения"}, {"label": "Открытые данные акимата области Абай", "value": "1", "note": "официальные открытые сведения об учреждении"}, {"label": "Проверка прав QazRead", "value": "1", "note": "сценарий чтения продукта"}, {"label": "Центральная научная библиотека", "value": "1", "note": "профиль библиотеки или учреждения"}], "facets": [{"key": "type", "label": "Тип записи", "options": [{"key": "books", "label": "Книги", "count": 90}, {"key": "authors", "label": "Авторы", "count": 24}, {"key": "events", "label": "События", "count": 9}, {"key": "libraries", "label": "Библиотеки", "count": 7}]}, {"key": "sourceType", "label": "Тип источника", "options": [{"key": "curated_metadata", "label": "тематическая карточка QazRead", "count": 40}, {"key": "live_public_catalog", "label": "обновляемый библиотечный каталог", "count": 20}, {"key": "official_author_index", "label": "каталог авторов", "count": 16}, {"key": "live_open_text", "label": "открытый текстовый источник", "count": 11}, {"key": "author_profile", "label": "карточка автора", "count": 8}, {"key": "public_catalog", "label": "открытый каталог", "count": 8}, {"key": "qazread_scenario", "label": "читательская программа", "count": 8}, {"key": "structured_koha", "label": "библиотечная выгрузка", "count": 8}, {"key": "institution_profile", "label": "профиль библиотеки", "count": 5}, {"key": "public_event_context", "label": "описание события", "count": 2}, {"key": "structured_onix", "label": "издательская выгрузка ONIX", "count": 2}, {"key": "official_open_data", "label": "официальные открытые данные", "count": 1}, {"key": "workflow_scenario", "label": "сценарий чтения", "count": 1}]}, {"key": "deliveryKey", "label": "Режим доставки", "options": [{"key": "catalog", "label": "Каталожное описание", "count": 119}, {"key": "read_online", "label": "Доступно для чтения", "count": 11}]}, {"key": "relationStatus", "label": "Уровень идентичности", "options": [{"key": "work_only", "label": "Только произведение", "count": 61}, {"key": "not_applicable", "label": "Не библиографическая запись", "count": 40}, {"key": "unresolved", "label": "Идентичность требует сверки", "count": 20}, {"key": "edition_linked", "label": "Произведение и издание", "count": 9}]}, {"key": "freshnessStatus", "label": "Свежесть источника", "options": [{"key": "observed", "label": "Время источника указано", "count": 79}, {"key": "unknown", "label": "Время источника неизвестно", "count": 51}]}, {"key": "enrichmentTag", "label": "Тематический сигнал", "options": [{"key": "poetry-voice", "label": "Поэзия и голос", "count": 3, "labelKk": "Поэзия және дауыс"}, {"key": "early-modern-prose", "label": "Проза начала XX века", "count": 2, "labelKk": "XX ғасыр басындағы проза"}, {"key": "freedom-education", "label": "Свобода и образование", "count": 2, "labelKk": "Еркіндік және білім"}, {"key": "historical-prose", "label": "Историческая проза", "count": 2, "labelKk": "Тарихи проза"}, {"key": "philosophy-ethics", "label": "Философия и этика", "count": 2, "labelKk": "Философия және этика"}, {"key": "school-route", "label": "Школьный маршрут", "count": 2, "labelKk": "Мектеп бағыты"}, {"key": "social-prose", "label": "Социальная проза", "count": 2, "labelKk": "Әлеуметтік проза"}, {"key": "children-reading", "label": "Детское чтение", "count": 1, "labelKk": "Балалар оқуы"}, {"key": "civic-thought", "label": "Гражданская мысль", "count": 1, "labelKk": "Азаматтық ой"}, {"key": "enlightenment-poetry", "label": "Просветительская поэзия", "count": 1, "labelKk": "Ағартушылық поэзия"}, {"key": "historical-memory", "label": "Историческая память", "count": 1, "labelKk": "Тарихи жады"}, {"key": "industrial-history", "label": "Индустриальная история", "count": 1, "labelKk": "Индустриялық тарих"}, {"key": "intellectual-tradition", "label": "Интеллектуальная традиция", "count": 1, "labelKk": "Зияткерлік дәстүр"}, {"key": "kazakh-classics", "label": "Казахская классика", "count": 1, "labelKk": "Қазақ классикасы"}, {"key": "short-reading", "label": "Короткие тексты", "count": 1, "labelKk": "Қысқа мәтіндер"}, {"key": "statehood-memory", "label": "Государственность и память", "count": 1, "labelKk": "Мемлекеттілік және жады"}], "multiValued": true, "coverageCount": 12, "unmatchedCount": 118}], "exports": [{"key": "json", "title": "Файл каталога", "href": "/api/v1/public/catalog", "note": "Каталог в формате JSON для поиска, встраивания и внешней проверки."}, {"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": "Стандартный каталог для приложений чтения, библиотечных систем и внешних каталогов."}], "catalogEnrichment": {"contract": "qazread.catalog-enrichment.v1", "observedAt": "2026-08-05T00:00:00+05:00", "records": 130, "enrichedRecords": 40, "fieldCoverage": {"language": 40, "audience": 40, "period": 40, "discoveryTags": 12}, "discoveryTagCount": 24, "statusBreakdown": {"derived": 28, "candidate": 12}, "decisionBoundary": {"automaticAuthorityMerge": false, "automaticRankingImpact": false, "rightsClaimsAdded": false, "fullTextClaimAdded": false, "ownerReviewRequired": true}, "note": "Кураторское обогащение помогает discovery и не подтверждает издание, фонд, права или цифровую выдачу."}, "officialSourceEvidence": {"contract": "qazread.official-source-evidence.v1", "sourceCount": 2, "sources": [{"kind": "official_library_registry", "key": "egov_open_data.culture_institutions_v5", "title": "729. Перечень государственных учреждений культуры в разрезе регионов", "titleKk": "729. Мемлекеттік мәдениет мекемелерінің тізбесі, өңірлер бөлінісінде", "owner": "Акимат области Абай", "ownerKk": "Абай облысының әкімдігі", "url": "https://data.egov.kz/datasets/view?index=729_perechen_gosudarstvennyh1", "version": "v5", "observedAt": "2026-08-09T06:45:00+00:00", "sourceUpdatedAt": "2025-12-26T06:32:13.532Z", "payloadSha256": "a58d1a8dae29ce7cc9fc90f0ac453d40ad25c88bd8c0a808a708498c378be338", "rightsMode": "official_open_data_metadata", "recordCount": 19}, {"kind": "official_collection_membership", "key": "bookfund.children_catalog", "title": "Открытый перечень книг в системе «Балалар кітапханасы»", "titleKk": "«Балалар кітапханасы» жүйесіндегі кітаптардың ашық тізімі", "owner": "Министерство просвещения Республики Казахстан", "ownerKk": "Қазақстан Республикасы Оқу-ағарту министрлігі", "url": "https://edu.bookfund.gov.kz/book_public", "version": "public-listing-2026-08-09", "observedAt": "2026-08-09T06:45:00+00:00", "sourceUpdatedAt": "", "payloadSha256": "faed75232c82202ae7ba11331f104dfb5c8bf1766d5f8f44e4f323d1bfd28bb3", "rightsMode": "metadata_reference_only", "recordCount": 1573}], "officialLibraryRecords": 1, "reviewedWorkMemberships": 6, "selectedSourceRecords": 10, "fullSourceRecords": 1592, "notRepublishedBookfundRecords": 1563, "decisionBoundary": {"metadataOnly": true, "fullCatalogRepublished": false, "coversCopied": false, "annotationsCopied": false, "automaticAuthorityMerge": false, "editionInferred": false, "holdingInferred": false, "rightsInferred": false, "availabilityInferred": false, "sourceLinkRequired": true}}}, "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"}, {"key": "egov_open_data.culture_institutions_v5", "title": "729. Перечень государственных учреждений культуры в разрезе регионов", "status": "source_backed_public_snapshot"}, {"key": "adebiportal.author_index", "title": "Adebiportal - каталог авторов", "status": "ready"}], "structuredMetrics": {"structuredSources": 5, "structuredCatalogItems": 67, "structuredRightsRecords": 49, "catalogEnrichmentRecords": 40, "readerEnrichmentRecords": 40, "officialSourceCount": 2, "officialLibraryRecords": 1, "officialCollectionMemberships": 6, "officialSelectedSourceRecords": 10, "authorAuthorityRecords": 16}, "catalogSources": [{"label": "Кураторский корпус QazRead", "value": "40", "note": "тематическая карточка казахстанского корпуса"}, {"label": "Каталог авторов Adebiportal", "value": "16", "note": "каталог авторов с атрибутивными ссылками"}, {"label": "Wikisource", "value": "11", "note": "открытый текстовый источник"}, {"label": "Национальная академическая библиотека РК", "value": "10", "note": "обновляемый каталог библиотеки"}, {"label": "Электронный каталог Костанайской ОУНБ", "value": "10", "note": "обновляемый каталог библиотеки"}, {"label": "Библиотечная выгрузка Koha", "value": "8", "note": "структурированная библиотечная выгрузка"}, {"label": "Карточки авторов QazRead", "value": "8", "note": "профиль автора и связи с произведениями"}, {"label": "Сценарии чтения QazRead", "value": "8", "note": "сценарий чтения продукта"}, {"label": "KazNEB", "value": "6", "note": "открытая каталожная запись"}, {"label": "KazNEB и Adebiportal", "value": "2", "note": "открытая каталожная запись"}, {"label": "Издательская выгрузка ONIX", "value": "2", "note": "структурированная издательская выгрузка"}, {"label": "Карагандинская областная библиотека: события", "value": "2", "note": "библиотечный контекст события"}, {"label": "Библиотека имени А. С. Пушкина Восточно-Казахстанской области", "value": "1", "note": "профиль библиотеки или учреждения"}, {"label": "Карагандинская областная библиотека", "value": "1", "note": "профиль библиотеки или учреждения"}, {"label": "Национальная академическая библиотека", "value": "1", "note": "профиль библиотеки или учреждения"}, {"label": "Национальная библиотека Республики Казахстан", "value": "1", "note": "профиль библиотеки или учреждения"}, {"label": "Открытые данные акимата области Абай", "value": "1", "note": "официальные открытые сведения об учреждении"}, {"label": "Проверка прав QazRead", "value": "1", "note": "сценарий чтения продукта"}, {"label": "Центральная научная библиотека", "value": "1", "note": "профиль библиотеки или учреждения"}], "liveSource": {"provider": "multi_public_sources", "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.8.0", "designCapabilityVersion": "4.8.0", "contract": "avds4.qazread.surface.v1", "mode": "shared_tokens_local_composition", "source": {"publicSurface": "https://avds.digital/", "release": "https://avds.digital/release.json", "uiContract": "https://avds.digital/.well-known/avds-ui-contract.json", "sourcePackage": {"name": "@sgeo/ui-kit", "version": "4.8.0"}, "upstreamRelease": {"version": "4.8.0", "sourceSha": "41908999419057a9c18d384f1fbe31c0baa7ce85", "buildId": "419089994190", "builtAt": "2026-08-25T19:27:08.048Z", "artifactDigest": {"algorithm": "sha256", "scope": "showcase-dist-excluding-release-metadata", "sha256": "11de37fac6932582a575a26c5996faad743d59f346ddaac58896767199501ee7", "fileCount": 893}}}, "responsiveRegimes": ["compact", "tablet", "desktop", "wide", "expanded", "canvas"], "coverage": {"contract": "avds4.qazread.coverage.v1", "basis": "consumer_adoption_checkpoints", "coveredSurfaces": 32, "totalSurfaces": 32, "surfacePercent": 100, "adoptedComponents": ["DataTable", "FilterChipRow", "SourceHealthBadge", "ServiceStatusCard", "ProvenanceCard", "ProvenanceTable", "ProvenanceFoot", "ComparisonBarRow"], "missingComponents": [], "responsiveRegimes": ["compact", "tablet", "desktop", "wide", "expanded", "canvas"], "coveredCheckpoints": 46, "totalCheckpoints": 46, "percent": 100}}, "qazstack": {"version": "1.43.0", "primitives": ["auth-and-admin", "content-api", "core-foundation", "databus-and-bus", "governance-and-audit", "monitoring-pipeline", "observability-and-ui", "pagination-and-listing", "reports-and-export", "reviewed-activity-evidence", "revocable-access-grants", "rights-clearance", "tasking-and-resilience"], "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", "embedding vectors for protected semantic shadow", "protected OCR result for source-backed scan review"], "mode": "preview_only_no_writeback", "semanticShadowContract": "qazread.qazcompute.semantic-shadow.v1", "ocrPreviewContract": "qazread.qazcompute.ocr-preview.v1"}, {"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": "qazstack-data-record-v1", "direction": "qazlake_to_qazread", "payloads": ["immutable source record identity", "version and content digest", "quality, rights and access metadata", "allowed project and scope"], "mode": "active_read_only_metadata_no_full_text_no_publication"}, {"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": "qazstack-media-artifact-v1", "surface": "portal,index,public-catalog", "publicSafe": true, "owner": "qazread", "runtime": "contract_only_until_rights_review"}, {"id": "qazread.qazlake-data-record-pilot", "contract": "qazstack-data-record-v1", "surface": "platform-export,observatory", "publicSafe": true, "owner": "qazread", "runtime": "active_read_only_metadata_no_full_text_no_publication"}, {"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."}, "freshnessLedger": {"contract": "avds4.freshness-ledger.v1", "requiredFields": ["observedAt", "items.key", "items.label", "items.value", "items.state", "items.detail"], "publicRule": "Source, receipt, catalog snapshot and release dates are independent; missing dates remain unknown."}, "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": "qazstack-media-artifact-v1", "statuses": ["unverified", "operator_reviewed", "source_verified"], "publicRule": "Show media only with attribution, source URL and a rights decision; the current catalog fallback is not an external QazLake artifact."}, "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": 14, "fresh": 0, "degraded": 1, "stale": 6, "unknown": 7}, "observations": [{"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "adebiportal", "observed_at": "2026-09-25T14:39:12.245630+00:00", "source_updated_at": "2026-08-14T19:00:00+00:00", "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete"], "age_seconds": 3613152.24563, "status": "stale", "record_count": 16, "source_label": "Поэт, писатель и драматург"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "csl", "observed_at": "2026-09-25T14:39:12.245630+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": "egov_open_data", "observed_at": "2026-09-25T14:39:12.245630+00:00", "source_updated_at": "2025-12-26T06:32:13.532000+00:00", "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete"], "age_seconds": 23616418.71363, "status": "stale", "record_count": 1, "source_label": "город Семей · Абайская область"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "karlib", "observed_at": "2026-09-25T14:39:12.245630+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-09-25T14:39:12.245630+00:00", "source_updated_at": "2026-06-10T05:30:00+00:00", "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete"], "age_seconds": 9277752.24563, "status": "stale", "record_count": 15, "source_label": "Қазақстан Республикасының Ұлттық кітапханасы"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "kstounb", "observed_at": "2026-09-25T14:39:12.245630+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": 10, "source_label": "Абай · 2002"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "nabrk", "observed_at": "2026-09-25T14:39:12.245630+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": 11, "source_label": "ЖҰРТБАЙ ТҰРСЫН ҚҰДАКЕЛДІҰЛЫ · 2004"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "nlrk", "observed_at": "2026-09-25T14:39:12.245630+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": "pushkinlibrary", "observed_at": "2026-09-25T14:39:12.245630+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-09-25T14:39:12.245630+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-09-25T14:39:12.245630+00:00", "source_updated_at": "2026-07-29T05:35:00+00:00", "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete"], "age_seconds": 5043852.24563, "status": "stale", "record_count": 40, "source_label": "Кураторский корпус QazRead"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "qazread_library_import", "observed_at": "2026-09-25T14:39:12.245630+00:00", "source_updated_at": "2026-06-10T05:30:00+00:00", "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete"], "age_seconds": 9277752.24563, "status": "stale", "record_count": 1, "source_label": "Выгрузка Koha · доступность филиала"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "qazread_onix_import", "observed_at": "2026-09-25T14:39:12.245630+00:00", "source_updated_at": "2026-06-10T05:30:00+00:00", "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete"], "age_seconds": 9277752.24563, "status": "stale", "record_count": 2, "source_label": "Қазақстандық Ұлттық Электронды Кітапхана"}, {"contract": "qazstack.monitor.DataQualityObservation.v1", "source_id": "wikisource", "observed_at": "2026-09-25T14:39:12.245630+00:00", "source_updated_at": "2026-09-18T04:42:34+00:00", "stale_after_seconds": 2592000, "completeness": 0.75, "reasons": ["required_fields_incomplete"], "age_seconds": 640598.24563, "status": "degraded", "record_count": 11, "source_label": "Абай Құнанбайұлы"}], "note": "Свежесть не считается подтверждённой без времени обновления первичного источника."}, "freshnessLedger": {"contract": "avds4.freshness-ledger.v1", "observedAt": "2026-09-25T14:39:12.245630+00:00", "items": [{"key": "source_updated", "label": "Первичный источник обновлён", "labelKk": "Бастапқы дереккөз жаңартылды", "value": "2026-09-18T04:42:34+00:00", "state": "aging", "ageSeconds": 640598.24563, "detail": "Максимальная дата обновления, которую прислали внешние записи.", "detailKk": "Сыртқы жазбалар берген ең кейінгі жаңарту күні.", "source": "catalog_records.sourceUpdatedAt|sourceRefreshedAt"}, {"key": "qazread_observed", "label": "QazRead получил данные", "labelKk": "QazRead деректерді алды", "value": "2026-09-25T14:39:12.245630+00:00", "state": "fresh", "ageSeconds": 0.0, "detail": "Время формирования текущего ответа QazRead.", "detailKk": "QazRead ағымдағы жауабын қалыптастырған уақыт.", "source": "qazread.runtime"}, {"key": "catalog_snapshot_generated", "label": "Снимок каталога сформирован", "labelKk": "Каталог көшірмесі жасалды", "value": "2026-09-25T09:02:26.115771+00:00", "state": "fresh", "ageSeconds": 20206.129859, "detail": "Время сборки или получения каталожного снимка.", "detailKk": "Каталог көшірмесін жинау немесе алу уақыты.", "source": "catalog_snapshot.receipt"}, {"key": "release_deployed", "label": "Релиз развёрнут", "labelKk": "Релиз орналастырылды", "value": "2026-09-25T11:04:38+00:00", "state": "fresh", "ageSeconds": 12874.24563, "detail": "Время, записанное в release receipt приложения.", "detailKk": "Қолданбаның релиз түбіртегінде жазылған уақыт.", "source": "qazread.release"}], "summary": {"total": 4, "fresh": 3, "aging": 1, "stale": 0, "unknown": 0}, "policy": {"freshWithinSeconds": 604800, "staleAfterSeconds": 2592000, "missingDateState": "unknown", "futureDateState": "unknown"}, "note": "Даты источника, получения, снимка каталога и релиза не заменяют друг друга.", "noteKk": "Дереккөз, алу, каталог көшірмесі және релиз күндері бірін-бірі алмастырмайды."}, "qazlakePilot": {"contract": "qazread.qazlake-data-record-pilot.v1", "sourceContract": "qazstack-data-record-v1", "consumerProject": "qazread", "status": "active_read_only_metadata", "accessMode": "read_only_metadata", "publicSwitch": false, "consumerGrant": {"project": "qazread", "profile": "qazread_public_metadata", "scopes": ["metadata", "provenance", "quality", "rights", "access"], "recordTypes": ["qazread.source.evidence"]}, "runtimeReceipt": {"profile": "qazread_public_metadata", "receivedAt": "2026-09-25T14:39:12Z", "acceptedRecordCount": 10, "recordsDigest": "sha256:5ba934d48ce5c421e5c7b99679ab77df7ad566a3e993e28c3f2cbfe9db803f1d", "bundleDigest": "sha256:12f222bec649a0358e4bc1bde5232e83019bdb0cc7883b4e357366b5fefa9b41", "fullTextRead": false, "publicRecordsPublished": false}, "allowedRecordTypes": ["qazread.book.metadata", "qazread.edition.metadata", "qazread.holding.metadata", "qazread.source.evidence"], "allowedScopes": ["metadata", "provenance", "quality", "rights", "access"], "prohibitedFields": ["payload.fullText", "payload.rawDocument", "payload.privateNotes", "credentials", "tokens", "requestorEmail"], "gates": ["owner_dataset_decision", "consumer_grant", "dry_run_batch_validation", "readback_digest_and_version_check", "rollback_receipt"], "note": "QazRead verifies an owner-scoped QazLake grant and reads only public source metadata. It does not import text or publish QazLake records."}, "exportProvenance": {"schema_version": "qazstack-export-provenance-v1", "source_snapshot_id": "qazread.catalog:674ae68", "generated_at": "2026-09-25T14:39:12.245630Z", "field_schema": ["id", "type", "title", "sourceKey", "sourceType", "partnerTitle", "rightsMode", "accessMode"], "checksum": "sha256:0f4584e7cc4a12b5b479729972585908222d484a59fe219eb673c9a7ccd8207a", "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, "authenticated": false, "endpoint": "/api/v1/process", "allowedTasks": ["language", "ner", "sentiment"], "authentication": "X-API-Key", "caller": "qazread", "writeBack": false, "semanticShadow": {"contract": "qazread.qazcompute.semantic-shadow.v1", "mode": "protected_preview_only", "endpoint": "/api/v1/embeddings", "inferenceOwner": "qazcompute", "modelSelection": "reported_by_qazcompute_or_remains_unverified", "publicRankingImpact": false, "writeBack": false}, "ocrPreview": {"contract": "qazread.qazcompute.ocr-preview.v1", "mode": "protected_preview_only", "endpoint": "/api/v1/vision/ocr", "inferenceOwner": "qazcompute", "sourceBackedScanRequired": true, "scanPersisted": false, "ocrTextPublic": false, "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 выключен по умолчанию и не записывает результат в каталог."]}