V5 Worker Full Retirement (Post-Hoc)
ADR-065: V5 Worker Full Retirement (Post-Hoc)
Status: Accepted Date: 2026-05-20 Author: Claude Code (claude/v5-retirement-2026-05-20) Supersedes: ADR-057 §“V5 Worker (frozen)” row — V5 is no longer a frozen fallback; it is retired. Related: ADR-053 (lean stack), ADR-054 (side-channel retirement), ADR-061 (Pipedream gap-fill), ADR-063 (doc consolidation)
Context
ADR-057 (2026-05-19) designated the V5 Worker (ascend-gateway-v5.ascendgtm.workers.dev) as a “frozen fallback” — kept deployed for AWS / LLM / call_api / batch_execute / discover_apis while Composio became the canonical OAuth SaaS layer. The freeze was meant to last “until usage drops to zero or a critical bug forces a deploy.”
Investigation 2026-05-20 found:
- Prod V5 is already gone.
GET https://ascend-gateway-v5.ascendgtm.workers.dev/health→ 404. The custom-domain route is unrouted. No prod worker exists in the CF account under that name. - R2 archive exists. Bucket
gateway-v5-archive-2026-05-17was created on 2026-05-17 — intentional decommission, not an outage. The retirement physically happened three days before this ADR; this document is post-hoc capture. - Staging + dev workers still alive.
ascend-gateway-v5-staging(tag6d09c5defbf04255b86af945d44ecffa) andascend-gateway-v5-dev(tag6f542284c6964d5f872444f5b7729b18) still respond 200. These are zombie remnants — no consumer points at them, no CI deploys to them, no rotation cron writes to their KV. - Orphan D1.
ascend-gateway-db(uuidf9eb1ad6-b3a8-46d7-b433-2717267085cb), 0 tables, 106KB, created 2026-05-20T00:05Z. Generated by a straywrangler.tomlreference during the archive; no data at risk. net.ascendgtm/gatewayv5.3.0 still listed in the public MCP registry (api.anthropic.com/mcp-registry). External consumers discovering the URL would 404 immediately. This is a stale public listing.- AWS tools still register against V5.
aws_bedrock_invoke,aws_bedrock_converse,aws_ses_send,aws_textractroute through the V5 worker. With V5 gone in prod, these calls fail closed. - 15 V5 invariants in
.claude/rules/v5-invariants.mddescribe a single-plane CF Workers gateway that no longer exists in production. Pre-commit drift check #19 enforces these invariants against code that has been deleted.
The “frozen fallback” framing is no longer accurate. The honest description is: V5 is retired. The platform runs on Composio (OAuth SaaS) + Pipedream Connect (gap-fill) + ascend-side-channel (LLM/web/AWS) + Mem0 (memory) + direct CF bindings (KV/D1/R2/Vectorize via MCP).
Decision
V5 Worker is fully retired as of 2026-05-17 (archive date), with this ADR ratifying the retirement post-hoc on 2026-05-20.
What gets deleted
| Asset | Action | Reason |
|---|---|---|
Prod worker ascend-gateway-v5 (custom domain) | Already gone (verified 404) | Mishaal archived 2026-05-17 |
Worker ascend-gateway-v5-staging | DELETE this PR | Zombie remnant |
Worker ascend-gateway-v5-dev | DELETE this PR | Zombie remnant |
D1 ascend-gateway-db (f9eb1ad6-…) | DELETE this PR | Orphan, 0 tables, no data |
Public MCP registry entry net.ascendgtm/gateway v5.3.0 | Deregister this PR | Stale public listing pointing at 404 |
V5 KV namespace 3c4d67dc67d040c4a40db5deb02db0f3 | KEEP — review separately | May still hold AWS/Anthropic creds; needs migration before delete |
R2 gateway-v5-archive-2026-05-17 | KEEP indefinitely | Forensic archive of last working state |
What gets re-homed
The following V5 tools must migrate to ascend-side-channel (separate worker, separate repo) before deleting V5 KV:
aws_bedrock_invokeaws_bedrock_converseaws_ses_sendaws_textract
llm_invoke, claude, web_fetch, perplexity_search already exist in ascend-side-channel.
call_api, batch_execute, discover_apis — these were V5-platform tools tied to V5’s tenant_auth+KV-config-router design. They do not survive the retirement; tool calls now go directly via Composio MCP, Pipedream Connect MCP, or mcp__cloudflare-*__execute per the toolkit registry vendor column.
What gets retired (invariants)
The 15 invariants in .claude/rules/v5-invariants.md describe a single CF Worker plane that no longer exists. They are RETIRED as architecture rules and PRESERVED as historical record. The file is renamed .claude/rules/v5-invariants-retired.md and the drift check #19 is updated to skip the retired file.
A successor invariants doc will be drafted in a follow-up ADR once the post-V5 architecture (Composio + Pipedream + side-channel + direct bindings) stabilises. Until then, the invariants worth preserving across the cutover are:
- No retries in caller paths. Callers retry. Composio / Pipedream / side-channel do not.
- 30s timeout on every outbound fetch (applies to side-channel + any future worker).
- Every LLM call through AI Gateway (applies to side-channel + future workers).
- Tenant isolation via Composio
user_id/ Pipedreamexternal_user_id(replaces V5’s KVtokens:{tenant}:…pattern for SaaS). - AWS credentials in side-channel KV
tokens:{tenant}:aws:{account_id}(preserves V5’s multi-account pattern; explicitly scoped to AWS+Anthropic only since Composio owns SaaS OAuth).
These five rules are reaffirmed in this ADR and will land in the successor invariants doc.
What gets scrubbed
Canonical docs referencing V5 as “frozen fallback” or “still deployed” must be updated:
docs/CURRENT-STACK.md— V5 row moves to “Retired” section.AGENTS.md— MCP architecture table + ASCII diagram updated..claude/CLAUDE.md— “What This Repo Contains” + MCP table updated..claude/rules/v5-invariants.md→v5-invariants-retired.md..claude/rules/reference.md— V5 internals → historical archive.docs/projects/LEDGER.md— V5 row closed.docs/composio/toolkit-registry.md—V5_CALL_APIvendor entries removed; tools rerouted..mcp.json— already clean (ascend-gateway entry was removed prior).
Pre-commit check #22 (retired-names) extends to add ascend-gateway-v5 patterns to the allow-list for historical files (ADRs, archived docs) and reject occurrences in live code/config.
Consequences
Positive
- Canonical stack matches reality. Fresh sessions stop reaching for the “frozen fallback” pattern that returns 404.
- 15 invariants reduce to 5 (carried into successor doc). Reasoning load drops materially.
- AWS tools move to ascend-side-channel — fewer planes, simpler routing.
- Public MCP registry stops advertising a dead endpoint.
- ~$5/mo CF Workers cost removed (staging + dev).
Negative
- AWS tool calls break until cross-repo migration completes (next session, ascend-side-channel repo). Mitigation: those tools are infrequent (Bedrock/Textract/SES not on hot path); known-broken window measured in hours.
- Any external integration that hardcoded
https://ascend-gateway-v5.ascendgtm.workers.dev/mcp404s — same status as today (V5 prod is already 404). No regression. - Historical context for “what was V5” requires reading the retired invariants doc + ADR-031 / ADR-032 / ADR-038 / ADR-057. Acceptable — that’s what archived docs are for.
Reversal triggers
This ADR is reversible only by:
- Restoring
ascend-gateway-v5-*workers from the R2 archive (gateway-v5-archive-2026-05-17). - Re-routing AWS tools back to a V5-style plane.
- Re-registering the public MCP entry.
No anticipated reason to do any of the above. Replace-don’t-restore is the default for any future need.
Implementation order (this PR)
- Write this ADR. ✅
- Delete orphan D1
ascend-gateway-dbviamcp__cloudflare-bindings__d1_database_delete. - Scrub canonical docs (parallel Edits):
wrangler.toml,AGENTS.md,.claude/CLAUDE.md,docs/CURRENT-STACK.md,docs/projects/LEDGER.md,docs/composio/toolkit-registry.md,.claude/rules/reference.md. - Rename
.claude/rules/v5-invariants.md→v5-invariants-retired.md; update drift check #19 + check #22 allow-list. - Update HANDOVER.md with retirement entry.
npm run check:pre-commit— expect retired-names hits, fix or allow-list.- Commit, push, open PR.
- After merge: delete CF workers staging + dev via
mcp__cloudflare-bindings__execute. - After merge: deregister
net.ascendgtm/gatewayv5.3.0 viaapi.anthropic.com/mcp-registry. - File cross-repo task in ascend-side-channel: migrate AWS tools.
- Update Mem0 with retirement-complete entries.
Open
- V5 KV namespace
3c4d67dc67d040c4a40db5deb02db0f3audit + migration plan — separate ADR after AWS tool migration lands. - Successor invariants doc — separate ADR once side-channel surface stabilises.
- Kahuna Pipedream GTM consent (unrelated carryover, Mishaal action).