Delivery bounded migrations and inactive production release verified
Delivery completed assignment ADR-0049/delivery/release-compatibility under coordinator 01a0e0a8-093e-7d80-b8ef-5997067ae039 (local), shared release ADR-0049/Platform-web-20261002. Final source 51cf142c1e24863fafadc09f5b5541ce068246f0 is Ready and promoted as dpl_5UUgAwDXv4cAJDetzCnDsL1XFZxM at 2026-10-03T00:30:48.510Z (October 2, 19:30:48.510 Central). Canonical delivery.sguildswim.com, project alias and main-branch alias resolve to this deployment; all five cron definitions retain their schedules and target its host. Both DELIVERY_PAYMENT_HANDOFF_ENABLED and DELIVERY_ONBOARDING_CLOSURE_ENABLED were explicitly false at build and runtime. This is an inactive consumer release, not activation or production financial proof.
Writer turnover and controlled migration
The corrected unchanged-schema precursor f8207229687f513d05eb5ca730e76fbcdb081e8f, deployment dpl_CorgoHi8xLHZuFTDnWe5SRFej4Ea, was promoted first without DDL. Platform verified canonical fanout, branch and cron routing, installed the skew boundary at the precursor while preserving existing authentication and 12-hour max age, and excluded authenticated old unique URLs from release use. No old manual production writer was scheduled or authorized. The coordinator bounded the last old admission at 00:20:30Z, with 300 seconds allowed for prior invocations.
After the authorized 00:25:30Z bound, Delivery's fresh read-only production check found zero old transactions and zero Delivery relation locks, the unchanged historical 42-row journal, and exactly the two reviewed pending migrations. The saved production environment was unchanged. DELIVERY_PRISMA_SCHEMA_NAME was absent from the production target; its unrelated preview/staging entry did not apply. Both saved database connections had previously been verified against the expected project, and the fresh direct connection and actual build confirmed database postgres, schema delivery, and the expected Supabase pooler.
The clean source archive excluded dotenv, scratch and log files. Its SHA256 is bed071a8320c63b73fc4cae96d24f984cc39bc5bb47fc05b7cff3f1876cd6b06. All 709 uploaded file SHA1s matched the prepared archive contents, accounting for the CLI's exclusion of .gitignore. The deployment-only build override was npm run prisma:migrate:deploy && npm run build && npm run smoke, preserving cron definitions. Actual logs show normal Prisma migrate deploy, both successful applications, generated schema/client, successful build and runtime smoke. No ensure-deploy-schema, db push, resolve, journal repair or DDL retry ran.
Accepted migration byte exception
The strict post-build check stopped promotion because Git archive on this Windows checkout, with core.autocrlf=true, exported CRLF migration files while the reviewed Git blobs used LF. The pre-deployment check compared the Git blobs to the approved hashes but omitted comparing archive bytes to those blobs. This was a packaging verification omission by Delivery.
| Migration | Reviewed LF Git SHA256 | Actual uploaded and journal CRLF SHA256 |
|---|---|---|
20260927010000_onboarding_closure |
2d04b73d04ef418364a65f301e2e9e1b4d2a2ba1d7513e28caef276e5b65f61b |
5e015de15d298c4dbcae7fc38a8a8e6ebdf818cd53a03537dbab7cb137b64308 |
20260928010000_payment_handoff |
42bbfb94005b90cb4426b6d154f734bd1a051bb9fcc3fb1789a5b9429c8275b3 |
74b39da0f972923585aace8445319a1b2b548fdb5dde5dd813c2cd225709cf73 |
Both journal checksums exactly equal the uploaded bytes. Removing only CRLF line endings produces byte-for-byte equality with the reviewed LF blobs. Both migrations finished at 00:27:03Z, with one applied step each, no rollback and no logs. The coordinator independently compared those bytes and accepted the documented exception before authorizing promotion of the same staged deployment. No SQL or journal rewrite, new build, migration rerun or compensating action followed. Future archive preparation must verify actual migration bytes before upload, and use an explicit line-ending policy.
The final accepted read-only check confirms 44 finished journal rows, zero pending migrations, unchanged historical 42 rows, and all 83 catalog checks passing, including expected columns, constraints, indexes, guard functions and triggers. The original failing checksum assertion is preserved alongside the accepted verification. Catalog success does not conceal the byte exception.
Runtime evidence and remaining gates
Staged and canonical production GET requests for a random nonexistent lesson returned the expected 404 lesson_not_found, exercising ordinary database lookup and schema/client initialization without creating business records. The checked final deployment error-log window returned zero records. This is limited read-only startup evidence, not a financial workflow, throughput or long-duration reliability claim. The source previously passed 911 Vitest tests plus 8 audit tests, nonincremental typecheck and runtime smoke; the retained actual PostgreSQL compatibility proof passed ten writer/rollback/timeout cases.
The rollback application after these additive guards is the corrected precursor dpl_CorgoHi8xLHZuFTDnWe5SRFej4Ea, never the original row-first e806e1b application. No deployment protection, skew policy or unrelated project setting changed during final promotion; only target, deployment, cron and timestamp bookkeeping changed.
Payment-handoff activation remains a separate coordinator/Sales decision after Revenue consumer readiness, actual production workload-auth checks, retained-event replay review and accepted cross-domain evidence. The read-only lesson check does not prove a Delivery-to-Revenue workload exchange or a paid handoff. No financial replay, cancellation, synthetic proof event or customer communication was performed for this release. Closure stays disabled and ADR-0050 is excluded from this source; its worktree, joint listener and fixtures remain preserved pending explicit handback.
Local evidence is under C:/Users/jallr/Documents/Sguild/repos/delivery/.tmp/adr0049-release-preparation-20261002/: final-production-result.json, final-live-before.json, final-live-after.json (preserved failing hash assertion), final-live-after-accepted.json, final-line-ending-exception.json, final-upload-verification.json, final-build.log, alias records and read-only runtime results. Raw project/environment API records are private and must not be published because they can contain credentials. Platform retains its independent turnover and byte-review evidence. Live ledger discovery found no Delivery-owned ADR-0049 commitment completed by this bounded release; unrelated migration and context-consumer commitments remain unchanged.