Skip to content

[EPIC] Deployment evolution: release discipline + platform consolidation (Cloudflare) #239

Description

@4444J99

Tracking issue for the deployment-architecture & release-discipline evolution. Full plan: docs/logos/evolution-plan.md. The locked decision below governs where historical plan sections still describe alternatives.

Historical starting state

main == production with no gate; releasing == merging; breaking-without-config changes become live incidents; infra is spread across Vercel + Render + Terraform/AWS + k8s (too much surface for a solo operator). Cloudflare account already runs 9 Workers / 3 D1 / 1 R2 — an underused strength.

Decision already locked

Option E: full Cloudflare, including D1, with a $0 floor was recorded on 2026-05-25 and remains explicit in the main-branch evolution plan and telos. See the original decision receipt. Implement through the existing cloudflare/ foundation and incremental endpoint migration. Later comments or historical phases that reopen hybrid/Render/Railway selection do not replace this recorded decision.

Release discipline (any option) — §4

  • Merge ≠ release: mainstaging auto; prod = manual promote
  • Environments: local → PR preview → staging → prod
  • Branch protection on main: full CI (typecheck + server tests + build) + review required
  • Per-env secrets; feature-flag breaking changes; expand-contract migrations; Sentry + health checks

Phases (sequences every open item)

Related: #234 #235 #230 #237 #236 #238 #233 #229

Current implementation ownership — 2026-09-09

Credential provisioning, credential scope and durable delivery are owned by Limen CLAVIS / credential wall #320, with merged implementations #1062 and #551. Use that existing owner; do not create another credential system or turn this technical dependency into a repeated user consent/platform-choice request.

This UCC epic owns provisioned D1/KV/Access bindings, migration, Worker deployment and live acceptance. Merged UCC #410 repaired account configuration and guards. Its staging execution verified the active token/account, observed D1 metadata 401/code10000 and unresolved D1/KV/Access bindings, then skipped migration and deployment. Preserve that evidence until an owner-executed successor supplies actual bindings and successful staging readback. A source merge or secret-presence check alone does not close this epic.

Accepted-main staging execution — 2026-09-09

Merged #419 implements dedicated resource reconciliation, generated real-binding configuration, schema migration/readback and live source/authentication verification. The final PR head and accepted main both passed CI Gate and dependency validation. Merge revision: 2a65f91435c3ca9d8c5852287f01d6ac71ae07a6.

The actual accepted-main staging run 34377834223 passed frozen installation and current-main verification, then attempted provisioning in apply mode. Provider receipt: exact account GET 200; Workers inventory GET 200; D1 inventory GET 401, code 10000. Only these three GET requests occurred; no resources were created. Migrations, deployment and live verification were skipped. The sanitized cloudflare-staging-34377834223-1 artifact preserves this receipt. Staging deployment remains unverified.

Limen #2595 adds the missing exact UCC sink, verifies candidate account/D1 capability before replacement, and attempts delivery through the exact authorized App principal. Its accepted-main execution is the credential-owner continuation; no repeat platform decision or user consent is needed. After successful delivery, rerun this staging workflow only while its source is still current main.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions