2.2 KiB
GCP Canonical Postgres Restore Preflight
Status: local restore preflight passes; GCP restore and Cory replay are not proven.
The canonical source is VPS Docker Postgres teleo-pg/teleo, not the legacy
SQLite pipeline database. A custom dump and full manifest were captured from
one exported, repeatable-read, read-only snapshot.
| Check | Result |
|---|---|
| Dump | 13,462,116 bytes; SHA-256 055e9bcd8922dbbd8a600be627c5a8f2d4a1329b383c3d9f5c28f325f6db5756 |
| Dump catalog | 294 objects; 39 table-data objects; 113 constraints; 75 indexes |
| Full database | 39 tables; 52,164 rows |
| Row parity | 39/39 tables; zero count or row-hash mismatches |
| Catalog parity | schemas, columns/defaults, constraints, indexes, sequences, views, functions, triggers, types, policies, and extensions match |
| Role parity | required password-free kb_apply attributes match |
| Performance | four bounded claim/evidence/edge/proposal queries; zero threshold failures |
| Production safety | Leo PID 2999690; NRestarts=0; state unchanged; no DB write; no Telegram send |
| Cleanup | all local disposable containers/volumes and remote temp files removed |
The first hash attempt correctly detected four apparent staging-table
mismatches that row counts missed. Investigation showed identical bytes ordered
under different libc collations. The production verifier now forces COLLATE "C", after which the exact exported snapshot restores with zero mismatches.
GCP Gate
sa-artifact-builderauthenticates through GitHub WIF but is intentionally Artifact Registry-only.sa-teleo-readinessandsa-teleo-restore-drilldo not exist; token exchange returns IAM 404.- The privileged local/Console identity requires the operator's Google password reauthentication.
- Direct SSH is closed because the current egress IP is not the configured
/32; IAP requires the same privileged authentication.
After legitimate authentication, the remaining canary is one bounded flow: generated Cloud SQL database -> exact dump import -> manifest and private TLS readback from staging compute -> no-send 34/34 Cory composition replay -> delete generated database and object -> retain cleanup proof.