Context
Tonight (2026-05-28) we cut runladder.com production over from dev Clerk (pk_test_) to prod Clerk (pk_live_, clerk.runladder.com). The cutover itself works (Google branding confirmed, prod webhook wired, provisioning service account in place — user_3ENqFcFXNNjstCfR5SCiMX2fWhV), but the prod Clerk database starts empty. Everything that lived on dev Clerk — users, orgs, memberships, tokens — does not exist on prod.
This issue tracks the cleanup and verification work needed to fully stand up prod. Items marked blocking should be done before the client demo (~7-10 days out).
Checklist
Internal Drawbackwards org
Figma Plugin (drawbackwards/ai-design-assistant)
Claude Skill (Ladder for Claude)
Stripe
Webhooks
Admin / role gating
Beta codes / Comps
Site password gate
In-flight dev invitations
Other surfaces (lower priority)
Closing tasks
Notes
This list is comprehensive but every item is small. Bulk of the work is the Drawbackwards org re-setup and the plugin/Skill verification. Stripe audit is the riskiest because money is involved — do that one carefully.
Context
Tonight (2026-05-28) we cut runladder.com production over from dev Clerk (
pk_test_) to prod Clerk (pk_live_,clerk.runladder.com). The cutover itself works (Google branding confirmed, prod webhook wired, provisioning service account in place —user_3ENqFcFXNNjstCfR5SCiMX2fWhV), but the prod Clerk database starts empty. Everything that lived on dev Clerk — users, orgs, memberships, tokens — does not exist on prod.This issue tracks the cleanup and verification work needed to fully stand up prod. Items marked blocking should be done before the client demo (~7-10 days out).
Checklist
Internal Drawbackwards org
/admin/clientsso it uses the service accountcreatedBypattern.internal: truemetadata so the dashboard suppresses the "Complimentary Team" plan strip (seeisInternalOrginsrc/lib/orgs.ts). Without this, internal members will see the comp-team framing meant for external clients.org:admin/org:memberroles. Each one needs to create a fresh prod Clerk account when they accept.Figma Plugin (
drawbackwards/ai-design-assistant)POST /api/plugin/issue-token(Clerk session required) and verified viaPOST /api/plugin/verify-token. Existing plugin tokens issued under dev Clerk userIds are orphaned — anyone using the plugin needs to re-auth./api/plugin/analyzeand/api/plugin/persist-scorework against prod.Claude Skill (
Ladder for Claude)POST /api/skill/token(Clerk session required). Same story as plugin: existing tokens orphaned./api/skill/scoreworks against prod.Stripe
Webhooks
organizationMembership.createdactually flips new members totier: teamend-to-end on prod (the tier flip path is what makes invited designers see the Team UI).Admin / role gating
ADMIN_EMAILSenv var is set in Vercel Production scope and contains the right Drawbackwards email addresses. The env var is not Clerk-tied, but the gate runs the lookup against the Clerk session, so it needs to match the email on each user's new prod account./admin/*access works for Ward + Chester after they create their new prod accounts.Beta codes / Comps
/admin/beta-codesstill resolves correctly.Site password gate
SITE_PASSWORDstill works on prod (it's environment-scoped but not Clerk-tied)./hq/decisionsentry) still works after the Clerk swap.In-flight dev invitations
Other surfaces (lower priority)
/hq/journeysAPI/MCP section.ladder-beta), not affected by this cutover.Closing tasks
/hq/journeysto remove the dev-Clerk caveats now that prod is real./hq/decisionswith a new entry summarizing the cutover and what changed.Notes
This list is comprehensive but every item is small. Bulk of the work is the Drawbackwards org re-setup and the plugin/Skill verification. Stripe audit is the riskiest because money is involved — do that one carefully.