# 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