81 lines
4.3 KiB
Markdown
81 lines
4.3 KiB
Markdown
# GCP leoclean migration goal
|
|
|
|
## Objective
|
|
|
|
Deploy and prove Leo's least-privilege Hermes/leoclean runtime in GCP staging
|
|
against canonical Cloud SQL, establish behavioral and database parity, connect
|
|
the protected Observatory to canonical/proposal/vector/runtime receipts, then
|
|
cut over safely and retire the VPS after soak.
|
|
|
|
## Architecture baseline
|
|
|
|
- Hermes with the `leoclean` profile remains Leo's intended runtime.
|
|
- Cloud SQL is canonical PostgreSQL authority.
|
|
- The protected Observatory is a separate frontend surface.
|
|
- The VPS remains untouched until an explicitly approved, parity-proven
|
|
cutover and retirement sequence.
|
|
|
|
## Current state
|
|
|
|
- Complete: PR #179 least-privilege PostgreSQL authority is merged on main.
|
|
- Complete: the revision-bound, structurally no-send runtime from PR #183 is
|
|
merged into `main` at `2d88c9765bd9b43641d1efb04a1118c5ce0bce39`.
|
|
- Complete: PR #182 head
|
|
`3e59845454f5315e955734db7fe598ec4ba4cf70` was merged with merge commit
|
|
`94a8160ceeb6821fd113f4c843f024d5de99939a` after all five checks passed.
|
|
- Complete: PR #202 remained the exact reviewed three-file QEMU/PID-1
|
|
correction at `ffe170007d0e20d77a5208263e5b33fc999139fc` after retargeting
|
|
to `main`, then merged with merge commit
|
|
`383996a43beebef57cf84a2ced53213e28a41dca` after all five checks passed.
|
|
- PR #193 is source material only. It must not be merged wholesale; only the
|
|
required identity-binding and OCI-lifecycle corrections belong in the narrow
|
|
#182/#183 stack.
|
|
- Complete through PR #182 head `3e59845`: the narrow package
|
|
correction binds every packaged and synthetic-identity source byte to its
|
|
reviewed Git blob; container health binds the packaged/live config plus the
|
|
exact sealed no-send tool and plugin surface; and the disposable image smoke
|
|
also binds the implicit root bootstrap user, entrypoint, command, healthcheck,
|
|
and stop signal. The focused package/runtime/identity/OCI suite passed 204
|
|
tests, the repository suite passed 2,338 with 3 skips, and one exact-revision
|
|
synthetic `linux/amd64` OCI lifecycle proved UID/GID `65532`, zero runtime
|
|
capabilities, no-send health, and complete candidate cleanup on the arm64 Mac
|
|
Docker daemon. No GCP or live service was contacted.
|
|
- In progress from exact current-main base
|
|
`383996a43beebef57cf84a2ced53213e28a41dca`: make release finalization
|
|
pull and inspect the exact immutable staging digest and refuse release/unit
|
|
output unless the repository binding, `linux/amd64` platform, config digest,
|
|
complete labels, runtime configuration, input hash, and source revision all
|
|
match. Trust-bound JSON is strict, release publication is atomic and
|
|
no-clobber, and failure rollback re-fsyncs its output parent. This slice does
|
|
not build, push, install, or deploy an image and has not accessed Artifact
|
|
Registry or GCP.
|
|
- Current gate: finish exact-revision offline tests, then stop for separate
|
|
branch-publication and human-review approval. Remote registry inspection is
|
|
a later, separately authorized live-read gate.
|
|
- Not yet live-proven: staging VM/container engine, IAM/Secret Manager, Cloud
|
|
SQL effective identity, restart behavior, or model/database parity.
|
|
|
|
## Remaining order
|
|
|
|
1. Finish, publish, and obtain exact-revision human review for immutable image
|
|
inspection and release finalization.
|
|
2. Add the structured build/push receipt producer that supplies the independently
|
|
reviewed manifest and config digests consumed by finalization.
|
|
3. Add the separate fail-closed installer/restart/verification/rollback slice
|
|
that consumes the exact inspection-bound release bundle.
|
|
4. Run the read-only Artifact Registry and
|
|
`teleo-staging-1` host/engine/service-account preflight.
|
|
5. Provision the scoped Cloud SQL role/secret and deploy the separate staging
|
|
service.
|
|
6. Prove effective identity, reads, function-only proposal staging, denied
|
|
writes/escalation, receipts, restart stability, and rollback.
|
|
7. Run behavioral and database parity backtesting.
|
|
8. Connect the protected Observatory to canonical claims, proposals, pgvector
|
|
projection, and runtime receipts.
|
|
9. Cut over, soak, restore-test, revoke VPS credentials, and retire the VPS.
|
|
|
|
## Current live-action boundary
|
|
|
|
No merge, Artifact Registry push, GCP/Cloud SQL/Secret Manager mutation,
|
|
service deployment/restart, Telegram change, production promotion, canonical
|
|
proposal apply, or VPS access is part of the current offline corrective slice.
|