Skip to content

release: promote unattended rollout runbook and Phase 1 ledger - #22

Merged
gcharang merged 3 commits into
masterfrom
dev
Jul 28, 2026
Merged

gcharang merged 3 commits into
masterfrom
dev

Conversation

@gcharang

Copy link
Copy Markdown
Contributor

Promotes dev to master so the unattended production rollout runbook is merged, satisfying Phase 0b — the runbook requires this before Phase 1 operational work begins.

Contents

  • docs/unattended-production-rollout.md — the canonical operator runbook (added on dev), plus the Phase 1 ledger update recording the Metamind implementation SHA, Phase 2's verified source preconditions, and three implementation deltas.

Release impact

None. Docs-only: no pending changesets and no published-package code changed, so release.yml is a clean no-op. No Worker deployment is triggered by this repo's master — Understudy's migration-v2 deploy is Phase 2 and stays a deliberate operator action.

Ledger note

Phase 0b's Approved SHA is filled in a follow-up commit once this merge produces a real master SHA — the runbook forbids copying the pre-merge dev SHA into that field.

🤖 Generated with Claude Code

gcharang and others added 3 commits July 28, 2026 02:10
Splits Phase 1 into implementation (1a) and attended deployment (1b):
the code exists and its local lane is green, but nothing is merged or
deployed, and conflating the two would let a code commit read as a
passed release gate — which this runbook exists to prevent.

Records Phase 2's source preconditions as verified without a deployment
(dry-run bindings, migration tag, flags-off variables), so the operator
starts from what is already checked rather than rechecking it.

Three implementation facts diverge from what this document specified,
and are recorded rather than left to drift:

- The lease state machine gained `abandoned`. `released` must keep
  meaning "confirmed 204" for the ramp gates and operator queries to be
  readable, so a lease that provably owns nothing needed its own
  terminal state instead of being folded in.
- Deploy-time `--var COMMIT` is not sufficient on its own. Metamind
  auto-deploys its default branch with a bare `wrangler deploy`, which
  would ship the placeholder and silently un-stamp a stamped
  deployment; the commit is now baked at build time so both paths carry
  it. Added as a Phase 1b precondition.
- The origin allowlist binds attended mode too. Spelled out because it
  has a real operational consequence once Phase 1b ships the canary
  origins while the mode is still attended.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gcharang
gcharang merged commit 464763b into master Jul 28, 2026
3 checks passed
gcharang added a commit that referenced this pull request Jul 28, 2026
Phase 0b passes with the merged master SHA (PR #22), as the runbook
requires — not the pre-merge dev SHA.

Phase 1b is marked Blocked. Pushing the Metamind Phase 1a branch
deployed it to production: Cloudflare Workers Builds is building and
deploying non-production branches, which Metamind's docs/deploy.md
states is off. Nothing was merged; the push alone did it.

Recorded rather than quietly fixed, because it inverts the ordering
Phase 1b requires (additive D1 migration BEFORE code that queries the
table) and the deployment carries no /health verification and no
attended proof. It is a production state change with no gate behind it,
so the ledger has to show it.

Impact is confined to browser enrichment. The primary intake workflow,
auth, CRM commit, and Gmail drafts are untouched, and the
approval-resume lease release is internally contained, so decisions
still land.

Worth noting for the rollout's own record: this was only visible because
Phase 1's build-time provenance stamp already existed. Under the former
COMMIT=local placeholder, /health would have read `local` before and
after.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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