ops(vercel): isolate preview and production environments
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- cloud, devops, documentation, infrastructure
Research direction
Start by auditing the live Vercel project settings against the three-environment contract and the repository’s canonical release/operator guide. Coordinate with #988, #622, and #995 without duplicating their scopes. Done means a concise environment matrix, verified production and Preview behavior, documented operator steps and plan limitations, and a repeatable verification checklist.
Written by the indexing model from the issue text.
Description
Freshness amendment: 2026-09-28
Requires Git-integrated automatic Production path; ADR0051 and vercel.json git.deploymentEnabled=false now hold all Git triggers off and require Dashboard Create Deployment. PR #1050 delivered environment matrix; retain live isolation audit, replace release acceptance text.
The review finding above explains the corrections to this ticket. Original observations retain their evidence date. Completed prerequisites are historical context; unfinished acceptance criteria remain open.
This was generated by AI during triage.
Agent Brief
Category: enhancement
Summary: Make Vercel Preview, Production, and local Development clearly isolated and easy to operate.
Current behavior:
The repository policy says Production ships from the current green main SHA through Dashboard Create Deployment during the ADR 0051 manual hold and Preview deployments are opt-in. The Vercel project still needs a simple, verified operator model for how those environments differ. The audit tracked in #622 found production database and service credentials shared with Preview. #988 separately owns the provider-by-provider environment-variable inventory and its drift check; this issue should complement that work rather than duplicate it.
Desired behavior:
Maintain an auditable three-environment contract:
- Production: deploys from the current green
mainSHA through Dashboard Create Deployment during the manual hold; all automatic Git deployment triggers remain disabled, using production domains, data, and credentials. - Preview: created only when an operator deliberately requests a PR preview, using non-production resources and credentials, with protected access where the current Vercel plan supports it.
- Development: local development values only; never production credentials.
The Vercel project settings and operator documentation should agree. Preserve the main-only production release path and current opt-in Preview policy unless a deliberate ADR decision changes them. Coordinate variable scopes with #988 and database isolation with #622. Document the non-secret NODE_OPTIONS=--experimental-require-module runtime setting from #995 for the environments that need server rendering.
Key interfaces:
- Vercel project configuration: production branch, Preview creation policy, domains, deployment protections, ignored-build behavior, and environment scopes.
- The canonical release/operator guide and its links to the relevant ADRs and environment-variable contract.
- Vercel-managed environment variables and integrations; secrets must not be copied into GitHub.
Acceptance criteria:
- Audit the live Vercel project settings and record, in one concise matrix, each environment’s purpose, deployment trigger/branch, domain behavior, access controls, data/services, and variable scope.
- Confirm Production is the
mainGit-integrated release path and production aliases are not assigned to Preview deployments. - Keep Preview opt-in for a deliberately selected PR unless an approved ADR changes that policy; verify Preview cannot receive production database or other production service credentials.
- Verify local Development uses local values only. If Vercel plan limits prevent a desired Preview access control, document the limitation and the safe alternative rather than implying an unavailable protection exists.
- Document simple operator steps to request a Preview, verify it, remove it, and release to Production through a reviewed merge to
main. State that Dashboard Redeploy is not the release path formain. - Cross-link #988 for the complete variable inventory/drift check, #622 for database branch and credential isolation, and #995 for the runtime flag; avoid duplicating their implementation scope.
- Provide a verification checklist showing that a Preview has no production domain or production credentials, and that a fresh
maindeployment uses Production settings.
Out of scope:
- Changing
mainas the only Production release branch. - Enabling automatic Preview deployments by default without an explicit ADR decision.
- Reimplementing the provider-variable inventory or Neon branch lifecycle tracked by #988 and #622.
- Using a Vercel Dashboard Redeploy to ship
main.
Related issues: #622, #732, #988, #995.
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 44m
- Merged PRs (30d)
- 689
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from fderuiter/deruiter.dev
-
area:arcade game ready-for-agent
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
fderuiter/deruiter.dev#2281 · 1 comment ·
Maintainers usually reply within 1 day
-
ready-for-agent
Difficulty 4/5 3-5 days Newbie friendliness 35/100
fderuiter/deruiter.dev#2293 ·
Maintainers usually reply within 1 day
-
Retro Labyrinth: re-playtest against the rubric after the 10/10 audit fixesPossibly taken @fderuiter claimed this today. Openready-for-agent
fderuiter/deruiter.dev#2292 · 1 assignee ·
Maintainers usually reply within 1 day
-
Retro Labyrinth: polish list from the 10/10 audit (NICE items N1-N12)Possibly taken @fderuiter claimed this today. Openready-for-agent
fderuiter/deruiter.dev#2291 · 1 assignee ·
Maintainers usually reply within 1 day
-
area:arcade game ready-for-agent
Difficulty 3/5 1-2 days Newbie friendliness 15/100
fderuiter/deruiter.dev#2290 ·
Maintainers usually reply within 1 day
All issues in fderuiter/deruiter.dev
Similar issues
-
streams:add
Difficulty 2/5 Under an hour Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
apache/rocketmq-dashboard#6872 ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
interledger/publisher-tools#931 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
ARTPARK-SAHAI-ORG/calibrate-frontend#727 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
fab-geocommuns/RNB-site#539 ·
Maintainers usually reply within 2 days