6.6 KiB
GCP-native Leo goal
Outcome
Run Leo's Hermes leoclean runtime as a fresh GCP service, backed by the V3
LivingIP knowledge base in canonical Cloud SQL, and route Telegram directly to
that verified GCP service.
This is not a VPS lift-and-shift. The existing VPS is never copied into or run inside GCP. It remains untouched as a temporary comparison and rollback source until the GCP service has passed soak and restore testing.
Target architecture
- An immutable
leocleanimage is pulled from Artifact Registry by digest. - A dedicated GCP service runs Hermes with the
leocleanprofile. - Cloud SQL PostgreSQL 16 is the canonical V3 knowledge authority.
- Secret Manager supplies only the scoped
leoclean_kb_runtimecredential. - Leo reads canonical knowledge and stages proposals only through
kb_stage.stage_leoclean_proposal(...). - Telegram delivery terminates at the verified GCP service.
- The protected Observatory remains a separate follow-up surface over canonical, proposal, vector, and runtime receipts.
Current state
- Current main/base:
3d35a7fafb41b61a94cb75de9c231afdc08b7f2b. - PRs #220, #221, #226, #227, #228, #229, #230, and #231 are merged. Main
therefore contains the source-first V3 rebuild foundation, the PostgreSQL
least-privilege boundary, the exact-revision publication workflow, the
hardened no-send installer with automatic transaction rollback, and the
container-bound
verify-databasecommand. - The exact-main GCP preflight passed for
3d35a7f:teleo-staging-1and the private PostgreSQL 16 Cloud SQL endpoint were reachable, Artifact Registry was immutable, and neither the VM nor Cloud SQL had a public attachment. - Manual publication run #4 passed for that exact revision. The retained GitHub
artifact archive hashes to
sha256:dbe7a34f2c03e2240de54c40afe0aefae00013dff51e17913140fa38f6e119ea. Its self-hashed publication journal recordsfresh_push, not reuse or reconciliation, and binds release hash3e7b00d5ac12308cfc35e3b507258b659e6d95926f3c6241f67240d44105b72f. - Artifact Registry independently reports immutable manifest digest
sha256:c69781400eecd5d2a932b9c7c988ed460365b8bc3f592fe95e51e4c1edf7b230and config digestsha256:c5fc9e715bcbee7d4fcc512b0c38aa4acee589836fbc11dbe9c6c34194959438, with the expected revision, input, artifact, identity, runtime, and target labels. The release descriptor and build/push receipt validate against current package code. - A read-only IAM check confirms the scoped runtime secret exists with one
enabled version, grants
roles/secretmanager.secretAccessoronly tosa-teleo-staging-vm, and the administrator secret does not grant that VM access. The VM also has repository-level Artifact Registry reader and no detected project-level role. - The native PostgreSQL
leoclean_kb_runtimerole and password match remain unproven. Cloud SQL control-plane user listing is not authoritative for native PostgreSQL roles; the container-bound permission verifier is the intended proof. - Branch
feat/leoclean-iap-installer-runnernow contains the local review candidate for the fixed-target IAP transfer/pull/install/restart/verify runner and receipt-bound post-success rollback. It remains unmerged and has not been used against GCP. The proportional suite passes 308 tests; the full suite passes 3,013 tests with 3 skips when the repository's Python 3.11 environment is first onPATH. - Installation of the no-send service, effective running-process identity, database permissions, restart behavior, and post-success rollback remain unproven.
- The source-first V3 reconstruction code is on main, but no canonical GCP promotion is implied by that merge.
- Telegram still does not route to GCP. The VPS, production traffic, and canonical proposal approvals remain untouched.
Execution order
- Completed: merge the container-bound database verifier, run its disposable PostgreSQL and OCI fail-closed tests, publish the exact-main candidate, retain the complete artifact, and cross-check its receipts and registry digests.
- Local implementation complete; review and merge the narrow fixed-target IAP transfer/install/restart/verify runner plus receipt-bound post-success rollback. It consumes only the finalized release artifact and expected hashes, pulls only the immutable digest, preserves ephemeral credential cleanup, and emits sanitized self-hashed receipts.
- Prove or provision
leoclean_kb_runtime. The VM already has access only to the scoped secret; verify that secret matches the native role, allowed reads, transaction-rolled-back function-only proposal staging, and denied writes or escalation. - Install the exact immutable image as a separate no-send GCP service. Bind systemd, PID/invocation, full container ID, image/config digests, and the container database receipt; restart once and then execute the reviewed post-success rollback proof.
- Reconstruct or reconcile the V3 knowledge database into a separately identified canonical candidate and prove row/hash/source receipts before any promotion.
- Bind the GCP runtime to the verified V3 canonical database and run database and behavioral parity checks without Telegram sends.
- Switch Telegram delivery to the GCP service only after a separate human authorization, prove real response receipts, soak, restart, and restore behavior, and retain an immediate rollback path.
- Revoke obsolete runtime credentials after soak. VPS destruction remains a separate explicit decision.
Authority and rollback boundaries
- Database role provisioning can be rolled back independently by revoking the runtime role and removing its scoped secret access.
- Service deployment can be rolled back independently to the prior immutable image or stopped without changing canonical data.
- V3 database promotion requires a pre-promotion backup and exact reconciliation receipt; it does not imply Telegram cutover.
- Telegram routing is the final reversible switch and happens only after the no-send service, V3 data, restart, and rollback proofs pass.
- Canonical proposal approval, Observatory deployment, vector-backend choice, and irreversible VPS deletion are not part of the current deployment slice.
Human gates
The container verifier and deployment runner each require exact-revision human review before merge. Publication, GCP role/IAM mutation, live no-send service installation, V3 canonical promotion, and Telegram cutover remain distinct critical gates. Evidence from tests or agent review is advisory; the exact revision and live receipts must be presented to the human development lead at each gate.