Skip to content

Commit 464763b

Browse files
authored
Merge pull request #22 from ProofOfTechOrg/dev
release: promote unattended rollout runbook and Phase 1 ledger
2 parents 4843b6b + f8b05bd commit 464763b

4 files changed

Lines changed: 897 additions & 17 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ The Release workflow publishes the promoted versions with npm provenance. It rej
7878

7979
Do not merge `master` back into `dev`. `NPM_TOKEN` needs publish access to the `@understudy` scope.
8080

81-
Backend deployment remains a separate Wrangler operation. Keep `UNATTENDED_ENABLED_TENANTS=[]` until the canary extension passes the production acceptance suite.
81+
Backend deployment remains a separate Wrangler operation. Keep `UNATTENDED_ENABLED_TENANTS=[]` until the canary extension passes the production acceptance suite. Follow the [unattended production rollout runbook](docs/unattended-production-rollout.md) for deployment order, evidence gates, and rollback.
8282

8383
## Preserve attended proof history
8484

‎apps/backend/README.md‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,19 +162,22 @@ The Miniflare test suite needs permission to bind a loopback port.
162162

163163
## Deploy safely
164164

165-
Deploy the dual-protocol backend with unattended creation disabled:
165+
Use the [unattended production rollout runbook](../../docs/unattended-production-rollout.md) as the canonical deployment, evidence, and rollback procedure. Deploy the dual-protocol backend with unattended creation disabled:
166166

167167
```bash
168168
pnpm --filter @understudy/backend exec wrangler deploy
169169
```
170170

171-
After one canary extension reports protocol 2, enable only its tenant. Complete the production Chromium acceptance suite and 24-hour soak before broad enablement.
171+
After deployment, record the exact migration-`v2`, flags-off version as the rollback baseline. After one canary extension reports protocol 2, enable only its tenant. Complete the production Chromium acceptance suite and 24-hour soak before broad enablement.
172172

173173
A rollback must:
174174

175-
1. Disable new unattended leases
176-
2. Drain or terminalize active leases and granted commands
177-
3. Roll back application code
178-
4. Retain the additive Durable Object migrations
175+
1. Return the consumer to attended mode
176+
2. Roll back to the recorded migration-`v2`, flags-off version
177+
3. Confirm new unattended leases are disabled
178+
4. Delete and poll active leases while the durable sweeper retains unresolved cleanup
179+
5. Retain the additive Durable Object migrations and coordinator data
179180

180-
Do not deploy protocol-1-only code while protocol-2 leases exist.
181+
Migration `v2` is additive and irreversible. Cloudflare blocks rollback across incompatible Durable Object class lifecycle changes, so the active migration-`v1` version cannot be assumed to remain a valid rollback target after `v2`. See [Cloudflare Worker rollback constraints](https://developers.cloudflare.com/workers/versions-and-deployments/rollbacks/).
182+
183+
Do not remove migration `v2` or deploy protocol-1-only code while protocol-2 leases exist.

‎docs/technical-plan.md‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -214,18 +214,19 @@ Analytics Engine receives content-free events for authentication, allocation, li
214214

215215
## Rollout gates
216216

217-
Production configuration starts with `UNATTENDED_ENABLED_TENANTS=[]`. Deploy the additive Durable Object migration and dual-protocol backend before enabling any tenant.
217+
Production configuration starts with `UNATTENDED_ENABLED_TENANTS=[]`. Deploy the additive Durable Object migration and dual-protocol backend before enabling any tenant. The [unattended production rollout runbook](unattended-production-rollout.md) is the canonical execution procedure and status ledger.
218218

219-
Rollout order:
219+
The conceptual rollout order is:
220220

221-
1. Build and load the production extension in a tenant-dedicated profile
222-
2. Enroll one canary device and confirm protocol 2
223-
3. Enable one tenant
224-
4. Complete the real-Chromium acceptance suite
225-
5. Run a 24-hour read-only soak
226-
6. Enable remaining tenants after zero unexpected unknown writes and correct expiry behavior
221+
1. Make the governed Metamind consumer compatible and recoverable while it remains attended
222+
2. Establish a migration-`v2`, flags-off Understudy rollback baseline
223+
3. Accept one canary device and complete the real-Chromium suite
224+
4. Run a 24-hour read-only soak
225+
5. Prove one unattended Metamind workflow with correlated audit and durable cleanup
226+
6. Ramp allowlisted traffic through `1 → 5 → all`
227+
7. Complete the final 24-hour operational soak
227228

228-
Rollback disables new leases first, drains or terminalizes active leases and granted commands, then rolls back application code. Never remove the additive migration or deploy protocol-1-only code while protocol-2 leases exist.
229+
Rollback returns Metamind to attended mode, returns Understudy to the recorded migration-`v2`, flags-off version, confirms new leases are disabled, and drains active leases. Never remove the additive migration, target the earlier migration-`v1` version, or deploy protocol-1-only code while protocol-2 leases exist.
229230

230231
## Historical attended proof
231232

0 commit comments

Comments
 (0)