# Per-recipe harness config for bluesky-pds (Phase 2 Q4.3 — TLS-passthrough atproto PDS).
# The recipe routes via Traefik with TLS termination at cc-ci (the wildcard cert covers the
# bare DOMAIN; the gateway TLS-passthroughs the wildcard zone). atproto PDS exposes XRPC
# endpoints under /xrpc/* for the public protocol.
HEALTH_PATH = "/xrpc/_health"  # PDS health endpoint; returns {"version": ...} on success
HEALTH_OK = (200,)
DEPLOY_TIMEOUT = 600
HTTP_TIMEOUT = 600

# UPGRADE rung: published versions exist (0.1.1+v0.4, 0.2.0+v0.4) but BOTH pin the moving image
# tag ghcr.io/bluesky-social/pds:0.4, which upstream republished with main-branch builds
# (@atproto/pds 0.5.1, Node 24, /app/index.ts — no index.js), so NO published version can deploy
# as an upgrade base anymore: the base crash-loops MODULE_NOT_FOUND before the PR head is ever
# exercised (phase bsky root cause; cc-ci-plan/upstream/bluesky-pds.md). Declared intentional
# until a fixed exact-pinned version (0.3.0+v0.4.219, mirror PR #2) is merged AND published —
# then DROP this EXPECTED_NA and the upgrade rung resolves its base DYNAMICALLY (phase prevb:
# last-green warm canonical → same-version step-back → main tip), no explicit pin needed
# (UPGRADE_BASE_VERSION was removed in phase canon §2.G).
EXPECTED_NA = {
    "upgrade": "no deployable upgrade base: every published version pins the moving tag "
    "pds:0.4, which upstream republished with incompatible main builds (index.js removed) — "
    "drop this once a fixed version is published post-merge (dynamic base then resolves it)",
}

# canon §2.B: enroll as a DATA-WARM canonical (all recipes enrolled — operator 2026-06-17).
# The weekly sweep promotes this recipe's canonical to its latest green RELEASE TAG.
WARM_CANONICAL = True
