Plan of record for Hanzo V8: one unified Go binary that go:embeds console2, every capability FE (console2) or BE (cloud), all-SQLite (no internal Postgres), one Service / one origin, all live. Sourced from the 7-mapper CTO assessment (wf_bcf82f7c-b54): ~40% — unified binary live+healthy, go:embed mechanism wired+tested, but the real SPA embed, the RED cloud build, the Postgres GitOps cutover, and the FE→BE contract fixes are still ahead. - migration.yaml — the chart: migration matrix (component → FE/BE/SQLITE/ KILL/COLLAPSE), the 20-rank execution order, the 10-step Postgres decommission runbook (EXPORT first, SHUTDOWN last), and the keep_postgres_product carve-out that protects the customer-facing managed-Postgres product from the internal-storage shutdown. - LLM.md — narrative + how to read the chart. - scripts/pg-export.sh — safe first step: kubectl-exec pg_dump every internal DB to the operator desktop, verified, before any migration. Read-only on source; dumps are gitignored (never committed).
1.6 KiB
hanzoai/migration
Migration & decommission plan of record for Hanzo V8 "Open Cloud" — one
unified Go binary (ghcr.io/hanzoai/cloud) that go:embeds the console2 SPA,
every capability in the FE (console2) or BE (cloud), all-SQLite (no internal
Postgres), collapsed to one Service / one origin, all live in production.
What's here
| File | Role |
|---|---|
migration.yaml |
The chart (single source of truth): the migration matrix, the ordered execution list, and the Postgres decommission runbook. |
LLM.md |
The narrative — what V8 is, where we are (~40%), the four load-bearing gaps, how to read the chart. |
scripts/pg-export.sh |
The safe first step — pg_dump every internal DB to the operator desktop before any migration. |
Status: ~40%
The unified binary is live and healthy (api.cloud.hanzo.ai/v1/health → ok,
SQLite-backed, Postgres refused at boot). The go:embed mechanism is wired and
tested. Still ahead: the real SPA embed, the RED cloud build, the Postgres
shutdown (code-ready, not executed in GitOps), and the FE→BE contract fixes.
The rule that protects customers
All-SQLite is about internal storage. The customer-facing managed-Postgres
product (the pgx provisioner + Neon cloud-sql) stays. The sql StatefulSet is
both — carve out the product role before any shutdown (see keep_postgres_product
and step 2 of the decommission runbook). Nothing is killed before a verified
replacement and a verified backup.
Order of operations
migration.yaml:execution, rank 1 first. Export before flip; shutdown dead last.