{
  "schema_version": "qazfish-ecosystem-integration-v1",
  "product_id": "qaz-fish",
  "product_name": "qaz.fish",
  "generated_at": "2026-07-27T13:07:28Z",
  "source_revision": "2af5e403977e",
  "public_contracts": [
    "/data/catalog.json",
    "/data/qazgeo-manifest.json",
    "/data/qazstack-consumer.json",
    "/data/qazstack-thematic-product.json",
    "/data/thematic-release.json",
    "/data/avds-consumer.json",
    "/data/scientific-foundation.bundle.source.json"
  ],
  "systems": [
    {
      "id": "qazgeo",
      "status": "active",
      "role": "Authoritative public geography snapshot for regions, named water objects, hydro-station catalogue and the allowlisted water-bodies tile source.",
      "public_contracts": [
        "/data/qazgeo-manifest.json",
        "/data/qazgeo-regions.geojson",
        "/data/qazgeo-water-objects.geojson",
        "/data/qazgeo-hydro-stations.geojson",
        "/api/qazgeo/tiles/water_bodies"
      ],
      "checks": [
        "npm run data:sync",
        "npm run smoke:vps"
      ],
      "browser_boundary": "Browser code reads same-origin public snapshots and the allowlisted TileJSON proxy only."
    },
    {
      "id": "qazstack",
      "status": "active",
      "role": "Cross-runtime product contract for provenance, freshness, privacy levels, unsupported claims and thematic release semantics.",
      "public_contracts": [
        "/data/qazstack-consumer.json",
        "/data/qazstack-thematic-product.json",
        "/data/thematic-release.json",
        "/.well-known/ai-readiness.json",
        "/llms.txt"
      ],
      "checks": [
        "npm run thematic:check",
        "npm run ecosystem:check",
        "npm run smoke:vps"
      ]
    },
    {
      "id": "avds4",
      "status": "active",
      "role": "Pinned design-system packages, semantic UI primitives and shared evidence/state patterns consumed by the frontend.",
      "public_contracts": [
        "/data/avds-consumer.json"
      ],
      "checks": [
        "npm run avds:check",
        "npm run ecosystem:check"
      ],
      "source_boundary": "QazFish keeps domain logic, maps, local storage and legal wording in the product layer."
    },
    {
      "id": "qazlake",
      "status": "source-provenance",
      "role": "Upstream normalized water-object provenance inside the QazGeo public snapshot and source register.",
      "public_contracts": [
        "/data/qazgeo-manifest.json",
        "/data/qazgeo-water-objects.geojson",
        "/data/scientific-foundation.bundle.source.json"
      ],
      "current_boundary": "QazFish does not query protected storage at runtime; lake-derived material is shipped only as reviewed public snapshots."
    },
    {
      "id": "qazpipe",
      "status": "prepared",
      "role": "Future ingestion lane for dated official restrictions, weather-warning references, hydro observations and community verification tasks.",
      "public_contracts": [
        "/data/update-pipeline.json",
        "/data/rule-checks.json",
        "/data/weather-warning-sources.json",
        "/data/restriction-zones.json"
      ],
      "activation_gate": "Enable only after source-specific dry run, rate limits, dated source identity and public-review diff are present."
    },
    {
      "id": "qazcompute",
      "status": "prepared",
      "role": "Future compute lane for species-photo candidates, hydrology linkage confidence and duplicate/community-signal clustering.",
      "public_contracts": [
        "/data/quality-index.json",
        "/data/doubt-mode.json",
        "/data/citation-guidance.json"
      ],
      "activation_gate": "Enable only behind benchmarked, versioned, explainable outputs; no automatic bite forecasts or legal verdicts."
    },
    {
      "id": "qazknowledge",
      "status": "draft",
      "role": "Scientific foundation bundle for ecology, safety and responsible-fishing references.",
      "public_contracts": [
        "/data/scientific-foundation.bundle.json",
        "/data/scientific-foundation.bundle.source.json"
      ],
      "display_mode": "status-only"
    }
  ],
  "runtime_boundaries": [
    "No protected upstream service is called directly from the browser.",
    "The trip journal, saved waters and trip plan remain device-local.",
    "Water objects are catalogue entries, not fishing spots or access confirmations.",
    "The product does not publish automatic bite forecasts, safe-weather verdicts or water-specific legal permission verdicts."
  ],
  "deployment_gate": {
    "vps_origin": "npm run smoke:vps",
    "public_domain": "npm run smoke:public",
    "public_dns_required": true
  }
}
