{
  "schema_version": "qazstack-consumer-v1",
  "project_id": "photo-finder",
  "product_name": "QPhoto",
  "lifecycle": "production",
  "integration_mode": "python-package",
  "qazstack_version": "1.40.0",
  "source_revision": "2204023e142f8ca36a7536b61ff7b516377291e5",
  "primitives": [
    "complete-link-phash",
    "kznlp-normalization",
    "rank-trace",
    "request-id-observability",
    "source-url-normalization",
    "consumer-contract-validation",
    "provider-circuit-breaker"
  ],
  "owns": [
    "provider-orchestration",
    "publication-policy",
    "ranking-weights",
    "source-allowlists"
  ],
  "depends_on": [
    "qazstack-immutable-release"
  ],
  "forbidden_capabilities": [
    "invented-media-digests",
    "qazstack-publication-decisions"
  ],
  "evidence": {
    "source_files": [
      "app/main.py",
      "app/ecosystem.py",
      "app/ranking.py",
      "app/relevance.py",
      "app/dedup.py",
      "app/routers/search.py",
      "app/config.py",
      "docker-compose.yml"
    ],
    "test_commands": [
      ".venv/bin/python -m pytest -q tests/test_qazstack_contract.py",
      "docker exec photofinder_app python -c \"import qazstack; print(qazstack.__version__)\"",
      "curl -fsS https://qphoto.pro/contracts/qazstack-consumer.json"
    ],
    "runtime_urls": [
      "https://qphoto.pro/health",
      "https://qphoto.pro/contracts/qazstack-consumer.json"
    ],
    "verified_at": "2026-07-22T17:45:00Z",
    "environment": "production",
    "source_revision": "a0a4bfc6ea6b2fce205afe24fbf732fb3de3bc68",
    "checked_by": "qphoto-release-gate"
  },
  "owner": "qphoto",
  "notes": "Production mounts QazStack v1.40.0 read-only. Shared code supplies deterministic normalization, rank traces, duplicate clusters, contract validation and provider circuit breakers; QPhoto retains retries, provider orchestration, ranking weights and publication policy."
}
