{"avds_source":{"design_capability_version":"4.5.1","package":"@sgeo/ui-kit","site":"https://avds.digital","source_revision":"1b9671a7fa6efc9ba52a10e169ed13aaf13f53ac","version":"4.6.0"},"component_families":[{"components":["AppShell","FilterChipRow","PillTabs","SearchField","Sheet"],"id":"navigation-filtering"},{"components":["DeadlineStatus","EntityCard","MediaFrame","PaginatedList","Skeleton","StatePanel","StatusBadge"],"id":"pet-discovery"},{"components":["DataFreshness","DataTable","MetricCard","ProvenanceCard","Progress","AssessmentSummary","ServiceStatusCard","WorkflowPath"],"id":"operations"},{"components":["FederatedSearchProgress","MediaGrid","MediaInspector","MediaResultCard","MediaSearchSurface","SourceHealthBadge"],"id":"media-ai"},{"components":["Field","FileDropzone","InlineAlert","Toast"],"id":"forms-feedback"}],"contract_id":"qpet-avds-ui-contract","coverage":{"basis":"verified_system_contract_criteria","categories":[{"criteria":[{"evidence":["docs/audit/QPET_ROUTE_INVENTORY_2026-08-04.md"],"id":"public-ledger","note":"Canonical public route inventory is checked in.","requirement":"Public route ledger","status":"verified"},{"evidence":["tests/test_route_inventory_contract.py"],"id":"route-tests","note":"Inventory drift is test-gated.","requirement":"Route inventory contract tests","status":"verified"},{"evidence":["tests/test_route_coverage_batch.py"],"id":"route-batch","note":"Representative server-rendered routes are exercised.","requirement":"Batch route rendering","status":"verified"},{"evidence":["scripts/production_smoke.py"],"id":"public-smoke","note":"Release acceptance includes public HTTP checks.","requirement":"Production route smoke","status":"verified"},{"evidence":["scripts/full_state_check.py"],"id":"full-state","note":"Public routes are checked with state markers.","requirement":"Route and state matrix","status":"verified"},{"evidence":["docs/qazstack/qazpet-language-surface-v1.json"],"id":"three-locales","note":"The public locale set is explicit.","requirement":"RU, KK and EN route surface","status":"verified"},{"evidence":["tests/test_domain_migration.py"],"id":"canonical-domain","note":"qaz.pet is enforced as the public origin.","requirement":"Canonical domain contract","status":"verified"},{"evidence":["templates/base.html"],"id":"public-shell","note":"The shared shell exposes adapter and version markers.","requirement":"AV DS root markers","status":"verified"},{"evidence":["tests/test_admin_ui_smoke.py"],"id":"admin-surface","note":"Protected system UI has a separate smoke contract.","requirement":"Operator surface contract","status":"verified"},{"evidence":["tests/test_ecosystem_contracts.py"],"id":"head-contract","note":"Discovery contracts are headable.","requirement":"Machine endpoints support HEAD","status":"verified"}],"gaps":[],"id":"routes","percent":100,"title":"Routes","total":10,"verified":10},{"criteria":[{"evidence":["static/css/qpet-tokens.css"],"id":"semantic-colors","note":"Product colors map to semantic roles.","requirement":"Colors and semantic roles","status":"verified"},{"evidence":["static/css/qpet-tokens.css","static/fonts/avds/avds-fonts.css"],"id":"typography","note":"Text families and local font faces are explicit.","requirement":"Typography tokens","status":"verified"},{"evidence":["static/css/style.css"],"id":"spacing","note":"Shared spacing variables and layout gaps exist.","requirement":"Spacing scale","status":"verified"},{"evidence":["static/css/style.css","static/css/qpet-visual-finish.css"],"id":"radii","note":"Small, base and large radii are defined.","requirement":"Radius scale","status":"verified"},{"evidence":["static/css/qpet-tokens.css"],"id":"shadows","note":"Three product elevation levels are defined.","requirement":"Elevation and shadows","status":"verified"},{"evidence":["static/css/style.css"],"id":"element-sizes","note":"Button and control size variants are present.","requirement":"Control and element sizes","status":"verified"},{"evidence":["static/css/style.css","static/css/qpet-visual-finish.css"],"id":"motion","note":"Transitions have a reduced-motion override.","requirement":"Motion and reduced-motion tokens","status":"verified"},{"evidence":["static/css/qpet-shell.css","static/css/style.css"],"id":"containers-grid","note":"Shell and product grids are bounded.","requirement":"Container widths and grid","status":"verified"},{"evidence":["static/css/qpet-tokens.css","static/css/style.css","static/css/qpet-mobile-shell.css"],"id":"z-index-registry","note":"All stylesheet layers use the named registry in the token layer.","requirement":"Central z-index registry","status":"verified"},{"evidence":["static/css/qpet-tokens.css","app/avds.py"],"id":"six-theme-parity","note":"All six themes have explicit selectors or media contexts; the map token palette is ready for the synchronized map/list surface.","requirement":"Institutional, editorial, data, map, dark and print themes","status":"verified"}],"gaps":[],"id":"tokens_themes","percent":100,"title":"Tokens and themes","total":10,"verified":10},{"criteria":[{"evidence":["app/avds.py"],"id":"exchange-adoption","note":"All 13 released exchange components are adopted.","requirement":"Released exchange component adoption","status":"verified"},{"evidence":["docs/AVDS_INTEGRATION.md","templates/"],"id":"html-anatomy","note":"SSR roots use explicit component markers and documented anatomy.","requirement":"HTML structure","status":"verified"},{"evidence":["static/css/qpet-avds-primitives.css"],"id":"attribute-api","note":"data-avds-component and state attributes are public selectors.","requirement":"Attribute API","status":"verified"},{"evidence":["static/css/qpet-avds-primitives.css"],"id":"states","note":"State-bearing components expose explicit attributes.","requirement":"Component states","status":"verified"},{"evidence":["templates/base.html","static/js/theme.js"],"id":"keyboard","note":"Shared shell controls expose keyboard-compatible semantics.","requirement":"Keyboard interaction","status":"verified"},{"evidence":["app/ecosystem.py"],"id":"families","note":"Components are grouped by consumer responsibility.","requirement":"Component family map","status":"verified"},{"evidence":["app/ecosystem.py"],"id":"duplicate-guard","note":"Primitive names that must not be reimplemented are public.","requirement":"No duplicate primitive policy","status":"verified"},{"evidence":["app/avds.py","tests/test_avds_system_contract.py"],"id":"size-api","note":"Every adopted component publishes an explicit size or density contract, including responsive-inline/block where a fixed size is not meaningful.","requirement":"Complete size API per component","status":"verified"},{"evidence":["app/avds.py","tests/test_avds_system_contract.py"],"id":"variant-api","note":"The SSR adapter exposes a deterministic variant list for every adopted component and the contract test rejects missing matrices.","requirement":"Complete variant matrix","status":"verified"},{"evidence":["app/avds.py","tests/test_avds_system_contract.py"],"id":"nesting-rules","note":"Every adopted component has an explicit nesting rule checked with its root, attributes, states and keyboard contract.","requirement":"Complete nesting rules","status":"verified"}],"gaps":[],"id":"components","percent":100,"title":"Components","total":10,"verified":10},{"criteria":[{"evidence":["templates/base.html"],"id":"header-footer","note":"Shared shell is canonical.","requirement":"Header and footer","status":"verified"},{"evidence":["templates/animal_passport.html"],"id":"object-passport","note":"Animal passport has an explicit product composition.","requirement":"Object passport","status":"verified"},{"evidence":["templates/index.html"],"id":"catalog","note":"Catalog combines filters, result grid and state panels.","requirement":"Catalog","status":"verified"},{"evidence":["templates/dashboard.html"],"id":"analytics","note":"Metrics, charts and tables share one dashboard composition.","requirement":"Analytics panel","status":"verified"},{"evidence":["templates/admin/system.html"],"id":"table","note":"DataTable and ProvenanceTable compositions are adopted.","requirement":"Table","status":"verified"},{"evidence":["templates/index.html"],"id":"filters","note":"FilterChipRow anatomy is used by the catalog.","requirement":"Filters","status":"verified"},{"evidence":["templates/admin/system.html","templates/guide.html"],"id":"evidence-methodology","note":"Provenance disclosures and methodology copy are present.","requirement":"Evidence, methodology and provenance","status":"verified"},{"evidence":["templates/shelters.html","app/services/shelter_map.py","static/js/shelter-map.js","tests/test_shelter_map.py"],"id":"map-with-list","note":"The shelter directory provides a city-level map with synchronized, keyboard-accessible list selection.","requirement":"Map with synchronized list","status":"verified"},{"evidence":["templates/dashboard.html","static/css/qpet-avds-primitives.css"],"id":"sourced-chart","note":"The operations dashboard charts expose source, period, text summary and native-table fallback.","requirement":"Chart with source, period and table fallback","status":"verified"},{"evidence":["templates/guide.html","tests/test_frontend_contracts.py"],"id":"publication","note":"The guide is a reusable Publication composition with a named root, title, sections, FAQ and source disclosures.","requirement":"Editorial publication","status":"verified"}],"gaps":[],"id":"compositions","percent":100,"title":"Compositions","total":10,"verified":10},{"criteria":[{"evidence":["static/css/style.css"],"id":"pointer-focus-active","note":"Interactive controls define pointer and focus states.","requirement":"Hover, focus and active","status":"verified"},{"evidence":["templates/base.html"],"id":"selected","note":"Navigation and filters expose current or selected state.","requirement":"Selected","status":"verified"},{"evidence":["static/css/style.css"],"id":"disabled","note":"Disabled controls are styled and non-interactive.","requirement":"Disabled","status":"verified"},{"evidence":["templates/dashboard.html"],"id":"loading-skeleton","note":"Loading surfaces use Skeleton markers.","requirement":"Loading and skeleton","status":"verified"},{"evidence":["static/css/qpet-avds-primitives.css"],"id":"empty","note":"StatePanel is reused for empty results.","requirement":"Empty","status":"verified"},{"evidence":["templates/404.html","templates/500.html"],"id":"error","note":"Shared error rendering is explicit.","requirement":"Error","status":"verified"},{"evidence":["templates/admin/system.html"],"id":"degraded","note":"Service status cards represent degraded operation.","requirement":"Degraded","status":"verified"},{"evidence":["static/css/style.css"],"id":"success","note":"Forms and status surfaces expose success.","requirement":"Success","status":"verified"},{"evidence":["static/offline.html","static/sw.js"],"id":"offline","note":"The PWA has a deterministic offline document.","requirement":"Offline","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"stale-data","note":"Dynamic dashboards expose loading, fresh, stale, unknown and degraded freshness states.","requirement":"Stale data","status":"verified"}],"gaps":[],"id":"states","percent":100,"title":"States","total":10,"verified":10},{"criteria":[{"evidence":["static/css/qpet-mobile-shell.css","static/css/qpet-visual-finish.css"],"id":"regime-contract","note":"Mobile, tablet and desktop compositions reorder deliberately.","requirement":"Recomposition order by regime","status":"verified"},{"evidence":["static/css/qpet-avds-primitives.css"],"id":"density","note":"Compact data density is explicit.","requirement":"Permitted density","status":"verified"},{"evidence":["static/css/qpet-mobile-shell.css"],"id":"rails","note":"Mobile bottom navigation and tablet rail rules are separated.","requirement":"Rails and auxiliary panels","status":"verified"},{"evidence":["static/css/qpet-shell.css"],"id":"line-length","note":"Reading and shell containers are bounded.","requirement":"Line-length limit","status":"verified"},{"evidence":["static/css/qpet-visual-finish.css"],"id":"whitespace","note":"Empty-state and hero layouts have compact fallbacks.","requirement":"No unjustified empty space","status":"verified"},{"evidence":["docs/audit/CODEX_FULL_SITE_CLOSEOUT_2026-08-05.md"],"id":"core-widths","note":"Core compact, tablet and desktop regimes have browser evidence.","requirement":"390, 768, 1024 and 1440 coverage","status":"verified"},{"evidence":["static/css/qpet-shell.css"],"id":"ultrawide-css","note":"The wide shell remains max-width bounded.","requirement":"1920 and ultra-wide bounded canvas","status":"verified"},{"evidence":["docs/audit/AVDS_REFERENCE_REGRESSION_2026-08-12.md","docs/audit/avds-reference/home-320.webp","scripts/check_avds_visual_evidence.py"],"id":"reference-320","note":"A checked-in 320 px WebP baseline is hash-checked by the release gate.","requirement":"Reference regression at 320","status":"verified"},{"evidence":["docs/audit/AVDS_REFERENCE_REGRESSION_2026-08-12.md","docs/audit/avds-reference/home-820.webp","scripts/check_avds_visual_evidence.py"],"id":"reference-820","note":"A checked-in 820 px WebP baseline is hash-checked by the release gate.","requirement":"Reference regression at 820","status":"verified"},{"evidence":["docs/audit/AVDS_REFERENCE_REGRESSION_2026-08-12.md","docs/audit/avds-reference/home-1920.webp","docs/audit/avds-reference/home-2560.webp","scripts/check_avds_visual_evidence.py"],"id":"reference-1920-plus","note":"1920 px and 2560 px WebP baselines are checked in and hash-gated.","requirement":"Reference regression at 1920 and ultra-wide","status":"verified"}],"gaps":[],"id":"responsiveness","percent":100,"title":"Responsiveness","total":10,"verified":10},{"criteria":[{"evidence":["docs/admin-modernization.md"],"id":"contrast","note":"Axe contrast checks are part of recorded browser QA.","requirement":"Contrast","status":"verified"},{"evidence":["static/css/style.css"],"id":"focus","note":"Keyboard focus is visible on interactive elements.","requirement":"Visible focus","status":"verified"},{"evidence":["templates/base.html"],"id":"tab-order","note":"DOM order follows visual navigation order.","requirement":"Tab order","status":"verified"},{"evidence":["templates/base.html"],"id":"landmarks","note":"Header, navigation, main and footer landmarks are explicit.","requirement":"Landmarks","status":"verified"},{"evidence":["tests/test_frontend_contracts.py"],"id":"aria","note":"Dialog, labels and image alternatives are statically guarded.","requirement":"ARIA","status":"verified"},{"evidence":["static/css/style.css"],"id":"reduced-motion","note":"Animations are disabled for reduced-motion preference.","requirement":"Reduced motion","status":"verified"},{"evidence":["static/js/theme.js"],"id":"complex-keyboard","note":"Menus and dialogs support Escape and focus return.","requirement":"Complex elements by keyboard","status":"verified"},{"evidence":["docs/audit/CODEX_FULL_SITE_CLOSEOUT_2026-08-05.md"],"id":"overflow","note":"Responsive QA records no unintended horizontal overflow.","requirement":"Zoom-safe horizontal layout","status":"verified"},{"evidence":[],"id":"screen-reader","note":"No repeatable screen-reader acceptance transcript is checked in.","requirement":"Screen-reader task transcripts","status":"gap"},{"evidence":["docs/audit/AVDS_ACCESSIBILITY_ACCEPTANCE_2026-08-12.md","scripts/check_avds_visual_evidence.py"],"id":"zoom-200","note":"A 1440 px desktop is exercised at its deterministic 720 px CSS-width 200% proxy.","requirement":"200 percent zoom acceptance","status":"verified"}],"gaps":["screen-reader"],"id":"accessibility","percent":90,"title":"Accessibility","total":10,"verified":9},{"criteria":[{"evidence":["docs/qazstack/QPET_LANGUAGE_SURFACE_V1.md"],"id":"ru-kk-en","note":"Three interface locales are supported.","requirement":"RU, KK and EN","status":"verified"},{"evidence":["scripts/check_qazpet_translation_readiness.py"],"id":"key-parity","note":"Active server-rendered keys are release-gated.","requirement":"Translation-key parity","status":"verified"},{"evidence":["app/translations.py"],"id":"terminology","note":"Shared labels come from one locale catalog.","requirement":"Product terminology","status":"verified"},{"evidence":["app/translations.py"],"id":"action-labels","note":"Primary actions are localized.","requirement":"Action labels","status":"verified"},{"evidence":["app/template_helpers.py"],"id":"date-format","note":"Dates are formatted through shared helpers.","requirement":"Date formats","status":"verified"},{"evidence":["static/css/qpet-mobile-shell.css"],"id":"wrapping","note":"Compact labels wrap or truncate intentionally.","requirement":"Safe wrapping","status":"verified"},{"evidence":["templates/404.html","templates/500.html"],"id":"errors","note":"Public errors use the selected locale.","requirement":"Localized error messages","status":"verified"},{"evidence":["app/translations.py"],"id":"empty-states","note":"Empty-state copy is catalog-backed.","requirement":"Localized empty states","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"number-format","note":"Dynamic analytical values use one locale-aware Intl formatter.","requirement":"Central number formatting","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"unit-format","note":"Percent and count units are formatted through the shared data contract.","requirement":"Central unit formatting","status":"verified"}],"gaps":[],"id":"localization","percent":100,"title":"Localization","total":10,"verified":10},{"criteria":[{"evidence":["static/css/qpet-tokens.css"],"id":"semantic-palette","note":"Status and product data colors are semantic tokens.","requirement":"Semantic data palette","status":"verified"},{"evidence":["templates/dashboard.html"],"id":"units","note":"Dashboard values include visible units or labels.","requirement":"Units","status":"verified"},{"evidence":["app/routers/admin_system.py"],"id":"precision","note":"Operational metrics are calculated before presentation.","requirement":"Precision","status":"verified"},{"evidence":["templates/admin/system.html"],"id":"missing-values","note":"Unavailable evidence is represented explicitly.","requirement":"Missing and incomplete values","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"scales","note":"Cartesian charts reuse the shared zero-based count scale and tick formatter.","requirement":"Scale contract","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"legends","note":"Chart legends use one point-style, ordering and placement contract.","requirement":"Legend contract","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"axes","note":"Axes use shared count titles, zero baseline and locale-aware integer ticks.","requirement":"Axis contract","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"period-comparison","note":"The shared line-chart contract compares named series over the same period.","requirement":"Period comparison","status":"verified"},{"evidence":["static/css/qpet-tokens.css","templates/shelters.html","app/services/shelter_map.py","tests/test_shelter_map.py"],"id":"maps","note":"The shelter map uses semantic cartographic tokens, a legend and city-centroid coordinates without exposing exact addresses.","requirement":"Map visualization","status":"verified"},{"evidence":["templates/dashboard.html","templates/dashboard_matching.html","tests/test_frontend_contracts.py"],"id":"table-alternative","note":"Every analytical canvas has an adjacent native table alternative, including matching distributions and the no-data path.","requirement":"Tabular alternative","status":"verified"}],"gaps":[],"id":"data_visualization","percent":100,"title":"Data visualization","total":10,"verified":10},{"criteria":[{"evidence":["app/avds.py"],"id":"exact-version","note":"The adapter target is pinned.","requirement":"Exact AV DS release version","status":"verified"},{"evidence":["app/avds.py"],"id":"sync-date","note":"The last upstream check date is public.","requirement":"Synchronization date","status":"verified"},{"evidence":["app/avds.py"],"id":"source-revision","note":"The upstream release SHA is public.","requirement":"Source commit","status":"verified"},{"evidence":["app/avds.py"],"id":"release-id","note":"The upstream build ID is public.","requirement":"Release build ID","status":"verified"},{"evidence":["app/avds.py"],"id":"artifact-digest","note":"The release artifact SHA-256 is pinned.","requirement":"Upstream artifact digest","status":"verified"},{"evidence":["app/avds.py"],"id":"local-hashes","note":"Runtime SHA-256 values are generated for all connected files.","requirement":"Connected-file hashes","status":"verified"},{"evidence":["app/avds.py"],"id":"local-deviations","note":"SSR, palette, font and CSS-layer differences are explicit.","requirement":"Local deviation ledger","status":"verified"},{"evidence":["app/avds.py"],"id":"capability-drift","note":"AV DS 4.6.0 and design capability 4.5.1 are not conflated.","requirement":"Release and capability-version distinction","status":"verified"},{"evidence":["docs/AVDS_INTEGRATION.md"],"id":"update-procedure","note":"Sync, validation and release steps are documented.","requirement":"Update procedure","status":"verified"},{"evidence":["scripts/check_avds_system_contract.py","scripts/release_gate.sh"],"id":"release-gate","note":"The 10-category contract is validated before release.","requirement":"Automated system-contract gate","status":"verified"}],"gaps":[],"id":"version_discipline","percent":100,"title":"Version discipline","total":10,"verified":10}],"percent":99,"total":100,"verified":99,"weighting":"10 equal categories; 10 binary criteria per category"},"do_not_duplicate":["alert","badge","button","card","empty-state","field","progress","table"],"exchange_component_coverage":{"adopted":13,"available":13,"basis":"adopted_exchange_components","missing":[],"percent":100},"integration":{"adapter_contract":"qpet-avds-ssr-adapter-v1","adapter_verification":"scripts/check_avds_ssr_adapter.py","direct_package_import":false,"mode":"server-rendered-local-adapter","status":"adapter-aligned","theme":"qpet"},"qpet_to_avds_candidates":[{"boundary":"visual anatomy only; adoption, urgency and verification rules stay in Qaz.pet","component":"PetEntityCard","status":"candidate-after-second-consumer"},{"boundary":"AV DS may own label/tone layout; Qaz.pet owns deadline calculation","component":"AnimalDeadlineStatus","status":"candidate-generalize-as-DeadlineStatus"},{"boundary":"AV DS may own path anatomy; safety policy and moderation stay product-owned","component":"ResponsibleRehomingFlow","status":"candidate-as-workflow-recipe"},{"boundary":"AV DS may own disclosure surface; source truth and privacy class stay product-owned","component":"PublicEvidenceDisclosure","status":"candidate-as-provenance-recipe"}],"schema_version":"avds-ui-contract-v1","ssr_adoption":{"assessment_summary":["admin-system-product-readiness"],"data_table":["dashboard-shelters","matching-dashboard-top-liked","admin-system"],"deadline_status":["catalog","animal-detail","urgent","application"],"federated_search_progress":["tools-image-analysis-pipeline"],"file_dropzone":["lostfound-photo-search-upload","breed-detect-upload","qr-pet-tag-upload"],"filter_chip_row":["catalog-filters"],"media_frame":["catalog","animal-detail","passport","shelter-profile","swipe"],"media_grid":["lostfound-photo-search-results-grid"],"media_result_card":["lostfound-photo-search-results"],"media_search_surface":["lostfound-photo-search"],"pill_tabs":["lost-found-status"],"provenance_table":["admin-system-workflow-metrics"],"service_status_card":["admin-system"],"skeleton":["dashboard","matching-dashboard"],"source_health_badge":["tools-source-open-technology-status"],"state_panel":["urgent-empty","favorites-empty","passport-empty","lostfound-empty","lostfound-search-empty"],"workflow_path":["tools-services","tools-image-analysis"]},"system_contract":{"accessibility":{"contracted":["contrast","visible focus","tab order","landmarks","ARIA","reduced motion","keyboard dialogs","overflow prevention","200 percent zoom acceptance via 720 CSS px proxy"],"gaps":["screen-reader acceptance transcript"]},"component_contract":{"adopted":["ComparisonBarRow","DataTable","FederatedSearchProgress","FilterChipRow","MediaGrid","MediaInspector","MediaResultCard","MediaSearchSurface","ProvenanceCard","ProvenanceFoot","ProvenanceTable","ServiceStatusCard","SourceHealthBadge"],"components":[{"attributes":["data-avds-state","role=progressbar","aria-valuemin","aria-valuemax","aria-valuenow"],"component":"ComparisonBarRow","keyboard":"read-only; no custom key handling","nesting":"label, numeric value and one progress track","root":"data-avds-component=\"ComparisonBarRow\"","sizes":["responsive-inline"],"states":["default","full"],"variants":["default","full"]},{"attributes":["data-avds-density","caption"],"component":"DataTable","keyboard":"native table reading order; interactive cells use native controls","nesting":"inside .avds-data-table-scroll when horizontal scrolling is possible","root":"data-avds-component=\"DataTable\"","sizes":["compact","comfortable"],"states":["default","focus-within","empty"],"variants":["data","operations"]},{"attributes":["data-avds-state","aria-live"],"component":"FederatedSearchProgress","keyboard":"status only; controls remain outside the live region","nesting":"ordered stages with one current stage","root":"data-avds-component=\"FederatedSearchProgress\"","sizes":["block"],"states":["idle","loading","complete","degraded","error"],"variants":["pipeline"]},{"attributes":["role=group","aria-label","aria-current"],"component":"FilterChipRow","keyboard":"native link or button behavior in DOM order","nesting":"one label followed by a non-nested row of chips","root":"data-avds-component=\"FilterChipRow\"","sizes":["compact","touch"],"states":["default","hover","focus","selected","disabled"],"variants":["link","button"]},{"attributes":["data-avds-component-set","aria-live"],"component":"MediaGrid","keyboard":"DOM order must match visual order","nesting":"direct children are MediaResultCard roots","root":"data-avds-component=\"MediaGrid\"","sizes":["one-column","two-column","three-column","four-column"],"states":["loading","ready","empty","error"],"variants":["catalog","search-results"]},{"attributes":["data-avds-state","aria-busy"],"component":"MediaInspector","keyboard":"upload and retry actions use native controls","nesting":"MediaFrame, result summary and provenance disclosure","root":"data-avds-component=\"MediaInspector\"","sizes":["inline","panel"],"states":["idle","loading","ready","degraded","error"],"variants":["breed","photo-search"]},{"attributes":["data-media-kind","data-media-state","data-media-orientation"],"component":"MediaResultCard","keyboard":"primary link precedes secondary actions","nesting":"one MediaFrame, content block and action block","root":"data-avds-component=\"MediaResultCard\"","sizes":["catalog","compact"],"states":["ready","placeholder","review","stale"],"variants":["animal","lost-found","search-candidate"]},{"attributes":["data-avds-state","aria-busy"],"component":"MediaSearchSurface","keyboard":"file input, submit and result links remain native controls","nesting":"FileDropzone, FederatedSearchProgress and MediaGrid in that order","root":"data-avds-component=\"MediaSearchSurface\"","sizes":["page","embedded"],"states":["idle","loading","results","empty","error"],"variants":["lost-found","tool"]},{"attributes":["data-avds-state","aria-label"],"component":"ProvenanceCard","keyboard":"links and disclosures use native controls","nesting":"source, period, freshness and limitation fields","root":"data-avds-component=\"ProvenanceCard\"","sizes":["inline","panel"],"states":["verified","review","stale","unavailable"],"variants":["source","review"]},{"attributes":["data-avds-state"],"component":"ProvenanceFoot","keyboard":"no custom key handling","nesting":"last child of the governed content surface","root":"data-avds-component=\"ProvenanceFoot\"","sizes":["compact"],"states":["current","review","stale"],"variants":["source-note","legal-note"]},{"attributes":["data-avds-density","caption"],"component":"ProvenanceTable","keyboard":"native table reading order","nesting":"columns expose source, period, value and limitation","root":"data-avds-component=\"ProvenanceTable\"","sizes":["compact","comfortable"],"states":["default","empty","stale"],"variants":["source-ledger"]},{"attributes":["data-avds-state","data-tone"],"component":"ServiceStatusCard","keyboard":"card is static unless it contains a native action","nesting":"status label, evidence summary and optional action","root":"data-avds-component=\"ServiceStatusCard\"","sizes":["compact","panel"],"states":["healthy","degraded","error","offline","unknown"],"variants":["service","readiness"]},{"attributes":["data-avds-state","data-tone"],"component":"SourceHealthBadge","keyboard":"not focusable unless rendered as a link","nesting":"text label only; icon is decorative","root":"data-avds-component=\"SourceHealthBadge\"","sizes":["small","default"],"states":["verified","review","degraded","unavailable"],"variants":["source","organization"]}],"density_api":"data-avds-density=\"compact|comfortable\" where supported","exchange_coverage":{"adopted":13,"available":13,"basis":"adopted_exchange_components","missing":[],"percent":100},"keyboard":"native controls first; Escape closes dialogs; focus returns to opener","nesting":"component roots may contain product-owned copy and values but not duplicate another primitive root","root_api":"data-avds-component=\"<component>\"","state_api":"data-avds-state, data-media-state, aria-current, aria-disabled"},"compositions":["header-footer","object-passport","catalog","analytics-panel","table","filters","map-with-list","sourced-chart","publication","evidence-card","methodology-and-provenance"],"content_standard":{"contracted":["terminology","action labels","date formatting","number formatting","unit formatting","wrapping","errors","empty states"],"gaps":[],"locales":["ru","kk","en"]},"coverage":{"basis":"verified_system_contract_criteria","categories":[{"criteria":[{"evidence":["docs/audit/QPET_ROUTE_INVENTORY_2026-08-04.md"],"id":"public-ledger","note":"Canonical public route inventory is checked in.","requirement":"Public route ledger","status":"verified"},{"evidence":["tests/test_route_inventory_contract.py"],"id":"route-tests","note":"Inventory drift is test-gated.","requirement":"Route inventory contract tests","status":"verified"},{"evidence":["tests/test_route_coverage_batch.py"],"id":"route-batch","note":"Representative server-rendered routes are exercised.","requirement":"Batch route rendering","status":"verified"},{"evidence":["scripts/production_smoke.py"],"id":"public-smoke","note":"Release acceptance includes public HTTP checks.","requirement":"Production route smoke","status":"verified"},{"evidence":["scripts/full_state_check.py"],"id":"full-state","note":"Public routes are checked with state markers.","requirement":"Route and state matrix","status":"verified"},{"evidence":["docs/qazstack/qazpet-language-surface-v1.json"],"id":"three-locales","note":"The public locale set is explicit.","requirement":"RU, KK and EN route surface","status":"verified"},{"evidence":["tests/test_domain_migration.py"],"id":"canonical-domain","note":"qaz.pet is enforced as the public origin.","requirement":"Canonical domain contract","status":"verified"},{"evidence":["templates/base.html"],"id":"public-shell","note":"The shared shell exposes adapter and version markers.","requirement":"AV DS root markers","status":"verified"},{"evidence":["tests/test_admin_ui_smoke.py"],"id":"admin-surface","note":"Protected system UI has a separate smoke contract.","requirement":"Operator surface contract","status":"verified"},{"evidence":["tests/test_ecosystem_contracts.py"],"id":"head-contract","note":"Discovery contracts are headable.","requirement":"Machine endpoints support HEAD","status":"verified"}],"gaps":[],"id":"routes","percent":100,"title":"Routes","total":10,"verified":10},{"criteria":[{"evidence":["static/css/qpet-tokens.css"],"id":"semantic-colors","note":"Product colors map to semantic roles.","requirement":"Colors and semantic roles","status":"verified"},{"evidence":["static/css/qpet-tokens.css","static/fonts/avds/avds-fonts.css"],"id":"typography","note":"Text families and local font faces are explicit.","requirement":"Typography tokens","status":"verified"},{"evidence":["static/css/style.css"],"id":"spacing","note":"Shared spacing variables and layout gaps exist.","requirement":"Spacing scale","status":"verified"},{"evidence":["static/css/style.css","static/css/qpet-visual-finish.css"],"id":"radii","note":"Small, base and large radii are defined.","requirement":"Radius scale","status":"verified"},{"evidence":["static/css/qpet-tokens.css"],"id":"shadows","note":"Three product elevation levels are defined.","requirement":"Elevation and shadows","status":"verified"},{"evidence":["static/css/style.css"],"id":"element-sizes","note":"Button and control size variants are present.","requirement":"Control and element sizes","status":"verified"},{"evidence":["static/css/style.css","static/css/qpet-visual-finish.css"],"id":"motion","note":"Transitions have a reduced-motion override.","requirement":"Motion and reduced-motion tokens","status":"verified"},{"evidence":["static/css/qpet-shell.css","static/css/style.css"],"id":"containers-grid","note":"Shell and product grids are bounded.","requirement":"Container widths and grid","status":"verified"},{"evidence":["static/css/qpet-tokens.css","static/css/style.css","static/css/qpet-mobile-shell.css"],"id":"z-index-registry","note":"All stylesheet layers use the named registry in the token layer.","requirement":"Central z-index registry","status":"verified"},{"evidence":["static/css/qpet-tokens.css","app/avds.py"],"id":"six-theme-parity","note":"All six themes have explicit selectors or media contexts; the map token palette is ready for the synchronized map/list surface.","requirement":"Institutional, editorial, data, map, dark and print themes","status":"verified"}],"gaps":[],"id":"tokens_themes","percent":100,"title":"Tokens and themes","total":10,"verified":10},{"criteria":[{"evidence":["app/avds.py"],"id":"exchange-adoption","note":"All 13 released exchange components are adopted.","requirement":"Released exchange component adoption","status":"verified"},{"evidence":["docs/AVDS_INTEGRATION.md","templates/"],"id":"html-anatomy","note":"SSR roots use explicit component markers and documented anatomy.","requirement":"HTML structure","status":"verified"},{"evidence":["static/css/qpet-avds-primitives.css"],"id":"attribute-api","note":"data-avds-component and state attributes are public selectors.","requirement":"Attribute API","status":"verified"},{"evidence":["static/css/qpet-avds-primitives.css"],"id":"states","note":"State-bearing components expose explicit attributes.","requirement":"Component states","status":"verified"},{"evidence":["templates/base.html","static/js/theme.js"],"id":"keyboard","note":"Shared shell controls expose keyboard-compatible semantics.","requirement":"Keyboard interaction","status":"verified"},{"evidence":["app/ecosystem.py"],"id":"families","note":"Components are grouped by consumer responsibility.","requirement":"Component family map","status":"verified"},{"evidence":["app/ecosystem.py"],"id":"duplicate-guard","note":"Primitive names that must not be reimplemented are public.","requirement":"No duplicate primitive policy","status":"verified"},{"evidence":["app/avds.py","tests/test_avds_system_contract.py"],"id":"size-api","note":"Every adopted component publishes an explicit size or density contract, including responsive-inline/block where a fixed size is not meaningful.","requirement":"Complete size API per component","status":"verified"},{"evidence":["app/avds.py","tests/test_avds_system_contract.py"],"id":"variant-api","note":"The SSR adapter exposes a deterministic variant list for every adopted component and the contract test rejects missing matrices.","requirement":"Complete variant matrix","status":"verified"},{"evidence":["app/avds.py","tests/test_avds_system_contract.py"],"id":"nesting-rules","note":"Every adopted component has an explicit nesting rule checked with its root, attributes, states and keyboard contract.","requirement":"Complete nesting rules","status":"verified"}],"gaps":[],"id":"components","percent":100,"title":"Components","total":10,"verified":10},{"criteria":[{"evidence":["templates/base.html"],"id":"header-footer","note":"Shared shell is canonical.","requirement":"Header and footer","status":"verified"},{"evidence":["templates/animal_passport.html"],"id":"object-passport","note":"Animal passport has an explicit product composition.","requirement":"Object passport","status":"verified"},{"evidence":["templates/index.html"],"id":"catalog","note":"Catalog combines filters, result grid and state panels.","requirement":"Catalog","status":"verified"},{"evidence":["templates/dashboard.html"],"id":"analytics","note":"Metrics, charts and tables share one dashboard composition.","requirement":"Analytics panel","status":"verified"},{"evidence":["templates/admin/system.html"],"id":"table","note":"DataTable and ProvenanceTable compositions are adopted.","requirement":"Table","status":"verified"},{"evidence":["templates/index.html"],"id":"filters","note":"FilterChipRow anatomy is used by the catalog.","requirement":"Filters","status":"verified"},{"evidence":["templates/admin/system.html","templates/guide.html"],"id":"evidence-methodology","note":"Provenance disclosures and methodology copy are present.","requirement":"Evidence, methodology and provenance","status":"verified"},{"evidence":["templates/shelters.html","app/services/shelter_map.py","static/js/shelter-map.js","tests/test_shelter_map.py"],"id":"map-with-list","note":"The shelter directory provides a city-level map with synchronized, keyboard-accessible list selection.","requirement":"Map with synchronized list","status":"verified"},{"evidence":["templates/dashboard.html","static/css/qpet-avds-primitives.css"],"id":"sourced-chart","note":"The operations dashboard charts expose source, period, text summary and native-table fallback.","requirement":"Chart with source, period and table fallback","status":"verified"},{"evidence":["templates/guide.html","tests/test_frontend_contracts.py"],"id":"publication","note":"The guide is a reusable Publication composition with a named root, title, sections, FAQ and source disclosures.","requirement":"Editorial publication","status":"verified"}],"gaps":[],"id":"compositions","percent":100,"title":"Compositions","total":10,"verified":10},{"criteria":[{"evidence":["static/css/style.css"],"id":"pointer-focus-active","note":"Interactive controls define pointer and focus states.","requirement":"Hover, focus and active","status":"verified"},{"evidence":["templates/base.html"],"id":"selected","note":"Navigation and filters expose current or selected state.","requirement":"Selected","status":"verified"},{"evidence":["static/css/style.css"],"id":"disabled","note":"Disabled controls are styled and non-interactive.","requirement":"Disabled","status":"verified"},{"evidence":["templates/dashboard.html"],"id":"loading-skeleton","note":"Loading surfaces use Skeleton markers.","requirement":"Loading and skeleton","status":"verified"},{"evidence":["static/css/qpet-avds-primitives.css"],"id":"empty","note":"StatePanel is reused for empty results.","requirement":"Empty","status":"verified"},{"evidence":["templates/404.html","templates/500.html"],"id":"error","note":"Shared error rendering is explicit.","requirement":"Error","status":"verified"},{"evidence":["templates/admin/system.html"],"id":"degraded","note":"Service status cards represent degraded operation.","requirement":"Degraded","status":"verified"},{"evidence":["static/css/style.css"],"id":"success","note":"Forms and status surfaces expose success.","requirement":"Success","status":"verified"},{"evidence":["static/offline.html","static/sw.js"],"id":"offline","note":"The PWA has a deterministic offline document.","requirement":"Offline","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"stale-data","note":"Dynamic dashboards expose loading, fresh, stale, unknown and degraded freshness states.","requirement":"Stale data","status":"verified"}],"gaps":[],"id":"states","percent":100,"title":"States","total":10,"verified":10},{"criteria":[{"evidence":["static/css/qpet-mobile-shell.css","static/css/qpet-visual-finish.css"],"id":"regime-contract","note":"Mobile, tablet and desktop compositions reorder deliberately.","requirement":"Recomposition order by regime","status":"verified"},{"evidence":["static/css/qpet-avds-primitives.css"],"id":"density","note":"Compact data density is explicit.","requirement":"Permitted density","status":"verified"},{"evidence":["static/css/qpet-mobile-shell.css"],"id":"rails","note":"Mobile bottom navigation and tablet rail rules are separated.","requirement":"Rails and auxiliary panels","status":"verified"},{"evidence":["static/css/qpet-shell.css"],"id":"line-length","note":"Reading and shell containers are bounded.","requirement":"Line-length limit","status":"verified"},{"evidence":["static/css/qpet-visual-finish.css"],"id":"whitespace","note":"Empty-state and hero layouts have compact fallbacks.","requirement":"No unjustified empty space","status":"verified"},{"evidence":["docs/audit/CODEX_FULL_SITE_CLOSEOUT_2026-08-05.md"],"id":"core-widths","note":"Core compact, tablet and desktop regimes have browser evidence.","requirement":"390, 768, 1024 and 1440 coverage","status":"verified"},{"evidence":["static/css/qpet-shell.css"],"id":"ultrawide-css","note":"The wide shell remains max-width bounded.","requirement":"1920 and ultra-wide bounded canvas","status":"verified"},{"evidence":["docs/audit/AVDS_REFERENCE_REGRESSION_2026-08-12.md","docs/audit/avds-reference/home-320.webp","scripts/check_avds_visual_evidence.py"],"id":"reference-320","note":"A checked-in 320 px WebP baseline is hash-checked by the release gate.","requirement":"Reference regression at 320","status":"verified"},{"evidence":["docs/audit/AVDS_REFERENCE_REGRESSION_2026-08-12.md","docs/audit/avds-reference/home-820.webp","scripts/check_avds_visual_evidence.py"],"id":"reference-820","note":"A checked-in 820 px WebP baseline is hash-checked by the release gate.","requirement":"Reference regression at 820","status":"verified"},{"evidence":["docs/audit/AVDS_REFERENCE_REGRESSION_2026-08-12.md","docs/audit/avds-reference/home-1920.webp","docs/audit/avds-reference/home-2560.webp","scripts/check_avds_visual_evidence.py"],"id":"reference-1920-plus","note":"1920 px and 2560 px WebP baselines are checked in and hash-gated.","requirement":"Reference regression at 1920 and ultra-wide","status":"verified"}],"gaps":[],"id":"responsiveness","percent":100,"title":"Responsiveness","total":10,"verified":10},{"criteria":[{"evidence":["docs/admin-modernization.md"],"id":"contrast","note":"Axe contrast checks are part of recorded browser QA.","requirement":"Contrast","status":"verified"},{"evidence":["static/css/style.css"],"id":"focus","note":"Keyboard focus is visible on interactive elements.","requirement":"Visible focus","status":"verified"},{"evidence":["templates/base.html"],"id":"tab-order","note":"DOM order follows visual navigation order.","requirement":"Tab order","status":"verified"},{"evidence":["templates/base.html"],"id":"landmarks","note":"Header, navigation, main and footer landmarks are explicit.","requirement":"Landmarks","status":"verified"},{"evidence":["tests/test_frontend_contracts.py"],"id":"aria","note":"Dialog, labels and image alternatives are statically guarded.","requirement":"ARIA","status":"verified"},{"evidence":["static/css/style.css"],"id":"reduced-motion","note":"Animations are disabled for reduced-motion preference.","requirement":"Reduced motion","status":"verified"},{"evidence":["static/js/theme.js"],"id":"complex-keyboard","note":"Menus and dialogs support Escape and focus return.","requirement":"Complex elements by keyboard","status":"verified"},{"evidence":["docs/audit/CODEX_FULL_SITE_CLOSEOUT_2026-08-05.md"],"id":"overflow","note":"Responsive QA records no unintended horizontal overflow.","requirement":"Zoom-safe horizontal layout","status":"verified"},{"evidence":[],"id":"screen-reader","note":"No repeatable screen-reader acceptance transcript is checked in.","requirement":"Screen-reader task transcripts","status":"gap"},{"evidence":["docs/audit/AVDS_ACCESSIBILITY_ACCEPTANCE_2026-08-12.md","scripts/check_avds_visual_evidence.py"],"id":"zoom-200","note":"A 1440 px desktop is exercised at its deterministic 720 px CSS-width 200% proxy.","requirement":"200 percent zoom acceptance","status":"verified"}],"gaps":["screen-reader"],"id":"accessibility","percent":90,"title":"Accessibility","total":10,"verified":9},{"criteria":[{"evidence":["docs/qazstack/QPET_LANGUAGE_SURFACE_V1.md"],"id":"ru-kk-en","note":"Three interface locales are supported.","requirement":"RU, KK and EN","status":"verified"},{"evidence":["scripts/check_qazpet_translation_readiness.py"],"id":"key-parity","note":"Active server-rendered keys are release-gated.","requirement":"Translation-key parity","status":"verified"},{"evidence":["app/translations.py"],"id":"terminology","note":"Shared labels come from one locale catalog.","requirement":"Product terminology","status":"verified"},{"evidence":["app/translations.py"],"id":"action-labels","note":"Primary actions are localized.","requirement":"Action labels","status":"verified"},{"evidence":["app/template_helpers.py"],"id":"date-format","note":"Dates are formatted through shared helpers.","requirement":"Date formats","status":"verified"},{"evidence":["static/css/qpet-mobile-shell.css"],"id":"wrapping","note":"Compact labels wrap or truncate intentionally.","requirement":"Safe wrapping","status":"verified"},{"evidence":["templates/404.html","templates/500.html"],"id":"errors","note":"Public errors use the selected locale.","requirement":"Localized error messages","status":"verified"},{"evidence":["app/translations.py"],"id":"empty-states","note":"Empty-state copy is catalog-backed.","requirement":"Localized empty states","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"number-format","note":"Dynamic analytical values use one locale-aware Intl formatter.","requirement":"Central number formatting","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"unit-format","note":"Percent and count units are formatted through the shared data contract.","requirement":"Central unit formatting","status":"verified"}],"gaps":[],"id":"localization","percent":100,"title":"Localization","total":10,"verified":10},{"criteria":[{"evidence":["static/css/qpet-tokens.css"],"id":"semantic-palette","note":"Status and product data colors are semantic tokens.","requirement":"Semantic data palette","status":"verified"},{"evidence":["templates/dashboard.html"],"id":"units","note":"Dashboard values include visible units or labels.","requirement":"Units","status":"verified"},{"evidence":["app/routers/admin_system.py"],"id":"precision","note":"Operational metrics are calculated before presentation.","requirement":"Precision","status":"verified"},{"evidence":["templates/admin/system.html"],"id":"missing-values","note":"Unavailable evidence is represented explicitly.","requirement":"Missing and incomplete values","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"scales","note":"Cartesian charts reuse the shared zero-based count scale and tick formatter.","requirement":"Scale contract","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"legends","note":"Chart legends use one point-style, ordering and placement contract.","requirement":"Legend contract","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"axes","note":"Axes use shared count titles, zero baseline and locale-aware integer ticks.","requirement":"Axis contract","status":"verified"},{"evidence":["static/js/avds-data-contract.js","templates/dashboard.html","templates/dashboard_matching.html"],"id":"period-comparison","note":"The shared line-chart contract compares named series over the same period.","requirement":"Period comparison","status":"verified"},{"evidence":["static/css/qpet-tokens.css","templates/shelters.html","app/services/shelter_map.py","tests/test_shelter_map.py"],"id":"maps","note":"The shelter map uses semantic cartographic tokens, a legend and city-centroid coordinates without exposing exact addresses.","requirement":"Map visualization","status":"verified"},{"evidence":["templates/dashboard.html","templates/dashboard_matching.html","tests/test_frontend_contracts.py"],"id":"table-alternative","note":"Every analytical canvas has an adjacent native table alternative, including matching distributions and the no-data path.","requirement":"Tabular alternative","status":"verified"}],"gaps":[],"id":"data_visualization","percent":100,"title":"Data visualization","total":10,"verified":10},{"criteria":[{"evidence":["app/avds.py"],"id":"exact-version","note":"The adapter target is pinned.","requirement":"Exact AV DS release version","status":"verified"},{"evidence":["app/avds.py"],"id":"sync-date","note":"The last upstream check date is public.","requirement":"Synchronization date","status":"verified"},{"evidence":["app/avds.py"],"id":"source-revision","note":"The upstream release SHA is public.","requirement":"Source commit","status":"verified"},{"evidence":["app/avds.py"],"id":"release-id","note":"The upstream build ID is public.","requirement":"Release build ID","status":"verified"},{"evidence":["app/avds.py"],"id":"artifact-digest","note":"The release artifact SHA-256 is pinned.","requirement":"Upstream artifact digest","status":"verified"},{"evidence":["app/avds.py"],"id":"local-hashes","note":"Runtime SHA-256 values are generated for all connected files.","requirement":"Connected-file hashes","status":"verified"},{"evidence":["app/avds.py"],"id":"local-deviations","note":"SSR, palette, font and CSS-layer differences are explicit.","requirement":"Local deviation ledger","status":"verified"},{"evidence":["app/avds.py"],"id":"capability-drift","note":"AV DS 4.6.0 and design capability 4.5.1 are not conflated.","requirement":"Release and capability-version distinction","status":"verified"},{"evidence":["docs/AVDS_INTEGRATION.md"],"id":"update-procedure","note":"Sync, validation and release steps are documented.","requirement":"Update procedure","status":"verified"},{"evidence":["scripts/check_avds_system_contract.py","scripts/release_gate.sh"],"id":"release-gate","note":"The 10-category contract is validated before release.","requirement":"Automated system-contract gate","status":"verified"}],"gaps":[],"id":"version_discipline","percent":100,"title":"Version discipline","total":10,"verified":10}],"percent":99,"total":100,"verified":99,"weighting":"10 equal categories; 10 binary criteria per category"},"data_visualization":{"contracted":["semantic palette","units","precision","missing and incomplete values","shared scales","legend order","axis formatting","period comparison","tabular alternative for every analytical chart"],"gaps":[]},"fonts_icons":{"fonts":[{"family":"Onest","license":"OFL-1.1","license_file":"static/fonts/avds/LICENSES.md","local_glob":"static/fonts/avds/onest-*.woff2","role":"primary sans and display"},{"family":"Inter","license":"OFL-1.1","license_file":"static/fonts/avds/LICENSES.md","local_glob":"static/fonts/avds/inter-*.woff2","role":"sans fallback"},{"family":"IBM Plex Sans","license":"OFL-1.1","license_file":"static/fonts/avds/LICENSES.md","local_glob":"static/fonts/avds/ibm-plex-sans-*.woff2","role":"Cyrillic sans fallback"},{"family":"IBM Plex Serif","license":"OFL-1.1","license_file":"static/fonts/avds/LICENSES.md","local_glob":"static/fonts/avds/ibm-plex-serif-*.woff2","role":"editorial serif"},{"family":"IBM Plex Mono","license":"OFL-1.1","license_file":"static/fonts/avds/LICENSES.md","local_glob":"static/fonts/avds/ibm-plex-mono-*.woff2","role":"data and code"}],"iconography":{"approved_sizes_px":[12,14,16,20,22,24,36],"license":"ISC","names":["alert","archive","arrow-left","arrow-right","baby","badge-check","ban","bank","bone","book-open","briefcase","broom","bulb","calendar","camera","cat","chart","check-circle","chevron-down","circle-alert","city","clipboard","clock","close","coins","copy","crown","dna","dog","download","external","file-text","filter","gem","globe","handshake","heart","home","info","landmark","lock","mail","medal","megaphone","menu","message","moon","more-horizontal","paw","phone","pill","pin","plus","printer","qr","refresh","route","scale","scissors","search","send","share","shield","spark","stethoscope","sun","tag","trash","trophy","upload","user","users","vaccine","video","wrench"],"source":"lucide-react@0.460.0","sprite":"static/img/avds-icons.svg","stroke_width":1.8}},"provenance":{"connected_files":[{"path":"static/css/qpet-tokens.css","sha256":"c52884da71e3b27b5feff43670bbbb92dd7a5378bcb8208ca977b8298a33943b"},{"path":"static/css/style.css","sha256":"ccc3f379702fac3156b5f20d919a165ec5d424859bd74c53e4bbe3b9bdb145b4"},{"path":"static/css/qpet-shell.css","sha256":"bb27a3f2bbe2ef2a496de8c0bfde1a07921c7952e483c36d91c5e958804acaa6"},{"path":"static/css/qpet-mobile-shell.css","sha256":"cb500070f621dbc1d682c33340823c3c56e695658850dba48761fd5b4fb79df3"},{"path":"static/css/qpet-avds-primitives.css","sha256":"189f6394d6d441b296c6891efd1ed48922fae63b1956be5e124a9957e945074d"},{"path":"static/css/qpet-visual-finish.css","sha256":"55d165bd79575f52395af666a882e7625ff3a8c7ec91f24d689cfedbbe5b089a"},{"path":"static/fonts/avds/avds-fonts.css","sha256":"f116b64e8cdd39b1b05858e891f3dfb24c5efb61123e696b9f17c419defbacd1"},{"path":"static/fonts/avds/LICENSES.md","sha256":"051e8a0a9bffff5175f67232409dd67e21b07b4c866721553e458e718f625bc0"},{"path":"static/img/avds-icons.svg","sha256":"a5fff9f1115a6c6a2a1edebbb145bd4a3cb2a7c18b2b8f5e7ccfe3ae895b62ae"},{"path":"static/js/theme.js","sha256":"bcf536929e6dd28845520f56aa7e9e97eb92bec9e9eae64a22a6019ae4ab1f15"},{"path":"static/js/avds-data-contract.js","sha256":"03c87cee68d3acb1cf3ad2bf00d80d65cf0612835cabe9d25370a446e3d349c2"},{"path":"templates/base.html","sha256":"1bb3f502ca87724b77b033d54d434c6b99c0198d20ccc04d2d3facf2b06c35e0"}],"design_capability_version":"4.5.1","local_deviations":["Qaz.pet uses a server-rendered Jinja adapter instead of a direct React package import.","The qpet theme keeps a product orange accent while mapping status colors to AV DS semantic roles.","The production CSS cascade contains legacy product, shell, adapter and visual-finish layers.","The local font stack includes Onest and Inter fallbacks in addition to IBM Plex families.","Product workflows, deadlines, provenance truth and privacy rules remain consumer-owned.","The AV DS release is 4.6.0 while its published design-capability package is 4.5.1."],"open_kitchen_source_revision":"891eb9b8f13cb4b9ac6d69ec2c5ec59f54fb9a84","release_artifact":{"algorithm":"sha256","file_count":847,"sha256":"e4040aa5532fee05c0aa7b205d860122c1cfb8c029ded19de34d1f2e5d21b7e7"},"release_build_id":"1b9671a7fa6e","release_built_at":"2026-08-11T19:11:50.345Z","source_revision":"1b9671a7fa6efc9ba52a10e169ed13aaf13f53ac","synchronized_at":"2026-08-12","system_version":"4.6.0"},"quality_control":{"accessibility_evidence":"docs/admin-modernization.md","local_style_guard":"scripts/frontend_layer_audit.py","reference_screenshot_status":"complete; exact 320, 820, 1920 and 2560 baselines are hash-gated","reference_visual_gate":"scripts/check_avds_visual_evidence.py","release_gate":"scripts/release_gate.sh","route_ledger":"docs/audit/QPET_ROUTE_INVENTORY_2026-08-04.md","state_tests":"scripts/full_state_check.py","system_contract_gate":"scripts/check_avds_system_contract.py","update_procedure":"docs/AVDS_INTEGRATION.md#update-procedure"},"responsive_model":{"acceptance_widths_px":[320,390,768,820,1024,1440,1920,2560],"regimes":[{"composition":"single column, bottom navigation, stacked actions","id":"compact","range":"320-719"},{"composition":"single-column hero, tablet rail, reduced-density grids","id":"tablet","range":"720-1100"},{"composition":"desktop navigation, two- and three-column product grids","id":"desktop","range":"1101-1439"},{"composition":"bounded shell with denser grids","id":"wide","range":"1440-1919"},{"composition":"bounded reading frame and auxiliary whitespace","id":"expanded","range":"1920-2559"},{"composition":"centered bounded canvas; line length does not expand","id":"ultra-wide","range":"2560+"}],"rules":["preserve DOM reading order","collapse auxiliary panels before primary content","bound line length","avoid empty fixed-height slots"]},"states":{"active":":active or route-specific active class","degraded":"ServiceStatusCard with explicit limitation and retained safe action","disabled":"native disabled first; aria-disabled only with an interaction guard","empty":"data-avds-component=\"StatePanel\" with title, explanation and optional next action","error":"shared 404 or 500 surface; field errors are associated with their control","focus":":focus-visible with a 3 px visible ring","hover":":hover; must not be the only source of information","loading":"aria-busy=true and a stable status announcement","offline":"static/offline.html through the service worker fallback","selected":"aria-current, aria-selected or selected form value","skeleton":"data-avds-component=\"Skeleton\"; decorative placeholders are hidden from assistive tech","stale-data":"DataFreshness evaluates generated_at against a 15-minute threshold and announces fresh, stale, unknown or degraded data.","success":"success tone plus text; never color alone"},"themes":[{"id":"institutional","selector":".theme-qpet","status":"mapped"},{"id":"editorial","selector":".guide-page","status":"mapped"},{"id":"data-analytics","selector":".dashboard-page","status":"mapped"},{"id":"map","selector":":root[data-theme=\"map\"]","status":"mapped"},{"id":"dark","selector":"[data-theme=\"dark\"]","status":"implemented"},{"id":"print","selector":"@media print","status":"implemented"}],"tokens":{"breakpoints_px":[320,390,720,760,768,820,1024,1100,1440,1920,2560],"color_values":{"background":"42 22% 97%","border":"36 14% 86%","card":"0 0% 100%","danger":"0 67% 47%","foreground":"216 19% 14%","muted":"40 17% 93%","primary":"32 90% 37%","ring":"32 90% 37%","secondary":"151 18% 91%","success":"148 50% 29%","warning":"30 88% 29%"},"containers":{"default_max_px":1320,"reading_max_px":720,"wide_max_px":1400},"element_sizes":{"bottom_navigation_px":64,"header_px":56,"mobile_primary_min_height_px":48,"shared_control_min_height_px":38,"tablet_rail_px":88},"families":["color and semantic role","typography","spacing","radius","shadow","element size","motion","z-index","breakpoint","container and grid"],"known_gap":"The map theme and city-level synchronized map/list surface are token-complete; exact shelter coordinates remain intentionally unavailable.","motion":{"default":"0.2s ease","reduced_motion":"remove animation and transition"},"radii":{"base":"0.4375rem","large":"calc(0.4375rem + 4px)","small":"calc(0.4375rem - 1px)"},"roles":["background","foreground","card","border","muted","primary","secondary","ring"],"shadows":["shadow-sm","shadow-md","shadow-lg"],"source":"static/css/qpet-tokens.css","spacing_px":[4,8,12,16,20,24,32,40,48,64],"typography":{"declared_weights":[400,500,600,700,800],"display":"Onest, Inter, IBM Plex Sans, Helvetica Neue, Arial, sans-serif","mono":"IBM Plex Mono, JetBrains Mono, Menlo, monospace","sans":"Onest, Inter, IBM Plex Sans, Helvetica Neue, Arial, sans-serif"},"z_index_current":{"header":100,"menu_and_overlay":200,"mobile_backdrop":180,"mobile_navigation":190}}},"upstream_exchange":{"adoptable_from_avds":["ComparisonBarRow","DataTable","FederatedSearchProgress","FilterChipRow","MediaGrid","MediaInspector","MediaResultCard","MediaSearchSurface","ProvenanceCard","ProvenanceFoot","ProvenanceTable","ServiceStatusCard","SourceHealthBadge"],"checked_at":"2026-08-12","contract":"https://avds.digital/.well-known/avds-ui-contract.json","currency_status":"stale","platform_exchange_ledger":"https://platform.qdev.run/catalog/inventory/avds-platform-exchange.generated.json","schema_version":"avds-platform-exchange-v2","target_source_provenance":{"package":"@sgeo/ui-kit","package_version":"4.5.1","proof":"docs/audit/AVDS_SOURCE_PROOF_2026-08-23.json","repository":"https://github.com/belilovsky/avds.git","source_revision":"1b9671a7fa6efc9ba52a10e169ed13aaf13f53ac","status":"verified"}}}