Skip to content

Code Mode v2 — rollout tracker #12

Description

@pratikbin

Tracker for the v2 cutover. PR: #11.

Cross-repo dependency

Backend gate must merge first: autogen-backend-v2#451 (private) — adds operationId CI gate required by the MCP sidecar's typed SDK codegen.

Pre-merge

Build + publish images

  • docker build -t <registry>/createos-mcp:v2.0.0-rc1 .
  • docker build -t <registry>/createos-mcp-workerd:v2.0.0-rc1 codemode/workerd
  • Push both to internal registry
  • (Optional) Mirror createos-mcp:v2.0.0-rc1 to a public mirror if community needs it

Staging

  • Apply k8s/pod-v2.yaml in staging
  • Pod becomes Ready (/readyz 200, workerd /health 200)
  • bun scripts/smoke.ts against staging URL: ok=50/50, p50<500 ms, p95<2000 ms
  • Manual: real Claude Code session against staging-v2 — deploy a sample Next.js project with ≤6 MCP tool calls
  • bun scripts/soak.tsfailed=0 over 1000 requests
  • Internal team usage for 1 week. Track:
    • tool-call distribution (search vs execute vs pollJob vs natives)
    • ApiError rate
    • wall-timeout count (should be 0 for typical workloads)
    • hot endpoints among the 87 long-tail (consider promoting back to native if any clearly belong on the fast path)

Pre-prod

  • No regressions vs v1 over the 1-week soak
  • Tag prior v1 commit on main as v1.x.y-final
  • Build + push final createos-mcp:v2.0.0 + createos-mcp-workerd:v2.0.0 images

Production rollout (blue-green)

  • 5% traffic → wait 30 min, watch metrics
  • 25% → wait 1 hour
  • 50% → wait 2 hours
  • 100%
  • Halt + rollback if errorKind:infra or overall error rate rises above v1 baseline at any step

Post-rollout

  • Decommission v1 image after 1 incident-free week
  • Tag v2.0.0 on main
  • Merge feat/code-mode-v2main
  • Update README to reflect v2 as the supported surface

Known limitations

  • workerd 2026 has no synchronous isolate.terminate(). Wall-timeout (600 s) and dispatcher dispose sever the api-proxy callback, so runaway code's further calls surface as ProxyError, but the V8 isolate continues until the Worker Loader's LRU evicts it. Upstream tracking: cloudflare/workerd.
  • ConfigMap for MCP config (mounted at /etc/createos) must be created in each cluster; example structure documented in k8s/pod-v2.yaml.

Linked

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions