Skip to content

R2 — deterministic Vercel deployment provenance binding - #4

Merged
eimyroot merged 2 commits into
mainfrom
r2/deployment-provenance-binding
Sep 5, 2026
Merged

eimyroot merged 2 commits into
mainfrom
r2/deployment-provenance-binding

Conversation

@eimyroot

@eimyroot eimyroot commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Scope

Bounded remediation of the production deployment provenance capability gap. No production deployment is performed by this PR.

Changes

  • Reads canonical target identity from config/production-target.json.
  • Production Vercel execution fails closed unless the target record is CANONICAL for production-hosting-target-identity, provider is vercel, team/project IDs match the canonical record, source SHA is known, checkout HEAD matches the expected SHA, checkout is clean, and productionApproved === true.
  • Production Vercel CLI invocation uses explicit --project <projectId> and -T <teamId> binding, with redundant VERCEL_PROJECT_ID / VERCEL_ORG_ID environment binding.
  • Deployment receipt schema v5 includes repository, branch, sourceSha, provider, teamId, projectId, mode, deploymentUrl, status, and verificationStatus.
  • Adds deterministic tests for canonical match, project/team mismatch, missing SHA, missing production approval, explicit CLI binding, missing deployment URL, and command failure.

Explicit non-goals

  • No production deployment.
  • No branch governance changes.
  • No secret/token write.
  • No new project/service/agent/orchestration layer.
  • No deployment workflow added yet: generated runtime output is ignored and there is no canonical CI-produced deployable artifact contract, so adding a production workflow here would not be a truthful executable path.

Validation

Focused local Node test: 8/8 provenance contract tests PASS. Full repository CI is required before merge.

@eimyroot
eimyroot merged commit e0aa646 into main Sep 5, 2026
1 of 2 checks passed
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