diff --git a/.github/actions/preview-delivery/action.yml b/.github/actions/preview-delivery/action.yml index 4e7f5e9..592a2c7 100644 --- a/.github/actions/preview-delivery/action.yml +++ b/.github/actions/preview-delivery/action.yml @@ -479,6 +479,19 @@ runs: PR_NUMBER: ${{ inputs.pr_number }} WEB_URL: ${{ steps.heroku.outputs.web_url }} run: | + if ! docker run --rm \ + --entrypoint python \ + "inkcre-preview-release:$HEAD_SHA" \ + -c \ + 'from pathlib import Path; raise SystemExit(0 if Path("/app/scripts/configure_peer_runtime.py").is_file() else 1)'; then + { + echo "### Preview runtime compatibility" + echo + echo "- Peer advertisement: skipped for a pre-Peer Client image" + } >> "$GITHUB_STEP_SUMMARY" + exit 0 + fi + peer_id="$( python -c \ "import uuid; print(uuid.uuid5(uuid.NAMESPACE_URL, 'inkcre-core-py-pr-$PR_NUMBER'))" diff --git a/tasks/preview-jwt-authority/packet.md b/tasks/preview-jwt-authority/packet.md index 44f55bc..852e8d8 100644 --- a/tasks/preview-jwt-authority/packet.md +++ b/tasks/preview-jwt-authority/packet.md @@ -30,11 +30,14 @@ production and same-repository pull-request previews. - The repository Secret, Production Core/PostgREST, PR 52 Core/PostgREST, and the browser Preview setting have been converged to the selected key without exposing it in Git. - Local focused and full repository contracts pass. The live PostgREST transport probe is - independently blocked because the database cleanup removed the Preview relations after - Core cached its ready state; PR 52 requires one complete Preview initialization run. + independently blocked because PR 52 intentionally uses the pre-Peer Client schema while + the current preview controller unconditionally invokes the newer Peer advertisement script. +- The compatibility fix keeps Peer convergence mandatory for capable images and skips only + images that prove they do not contain `scripts/configure_peer_runtime.py`; health and + authenticated PostgREST probes remain mandatory in both cases. ## Next Step -Commit and push the verified source slice after explicit authorization, admit it to `main`, -rerun PR 52 Preview initialization, verify the live transport, then delete the obsolete -`PREVIEW_JWT_SEED` environment secret. +Verify and admit the narrow preview-controller compatibility fix to `main`, rerun PR 52 +Preview initialization, and verify the live authenticated transport against the Client +baseline. diff --git a/tests/test_preview_delivery.py b/tests/test_preview_delivery.py index 96d5af2..74a5804 100644 --- a/tests/test_preview_delivery.py +++ b/tests/test_preview_delivery.py @@ -26,6 +26,8 @@ def test_preview_builds_releases_probes_and_cleans_postgrest(): assert "derive_preview_jwt_secret.py" not in delivery assert "registry.heroku.com/$POSTGREST_APP_NAME/web" in delivery assert 'heroku ps:scale web=1:eco --app "$POSTGREST_APP_NAME"' in delivery + assert 'Path("/app/scripts/configure_peer_runtime.py").is_file()' in delivery + assert "Peer advertisement: skipped for a pre-Peer Client image" in delivery assert "scripts/verify_postgrest_contract.py" in delivery assert '--base-url "$POSTGREST_URL"' in delivery