Skip to content

Fix Cloudflare platform installation, native readiness, auth forms, and shared email - #357

Merged
cpojer merged 10 commits into
mainfrom
codex/platform-cloudflare-e2e-fixes
Oct 1, 2026
Merged

cpojer merged 10 commits into
mainfrom
codex/platform-cloudflare-e2e-fixes

Conversation

@Brooooooklyn

@Brooooooklyn Brooooooklyn commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Self-hosted Cloudflare installation and native custom-domain deployment exposed failures in authentication forms, recovery, candidate readiness, and shared inbound email. This change fixes those paths and adds guarded acceptance fixtures and regressions.

  • Verify actual native Worker versions and custom-domain readiness, preserve existing bindings/triggers, and publish pinned secrets before initial readiness. Apps remain Workers Free compatible unless they opt into a paid feature.
  • Fix installation TLS validation and unnamed Access identity providers; preserve a configured dashboard origin, reconcile interrupted cutovers, and bound durable email bootstrap retries.
  • Make setup, administrator, and account-link forms submit with the correct origin while retaining exact-origin checks; handle dashboard discovery and OAuth failures safely.
  • Provision literal shared-email recipients with durable ownership gates, verify plus addressing, preserve unrelated rules, and fence deletion/slug reuse until teardown is verified. Migration 0056 preserves upstream 0054/0055 and declares only its exact tested canonical predecessor as rollback safe.
  • Add guarded runtime acceptance fixtures and move temporary test apps outside workspace package scans. Install Chromium in the CI jobs that execute native browser forms, and verify the intentional canonical schema conversion without relaxing other preserved data checks.
  • Emit each inferred Durable Object binding and migration tag once, preserve authored migration chronology and external bindings, and reject incompatible Sandbox namespace storage before any provisioning or entitlement request.

Validation at head ee32f5b:

  • Local CI=true vp run test:all passed: formatting, lint, builds, all 28 package checks, 653 test files and 12,150 tests; 25 skipped. Three optional Deno cases skip an explicit unsupported user npm configuration; Node/Bun and Chromium cases execute.
  • The Durable Object/Sandbox batch passed 700 focused unit tests and 14 real plugin/deployment build regressions. Combined and repeated builds preserve external bindings and authored migration order; Free apps emit no paid bindings.
  • Canonical migrations 0054/0055/0056 passed against disposable PostgreSQL seeded from the immutable previous release b4a4749. Its projects/secrets API suites passed 137/137 against the upgraded database; 27 fixture/baseline regressions passed.
  • Live isolated installation and native custom-domain dashboard deployment succeeded. Eleven public health/access checks, ten additional anonymous GET checks and 50 anonymous feature authorization checks passed. Genuine Cloudflare OIDC reached the first-administrator review.
  • Exact-head GitHub Actions CI, Platform CI (including schema compatibility), Security Analysis and both npm/pnpm Prepublish Test jobs passed. The main-only live-e2e job was skipped; its status does not establish live acceptance. Independent native runtime acceptance is still in progress.
  • The separate external Workers Builds check for void-cloud failed (build ad6c6447-cb4d-40a2-8fda-324a8a9941d9). Its production-account logs are unavailable in the logged-in test account, and no failure cause or production deployment success is claimed.

Managed live acceptance remains incomplete: the built-in browser blocks the approved /auth/bootstrap/confirm submission with net::ERR_BLOCKED_BY_CLIENT before a server response. Current readback has zero users and an expired unconsumed bootstrap. Genuine user signup/deployments, admin/user management, teams, real email receipt, managed Zero Trust, user queue consumption and Sandbox execution have not passed live acceptance. Prepared runners are not executed tests. The isolated live installation retains its earlier fork migration history; this canonical runtime has not been applied to that fork.

Credentials, private recovery files and workstation acceptance logs are excluded.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Failed ❌

View logs ↗
b86db46 2026-10-01T22:11:15.339Z View logs ↗
  • Build: Failed ❌

View logs ↗
2106f79 2026-10-01T21:33:32.820Z View logs ↗
  • Build: Failed ❌

View logs ↗
42dd4bd 2026-10-01T21:10:38.932Z View logs ↗
  • Build: Failed ❌

View logs ↗
b3f810a 2026-10-01T20:22:20.894Z View logs ↗
  • Build: Failed ❌

View logs ↗
ee32f5b 2026-10-01T19:06:08.529Z View logs ↗
  • Build: Failed ❌

View logs ↗
712af41 2026-10-01T18:18:45.025Z View logs ↗
  • Build: Failed ❌

View logs ↗
80dec5a 2026-10-01T18:11:43.702Z View logs ↗
  • Build: Failed ❌

View logs ↗
9e6a01a 2026-10-01T17:59:36.424Z View logs ↗
  • Build: Failed ❌

View logs ↗
577d2ae 2026-10-01T17:45:27.157Z View logs ↗
  • Build: Failed ❌

View logs ↗
498a050 2026-10-01T17:35:01.190Z View logs ↗

@Brooooooklyn
Brooooooklyn force-pushed the codex/platform-cloudflare-e2e-fixes branch from 9e6a01a to 80dec5a Compare October 1, 2026 18:09
@cpojer
cpojer marked this pull request as ready for review October 1, 2026 23:41
@cpojer
cpojer merged commit b993b99 into main Oct 1, 2026
18 of 19 checks passed
@cpojer
cpojer deleted the codex/platform-cloudflare-e2e-fixes branch October 1, 2026 23:41
@cpojer

cpojer commented Oct 1, 2026

Copy link
Copy Markdown
Member

Can you write maybe slightly fewer tests.

Brooooooklyn added a commit that referenced this pull request Oct 2, 2026
The private secret bootstrap leaves a Worker created through the API.
The first application deploy misclassifies its current SDK placeholder
and probes a disabled preview. After the first publication, an ordinary
revision can also stop before upload because the pinned cf CLI asks for
confirmation when the active Worker was last updated through the API.

Recognize the exact SDK placeholder from immutable module bytes,
secret-only bindings, source annotation and disabled URLs. Pin the
inspected active secrets before initial publication and ordinary
inherited-secret revisions, and recheck that the same version owns all
production traffic before upload. Use the existing version-aware
uploader for those revisions while retaining staged preview/readiness
checks. Explicit secret replacements and apps without remote secrets
retain their existing upload behavior.

Placeholder recognition relies on the callers' existing version matching
and ignores unused version-number, date and usage-model metadata. It
adds no UUID/date regex validation.

Bound optional module inspection, recheck ownership around publication
and callbacks, and report the actual published UUID if a callback fails
after publication. Also preserve manually configured email bindings when
automatic setup is skipped, retain the strict `--require-email` gate,
and document preparing the standalone self-hosted dashboard and checking
genuine email delivery/authentication. Maintainer guidance describes the
two upload paths.

Validation:

- Rebased onto main at `d4a27907` without conflicts. All four existing
patches are identical after rebase; the removed redundant validation
stays removed.
- Stabilized one existing invitation-delivery test by holding its clock
within one UTC-minute rate-limit window and restoring it afterward.
Advancing the clock across a minute reproduced the exact CI failure; the
focused test, all 28 tests in its file, and affected-file verification
pass. Production behavior is unchanged.
- Final head `08e55889` passed `CI=true vp test run`: 669 files, 12,624
tests, 25 skipped, 273.02 seconds. All 28 `vp run check` package
typechecks passed. Formatting, ordinary/type-aware platform lint, all
SDK/platform/playground builds and build-artifact checks passed on the
rebased implementation; the subsequent test-only change passed
formatting/lint and commit hooks. Worktree and diff checks are clean.
- The earlier full run passed all test assertions but exited on a
Node/Undici `setTypeOfService EINVAL` socket error. The isolated SSR
test and final full suite passed without changing production code or
suppressing errors.
- Exact final head `08e55889` passed all four Actions workflows (CI,
Platform CI, Prepublish and Security), including the repaired
integration job, schema compatibility and required `done`. No checks
remain pending. The independent external Cloudflare build failed; its
diagnostic remains unavailable.
- Previously captured live evidence: a genuine private SDK bootstrap and
subsequent ordinary native revision completed readiness, active/served
version matching and anonymous authorization refusal. Genuine SEND
arrived in Gmail with Cloudflare Received headers and passing SPF/DKIM;
RECEIVE and SMTP REJECT were observed. REPLY/FORWARD action recording is
proven but mailbox delivery remains unconfirmed. The original REPLY
input later received a route-unavailable DSN after cleanup; its initial
provider outcome is unknown. DMARC policy readiness is incomplete. Exact
owned email, runtime and Workflow cleanup preserved unrelated resources.

This follows the installation and runtime fixes already merged in #357.
Managed signup/admin/user/team/Zero Trust acceptance remains blocked at
administrator confirmation, while Sandbox execution and fresh HTTP log
acceptance remain incomplete. These native results do not establish full
managed-platform acceptance. No new dependencies or Workers Paid
requirement for ordinary apps are introduced.
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.

2 participants