Skip to content

Cutover runbook: make the API public with --no-invoker-iam-check - #267

Merged
bishopBethel merged 2 commits into
mainfrom
claude/gcp-cutover-public-access
Sep 24, 2026
Merged

bishopBethel merged 2 commits into
mainfrom
claude/gcp-cutover-public-access

Conversation

@bishopBethel

Copy link
Copy Markdown
Member

Records the result of pre-flight check P1 in backend/deploy/gcp/CUTOVER.md and updates step 2 to match.

What P1 found (2026-09-24, throwaway public-check service running Google's hello container in us-east4)

  • --allow-unauthenticated: the revision deployed, but "Setting IAM policy failed". The org policy rejects the allUsers binding, and the service stayed private (unauthenticated 403).
  • gcloud run services update --no-invoker-iam-check: succeeded, and unauthenticated requests got 200 (checked repeatedly). The annotation run.googleapis.com/invoker-iam-disabled read true.
  • The test service was deleted afterwards; its URL now returns 404.

Changes

  • P1 is ticked, with the result and a command to re-check it if org policies change. It says to stop if a policy such as run.managed.requireInvokerIam ever refuses the flag.
  • Step 2 deploys with --no-invoker-iam-check instead of --allow-unauthenticated, notes that the API does its own auth (session cookies, webhook signatures, OIDC for verify), and adds a check that $API/api/health returns 200 without credentials.

Documentation only; the devasign-api-main trigger ignores backend/deploy/**.

🤖 Generated with Claude Code

Pre-flight P1 showed the project's org policy rejects an allUsers
binding: --allow-unauthenticated left the test service private (403),
while --no-invoker-iam-check served it publicly (200). Step 2 now uses
that flag and checks the health endpoint answers 200 without
credentials; P1 records the result and how to re-check it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
contributor Ready Ready Preview Sep 24, 2026 7:19pm UTC
sponsor Ready Ready Preview Sep 24, 2026 7:19pm UTC

@devasign-agent devasign-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DevAsign Code Review

No issues found

✅ Merge score: 100/100

5 of 5 acceptance criteria met.
Documentation-only change to CUTOVER.md.

Comment thread backend/deploy/gcp/CUTOVER.md
Comment thread backend/deploy/gcp/CUTOVER.md
Comment thread backend/deploy/gcp/CUTOVER.md
Comment thread backend/deploy/gcp/CUTOVER.md
Comment thread backend/deploy/gcp/CUTOVER.md
v1 points at fa565e1, an untagged sync made after v1.1.2, so the release
is v1.2.0 and rollback moves v1 back to fa565e1; rolling back to v1.1.2
would also have undone the sync. Also ticks P2, P3 and P6 (P6 is
devasignhq/verify-action#3, unmerged until step 5).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bishopBethel

Copy link
Copy Markdown
Member Author

Added b23fc16: step 5 now releases verify-action as v1.2.0, and rollback moves v1 back to fa565e1. v1 points at an untagged sync made after v1.1.2, so the old "back to v1.1.2" rollback would also have undone that sync. It also ticks P2 (API_ORIGIN added to the env file), P3 (api:latest = 980ece2, green) and P6 (devasignhq/verify-action#3, left unmerged until step 5).

@devasign-agent devasign-agent Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DevAsign Code Review

No issues found

✅ Merge score: 100/100

8 of 8 acceptance criteria met.
All eight criteria are satisfied by the documentation changes in backend/deploy/gcp/CUTOVER.md.

Tests: 3 passed, 0 unverifiable — see the "Tests by DevAsign" comment.

Comment thread backend/deploy/gcp/CUTOVER.md
Comment thread backend/deploy/gcp/CUTOVER.md
Comment thread backend/deploy/gcp/CUTOVER.md
@devasign-agent

Copy link
Copy Markdown
Contributor

Tests by DevAsign

✅ Passed (3)

3 of 3 criteria verified by tests. Each verdict below links to its evidence.

6 — In CUTOVER.md P6, the verify-action change is marked done and references devasignhq/verify-action#3, states to leave it unmerged until step 5, and notes that v1 currently points at fa565e1 (an untagged sync), not v1.1.2. (pass)

Verdict: pass

All four assertions confirm P6 is marked done, references verify-action#​3, states to leave it unmerged until step 5, and notes v1 points at fa565e1 not v1.1.2.

Test: .devasign/tests/cutover-verify-action.test.mjs · integration

details

7 — In CUTOVER.md step 5, the release is tagged v1.2.0 (not v1.1.3) and v1 is force-moved to v1.2.0. (pass)

Verdict: pass

Assertions confirm step 5 tags the release v1.2.0, avoids v1.1.3, and force-moves v1 to v1.2.0.

Test: .devasign/tests/cutover-step5-tag.test.mjs · integration

details

8 — In CUTOVER.md rollback (before step 6), verify-action v1 is moved back to fa565e1 (not v1.1.2) via `git tag -f v1 fa565e1 && git push -f origin v1`, with a note that rolling back to v1.1.2 would undo the sync. (pass)

Verdict: pass

Assertion confirms the rollback before step 6 moves verify-action v1 back to fa565e1, not v1.1.2.

Test: .devasign/tests/cutover-rollback.test.mjs · integration

details

@bishopBethel
bishopBethel merged commit 88a44e8 into main Sep 24, 2026
7 checks passed
@bishopBethel
bishopBethel deleted the claude/gcp-cutover-public-access branch September 24, 2026 19:20

This branch was successfully deployed

2 active deployments
Preview – contributor — b23fc16c Deployed Sep 24, 2026 by vercel[bot]
Preview – sponsor — b23fc16c Deployed Sep 24, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant