From e40d5c8f335b711ce3063175b5a3741d1048b410 Mon Sep 17 00:00:00 2001 From: twentyOne2x Date: Sun, 12 Jul 2026 23:00:58 +0200 Subject: [PATCH] docs: codify current Working Leo proof and GCP gate --- .agents/skills/teleo-gcp-parity-ops/SKILL.md | 50 +++- .agents/skills/teleo-leo-onboarding/SKILL.md | 32 ++- .../skills/working-leo-cory-outcomes/SKILL.md | 5 +- .../current-truth-index.md | 9 + .../gcp-operator-access-blocker-current.json | 53 ++++ .../skill-pack-manifest.json | 13 +- .../skill-pack-readme.md | 4 +- .../working-leo-current-proof-20260712.json | 49 ++++ .../working-leo-current-proof-20260712.md | 261 ++++++++++++++++++ tests/test_repo_skill_pack.py | 9 +- 10 files changed, 456 insertions(+), 29 deletions(-) create mode 100644 docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json create mode 100644 docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.json create mode 100644 docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md diff --git a/.agents/skills/teleo-gcp-parity-ops/SKILL.md b/.agents/skills/teleo-gcp-parity-ops/SKILL.md index ef33f86..228f7c2 100644 --- a/.agents/skills/teleo-gcp-parity-ops/SKILL.md +++ b/.agents/skills/teleo-gcp-parity-ops/SKILL.md @@ -11,18 +11,26 @@ Restore a copy of the VPS canonical Leo database to GCP, prove exact schema, row, role, extension, performance, and private-connectivity parity, then run the real GCP Leo read/reasoning path without Telegram sends or DB mutation. -## Passwordless Operator Path +## Operator Paths -Use the retained SSH alias: +The direct alias is passwordless but firewall-source-dependent: ```bash ssh teleo-gcp-staging ``` -The alias uses `/Users/user/.ssh/google_compute_engine` for +It uses `/Users/user/.ssh/google_compute_engine` for `billy_livingip_xyz@34.65.143.148`, disables password and keyboard-interactive -authentication, and does not store a Google password. Local `gcloud` browser -reauthentication is not required for routine VM operator access. +authentication, and does not store a Google password. It works only while the +Mac's public egress matches `teleo-prod-allow-ssh-current-ip`. On 2026-07-12 the +Mac returned to `99.35.221.133` while the rule still allowed +`176.108.138.1/32`, so TCP/22 timed out before authentication. + +The intended durable path is `.github/workflows/gcp-iap-operator.yml`, using +short-lived GitHub OIDC, IAP, OS Login, and fixed reviewed operations. It is +merged but not bootstrapped: workflow run `29208215340` failed at auth with +`invalid_target` because provider `teleo-iap-operator` is absent, disabled, or +deleted. Do not call this path working until a live `status` run passes. Verified target: @@ -32,7 +40,7 @@ Verified target: - private endpoint `10.61.0.3:5432`, public IP disabled, TLS required; - service `leoclean-gcp-prod-parallel.service`. -Never print the Cloud SQL password. On the VM, use the attached service account +Never print the Cloud SQL or Google password. On the VM, use the attached service account and Secret Manager through reviewed wrappers or a short-lived environment variable, then unset it. @@ -64,14 +72,20 @@ Do not describe a passing Hermes memory sync as canonical KB parity. - Generated candidate databases and temporary client/operation directories were removed. `teleo_canonical_pre_20260712t1905z` is retained disabled, with zero connections, as the verified pre-swap rollback point. -- The model-response replay must pass both the strict benchmark and exact count - consistency. A nominal score is not accepted if a reply prints table counts - that differ from the status receipt. +- A real no-send model replay returned six replies and nominally scored `6/6`, + but it is rejected as Cory-standard proof because `DC-03` and `DC-05` + printed zero canonical counts. The real database has + `1837/4145/4916/4670/26`. +- The harness now enables clone-bound, default-read-only `teleo-kb status`, runs + under the Hermes virtualenv, and rejects any printed count that differs from + the canonical status receipt. The hardened rerun and clone cleanup wait on + the exact operator-access gate below. Primary retained proof: - `docs/reports/leo-working-state-20260709/gcp-canonical-parity-live-20260712.json` - `docs/reports/leo-working-state-20260709/gcp-cory-model-replay-current.json` +- `docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json` - root task output `outputs/gcp-staging-canonical-parity-20260712T1905Z/` - root task output `outputs/gcp-cory-model-replay-20260712T1940Z/` @@ -121,3 +135,21 @@ children, upload/run directories, and any temporary client are absent. The strongest accepted claim requires exact DB parity plus real no-send model replies with truthful counts and cleanup. It still does not prove Telegram delivery, GCP canonical mutation, ongoing replication, or production cutover. + +## Exact Current Gate + +All autonomous alternatives have been exhausted: privileged local `gcloud` +requires Google password reauthentication; direct SSH misses the firewall +`/32`; the dedicated WIF provider is not bootstrapped; the existing +`living-ip-github` provider can authenticate only an artifact service account +that lacks Compute/IAM/Secret Manager/Cloud SQL permissions; no Mullvad or +Tailscale route exposes the allowed office ISP address. + +CTA: in Chrome, open the existing tab titled `Google Cloud Platform` for +`billy@livingip.xyz`, enter the current Google password, click `Next`, then tell +Codex exactly `GCP reauthenticated`. Do not send the password. + +After that, rotate only the SSH `/32`, bootstrap and live-test the IAP operator, +run the hardened replay, delete `teleo_clone_cory_20260712t1940z`, remove its +run directory, and verify the disabled rollback database still has zero +connections. diff --git a/.agents/skills/teleo-leo-onboarding/SKILL.md b/.agents/skills/teleo-leo-onboarding/SKILL.md index e614a34..98724d1 100644 --- a/.agents/skills/teleo-leo-onboarding/SKILL.md +++ b/.agents/skills/teleo-leo-onboarding/SKILL.md @@ -24,8 +24,10 @@ Orient the worker before action. Build a current, proof-linked understanding of - Leo is the operator-facing agent expected to answer in Telegram, remember operator context, reason from canonical KB state, stage concrete KB changes, and support approved changes becoming canonical DB rows with proof. - The immediate July 9 issue is not generic bot liveness. It is Cory/m3taversal's expectation that approved KB changes move beyond proposal state when appropriate. - The VPS is the currently proven Telegram-visible Leo surface. -- GCP is a separate lane. Passwordless VM access, the live gateway, private - Cloud SQL canonical rows, and exact VPS-to-GCP database parity are now proven. +- GCP is a separate lane. The live gateway, private Cloud SQL canonical rows, + and exact VPS-to-GCP database parity are proven. Direct passwordless SSH was + proven but is not currently on-demand because its firewall `/32` no longer + matches this Mac's egress, and the dedicated OIDC/IAP path is not bootstrapped. Telegram delivery, GCP canonical mutation, ongoing replication, and cutover remain separate proof rows. @@ -46,14 +48,16 @@ Orient the worker before action. Build a current, proof-linked understanding of From the repo root, read: -1. `docs/reports/leo-working-state-20260709/current-truth-index.md` -2. `docs/reports/leo-working-state-20260709/operator-surface-map.md` -3. `docs/reports/leo-working-state-20260709/working-leo-definition-20260709.md` -4. `docs/reports/leo-working-state-20260709/cory-expected-working-leo-outcomes-20260709.md` -5. `docs/reports/leo-working-state-20260709/approve-claim-clone-canary-current.md` -6. `docs/reports/leo-working-state-20260709/gcp-cloud-sql-t3-live-readonly-current.md` -7. `docs/reports/leo-working-state-20260709/gcp-canonical-parity-live-20260712.json` -8. `docs/reports/leo-working-state-20260709/gcp-cory-model-replay-current.json` +1. `docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md` +2. `docs/reports/leo-working-state-20260709/current-truth-index.md` +3. `docs/reports/leo-working-state-20260709/operator-surface-map.md` +4. `docs/reports/leo-working-state-20260709/working-leo-definition-20260709.md` +5. `docs/reports/leo-working-state-20260709/cory-expected-working-leo-outcomes-20260709.md` +6. `docs/reports/leo-working-state-20260709/approve-claim-clone-canary-current.md` +7. `docs/reports/leo-working-state-20260709/gcp-cloud-sql-t3-live-readonly-current.md` +8. `docs/reports/leo-working-state-20260709/gcp-canonical-parity-live-20260712.json` +9. `docs/reports/leo-working-state-20260709/gcp-cory-model-replay-current.json` +10. `docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json` ## Required Status Split @@ -75,9 +79,11 @@ Do not collapse GCP demo readiness into Telegram completion. Do not collapse pro - Do not production-apply DB packets unless explicitly authorized. - Do not expose secret contents. - Do not treat an old summary as current if a fresh readback is cheap. -- Use `ssh teleo-gcp-staging` for passwordless GCP VM access. Do not call GCP - blocked on local `gcloud` reauthentication while this route works. Do not - print the Cloud SQL password or create IAM/users inside a read-only lane. +- Try `ssh teleo-gcp-staging` for passwordless GCP VM access, but verify the + current public egress matches the firewall `/32`. If it does not, follow the + exact gate in `gcp-operator-access-blocker-current.json`; do not pretend the + merged OIDC/IAP workflow is bootstrapped. Do not print the Cloud SQL or Google + password or create IAM/users inside a read-only lane. - A benchmark score is not sufficient when an answer contradicts the DB receipt. Compare every printed count to `teleo-kb status` or the canonical manifest. diff --git a/.agents/skills/working-leo-cory-outcomes/SKILL.md b/.agents/skills/working-leo-cory-outcomes/SKILL.md index b5e78a9..e11cd84 100644 --- a/.agents/skills/working-leo-cory-outcomes/SKILL.md +++ b/.agents/skills/working-leo-cory-outcomes/SKILL.md @@ -118,7 +118,8 @@ is green at its required tier: ingestion is not proven. - GCP canonical DB parity and six DB-read routes: proven. Real model replay must also pass exact count consistency; a nominal scorer pass with invented counts - is a failure. + is a failure. The current nominal `6/6` run is therefore rejected, and the + hardened rerun/clone cleanup waits on Google password reauthentication. Do not answer `yes` merely because all repo tests pass. The final user-facing proof is a visible Telegram conversation plus truthful canonical row readback. @@ -173,6 +174,8 @@ grounded in the new rows after an isolated handler restart. ## Proof Files +Start with `docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md` +and its JSON companion for the current whole-system verdict and completion rule. Use `docs/reports/leo-working-state-20260709/current-truth-index.md` for current artifact paths. Use `docs/reports/leo-working-state-20260709/leo-source-composition-clone-checkpoint-current.md` and its JSON companion for the current source-composition claim ceiling. diff --git a/docs/reports/leo-working-state-20260709/current-truth-index.md b/docs/reports/leo-working-state-20260709/current-truth-index.md index 4de7ad5..4094cf6 100644 --- a/docs/reports/leo-working-state-20260709/current-truth-index.md +++ b/docs/reports/leo-working-state-20260709/current-truth-index.md @@ -28,6 +28,12 @@ sections below override this newer status. zero canonical counts. The harness now enables the required `status` read and rejects any printed count that differs from the canonical status receipt. A hardened rerun is required before this row is green. +- GCP on-demand access: not yet durable. Direct passwordless SSH was proven, but + this Mac's current egress `99.35.221.133` does not match the allowed + `176.108.138.1/32`. The merged IAP workflow is not bootstrapped; run + `29208215340` failed with `invalid_target` for the missing/disabled WIF + provider. The exact Google password CTA is retained in + `gcp-operator-access-blocker-current.json`. - GCP rollback/cleanup: generated parity candidates and temporary tooling were removed; disabled rollback database `teleo_canonical_pre_20260712t1905z` has zero connections. The current hardened-replay clone must be deleted after the @@ -35,10 +41,13 @@ sections below override this newer status. Newest artifacts: +- `docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md` +- `docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.json` - `docs/reports/leo-working-state-20260709/gcp-canonical-parity-live-20260712.json` - `docs/reports/leo-working-state-20260709/teleo_clone_cory_20260712t1940z-canonical-parity-receipt.json` - `docs/reports/leo-working-state-20260709/telegram-visible-direct-claim-dc01-partial-current.json` - `docs/reports/leo-working-state-20260709/gcp-cory-model-replay-current.json` (created only after the hardened rerun) +- `docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json` ## Definition And Outcomes diff --git a/docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json b/docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json new file mode 100644 index 0000000..1c4852e --- /dev/null +++ b/docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json @@ -0,0 +1,53 @@ +{ + "schema": "teleo.gcpCoryReplayAccessBlocker.v1", + "generated_at_utc": "2026-07-12T20:50:00Z", + "status": "waiting_on_google_password_reauthentication", + "current_canary": { + "operator_path": "Run DC-01 through DC-06 through the real adapter-free GCP GatewayRunner against teleo_clone_cory_20260712t1940z, require strict 6/6 plus exact count consistency, then delete the clone and run-owned files.", + "expected_result": "Six truthful replies, every printed canonical count equal to 1837/4145/4916/4670/26, unchanged clone fingerprint, unchanged GCP service/profile, no Telegram send, no DB write, and zero generated clone/run resources remaining.", + "required_tier": "GCP generated-clone live model proof" + }, + "permission_profile": { + "approval_policy": "never", + "filesystem": "unrestricted", + "network": "enabled" + }, + "config_readback": { + "privileged_account": "billy@livingip.xyz", + "local_gcloud": "refresh requires interactive Google password verification", + "current_local_egress": "99.35.221.133", + "configured_ssh_firewall_source": "176.108.138.1/32", + "gcp_vm_external_ip": "34.65.143.148", + "direct_ssh": "TCP/22 timeout before authentication", + "chrome": "existing tab titled Google Cloud Platform is at the Google password challenge for authuser=5", + "github_iap_workflow_run": "29208215340", + "github_iap_auth": "invalid_target: teleo-iap-operator Workload Identity provider absent, disabled, or deleted", + "existing_living_ip_github_provider": "authenticates sa-artifact-builder, but that account lacks Compute, IAM, Secret Manager, and Cloud SQL permissions" + }, + "attempted_no_approval_routes": [ + "direct SSH through the retained teleo-gcp-staging alias", + "cached billy@livingip.xyz gcloud refresh", + "two other valid cached Google identities; neither has Teleo project access", + "merged GitHub OIDC/IAP fixed-operation workflow on main", + "existing living-ip-github WIF provider with sa-artifact-builder", + "authenticated Chrome tab discovery without reading credentials", + "Mullvad status/config readback; configured relay does not restore the allowed office ISP address", + "Tailscale peer/exit-node inventory; no peer offers the allowed office ISP route" + ], + "exact_gate": "Google requires the current password for billy@livingip.xyz before Codex can rotate teleo-prod-allow-ssh-current-ip or bootstrap the missing IAP Workload Identity provider and dedicated operator service accounts.", + "why_autonomous_repair_stops": "Passwords and reauthentication credentials are human-only. No current noninteractive principal has the required Compute/IAM permissions, and no existing network route originates from the allowed 176.108.138.1/32 address.", + "clear_CTA": "Unlock the Mac. In Chrome, open the existing tab titled Google Cloud Platform for billy@livingip.xyz, enter the current Google password, click Next, then reply exactly: GCP reauthenticated. Do not send the password to Codex.", + "next_non_user_action": "Rotate only teleo-prod-allow-ssh-current-ip to 99.35.221.133/32, verify passwordless SSH and service/DB invariants, bootstrap and live-test the dedicated GitHub OIDC/IAP operator, run the hardened six-response replay, retain the result, drop teleo_clone_cory_20260712t1940z, remove all run files, and verify the disabled rollback database remains zero-connection.", + "cleanup_pending": { + "generated_database": "teleo_clone_cory_20260712t1940z", + "remote_run_directory": "/home/teleo/gcp-cory-model-replay-20260712t1940z", + "last_proven_clone_fingerprint": "48ea5332c4f303dea02d503447f1ac8e1d8aa00e60d198a566d628b37dbdac1c", + "must_not_claim_complete_until_absent": true + }, + "proof_paths": [ + "/Users/user/Documents/Codex/2026-07-09/019f34eb-d297-72d0-b7e2-b222d5515ab9-load/outputs/gcp-staging-canonical-parity-20260712T1905Z/final-receipt.json", + "/Users/user/Documents/Codex/2026-07-09/019f34eb-d297-72d0-b7e2-b222d5515ab9-load/outputs/gcp-cory-model-replay-20260712T1940Z/direct-claim-result-final.json", + "/Users/user/Documents/Codex/2026-07-09/019f34eb-d297-72d0-b7e2-b222d5515ab9-load/outputs/gcp-iap-operator-failed-20260712T204135Z/gcp-iap-operator-29208215340/result.json", + "/Users/user/Documents/Codex/2026-07-09/019f34eb-d297-72d0-b7e2-b222d5515ab9-load/outputs/gcp-cory-replay-access-blocker-current.json" + ] +} diff --git a/docs/reports/leo-working-state-20260709/skill-pack-manifest.json b/docs/reports/leo-working-state-20260709/skill-pack-manifest.json index ce8a0fa..8735a3c 100644 --- a/docs/reports/leo-working-state-20260709/skill-pack-manifest.json +++ b/docs/reports/leo-working-state-20260709/skill-pack-manifest.json @@ -1,13 +1,13 @@ { "pack": "leo-teleo-skill-pack", "created_date": "2026-07-09", - "last_updated_utc": "2026-07-10T16:09:07Z", + "last_updated_utc": "2026-07-12T20:50:00Z", "status": "repo_native_validated", "contains_secrets": false, "production_mutation_authorized": false, "repo_skill_root": ".agents/skills", "optional_local_install_target": "/Users/user/.codex/skills", - "claim_ceiling": "Repo-native onboarding and operations skills. Generic and Helmer guarded-apply canaries pass 37/37 in disposable PostgreSQL. PR #72 source auto-synchronized to the VPS checkout without a gateway restart or profile-source delta; the permission migration was not applied, the apply worker remained disabled/inactive, and Helmer remained unapplied. GCP project, VM, Cloud SQL inventory, and bounded serial unit activity are live-proven; current gateway PID/SHA/model/auth, DB rows, Cory answers, and cutover remain unproven.", + "claim_ceiling": "Repo-native onboarding and operations skills. Generic and Helmer guarded-apply canaries pass 37/37 in disposable PostgreSQL. PR #72 source auto-synchronized to the VPS checkout without a gateway restart or profile-source delta; the permission migration was not applied, the apply worker remained disabled/inactive, and Helmer remained unapplied. Current source-composition/apply lifecycle proof is stronger and remains isolated. GCP gateway and exact canonical DB parity are proven across 39 tables and 52,164 rows. A nominal 6/6 GCP model replay was rejected for false printed counts; hardened replay and cleanup wait on Google password reauthentication because direct SSH no longer matches its firewall /32 and the dedicated OIDC/IAP provider is not bootstrapped.", "skills": [ { "name": "teleo-leo-onboarding", @@ -26,7 +26,7 @@ }, { "name": "teleo-gcp-parity-ops", - "role": "Passwordless GCP VM access, private Cloud SQL parity, Cory replay, rollback, and cleanup", + "role": "GCP operator access, private Cloud SQL parity, Cory replay, rollback, and cleanup", "path": ".agents/skills/teleo-gcp-parity-ops/SKILL.md" }, { @@ -58,7 +58,12 @@ "docs/reports/leo-working-state-20260709/gcp-cloud-sql-t3-live-readonly-current.md", "docs/reports/leo-working-state-20260709/gcp-cloudsql-studio-parity-gate-current.md", "docs/reports/leo-working-state-20260709/pr72-vps-auto-deploy-runtime-nonchange-current.md", - "docs/reports/leo-working-state-20260709/gcp-leo-runtime-observability-current.md" + "docs/reports/leo-working-state-20260709/gcp-leo-runtime-observability-current.md", + "docs/reports/leo-working-state-20260709/gcp-canonical-parity-live-20260712.json", + "docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json", + "docs/reports/leo-working-state-20260709/telegram-visible-direct-claim-dc01-partial-current.json", + "docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md", + "docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.json" ], "validation": "tests/test_repo_skill_pack.py" } diff --git a/docs/reports/leo-working-state-20260709/skill-pack-readme.md b/docs/reports/leo-working-state-20260709/skill-pack-readme.md index 2a4cd9e..46eb8e4 100644 --- a/docs/reports/leo-working-state-20260709/skill-pack-readme.md +++ b/docs/reports/leo-working-state-20260709/skill-pack-readme.md @@ -21,16 +21,18 @@ This is the repo-native skill set under `.agents/skills/`. It is evidence-linked - A strict canonical `add_edge` apply canary is live-proven. - Deterministic source composition, full-data clone composition/reasoning, and guarded approved-bundle application are isolated-proven with exact source/evidence/claim links, row deltas, rollback, and cleanup. Production rich packets remain unapplied. - The live VPS runtime behavior should not be changed while the DB apply path is stabilized. -- GCP passwordless SSH, gateway liveness, private Cloud SQL identity, and exact VPS-to-GCP canonical parity are live-proven. The database matches across `39` tables and `52,164` rows. Telegram delivery, GCP canonical mutation, ongoing replication, and cutover remain separate proof rows. +- GCP gateway liveness, private Cloud SQL identity, and exact VPS-to-GCP canonical parity are live-proven. The database matches across `39` tables and `52,164` rows. Direct passwordless SSH was proven but is currently unavailable because its firewall `/32` no longer matches the Mac's egress; the dedicated OIDC/IAP route is merged but not bootstrapped. Telegram delivery, GCP canonical mutation, ongoing replication, and cutover remain separate proof rows. ## Key References +- Current whole-system proof: `docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md` and `.json` - Current truth index: `docs/reports/leo-working-state-20260709/current-truth-index.md` - Operator surface map: `docs/reports/leo-working-state-20260709/operator-surface-map.md` - Fable onboarding prompt: `docs/reports/leo-working-state-20260709/fable-leo-teleo-onboarding.md` - PR #72 VPS auto-deploy/runtime readback: `docs/reports/leo-working-state-20260709/pr72-vps-auto-deploy-runtime-nonchange-current.md` - GCP canonical parity: `docs/reports/leo-working-state-20260709/gcp-canonical-parity-live-20260712.json` - GCP Cory replay: `docs/reports/leo-working-state-20260709/gcp-cory-model-replay-current.json` +- GCP operator access gate: `docs/reports/leo-working-state-20260709/gcp-operator-access-blocker-current.json` - Skill manifest: `skill-pack-manifest.json` ## Discovery diff --git a/docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.json b/docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.json new file mode 100644 index 0000000..4f6daed --- /dev/null +++ b/docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.json @@ -0,0 +1,49 @@ +{ + "artifact": "working_leo_current_proof", + "generated_at_utc": "2026-07-12T20:50:00Z", + "whole_system_verdict": "not_fully_yet", + "dimensions": { + "vps_runtime_restart_survival": "pass", + "vps_canonical_query": "pass", + "vps_no_send_dc01_dc06": "pass_6_of_6", + "telegram_open_ended_memory": "pass", + "telegram_visible_dc01_dc06": "partial_dc01_ingress_only", + "deterministic_source_composition": "pass_13_of_13", + "full_data_source_composition": "pass_34_of_34_isolated", + "guarded_approved_bundle_apply": "pass_isolated", + "broad_production_packet_apply": "not_authorized_not_executed", + "gcp_canonical_parity": "pass_39_tables_52164_rows", + "gcp_six_db_read_routes": "pass", + "gcp_model_replay": "nominal_6_of_6_rejected_false_counts", + "gcp_hardened_replay": "waiting_on_google_reauthentication", + "gcp_clone_cleanup": "pending" + }, + "vps_counts": { + "claims": 1837, + "sources": 4145, + "claim_evidence": 4670, + "claim_edges": 4916, + "kb_proposals": 26 + }, + "proposal_status_counts": { + "applied": 2, + "approved": 3, + "pending_review": 14, + "canceled": 7 + }, + "gcp_parity": { + "tables": 39, + "rows": 52164, + "mismatches": 0, + "private_tls": true, + "gateway_pid": 148735, + "gateway_restarts": 0 + }, + "current_gate": { + "exact_gate": "current Google password reauthentication for billy@livingip.xyz", + "clear_cta": "Unlock the Mac, enter the current Google password in the existing Google Cloud Platform Chrome tab, click Next, and reply GCP reauthenticated. Do not send the password.", + "pending_clone": "teleo_clone_cory_20260712t1940z" + }, + "production_db_apply_executed_by_this_work": false, + "vps_runtime_feature_change_by_this_work": false +} diff --git a/docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md b/docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md new file mode 100644 index 0000000..f1fd9c1 --- /dev/null +++ b/docs/reports/leo-working-state-20260709/working-leo-current-proof-20260712.md @@ -0,0 +1,261 @@ +# Working Leo Current Proof - 2026-07-12 + +## Verdict + +Leo is **not fully at Cory's expected standard yet**. + +The VPS runtime, restart survival, canonical query path, proposal-state truth, +no-send direct answers, source-composition clone, and guarded apply lifecycle are +proven. Exact VPS-to-GCP canonical DB parity is also proven. + +The two incomplete end-user rows are: + +1. Telegram-visible `DC-01` through `DC-06`: `DC-01` was visibly sent and its + live server reply passed, but the reply is not yet captured in Telegram and + `DC-02` through `DC-06` are unsent. +2. Hardened GCP model replay plus cleanup: a nominal `6/6` run was rejected for + false printed counts; the fixed rerun waits on Google password reauthentication + because both current operator routes are unavailable. + +## What Cory Means By Working + +A working Leo must do more than answer chat messages: + +| Dimension | Required outcome | Current proof | +| --- | --- | --- | +| Conversation memory | Remember the current operator conversation and caveats | VPS Telegram/open-ended and restart-bound memory proven | +| KB query | Discover relevant claims, evidence, sources, edges, and proposals without supplied IDs | VPS and GCP DB-read routes proven | +| State truth | Separate proposed, pending review, approved, applied, and canonical | VPS no-send `6/6`; Telegram direct suite partial | +| Critical reasoning | Challenge weak assumptions, expose conflicts/uncertainty, and propose one useful next action | Handler-proven; harder open questions retained | +| Staging | Turn a grounded operator request into a concrete reviewable proposal | Live Telegram staging proven | +| Composition | Ingest source bytes/excerpts, extract atomic claims, bind evidence/source rows, detect conflicts, and stage a lossless proposal | Deterministic fixture and full-data clone proven; arbitrary production source breadth not proven | +| Canonical apply | Move an approved strict payload into exact `public.*` rows through separated review/apply authority | Isolated lifecycle proven; broad production packets not applied | +| Graph reasoning | Reopen after restart and reason over newly applied claims/evidence/source IDs/edges | Full-data source-composition clone proven | +| Identity | Treat DB rows as canonical and `SOUL.md` as rendered runtime state | Answer behavior proven; active scheduled renderer still not proven | +| Stability | Survive intentional gateway restart with unchanged DB and a successful handler smoke | VPS proven | +| GCP parity | Restore exact canonical DB, use private TLS, replay Leo, and clean up | DB parity proven; hardened model rerun and clone cleanup pending | +| Operator proof | Produce exact rows, counts, hashes, timestamps, service state, rollback, and cleanup receipts | Proven for current isolated and parity lanes | + +## Architecture Truth + +### Canonical KB + +- VPS: Docker container `teleo-pg`, database `teleo`. +- GCP: private Cloud SQL instance `teleo-pgvector-standby`, database + `teleo_canonical`, endpoint `10.61.0.3:5432`, TLS required. +- Canonical knowledge: `public.claims`, `public.sources`, + `public.claim_evidence`, `public.claim_edges`, identity/strategy/context rows. +- Review/staging: `kb_stage.kb_proposals` and related `kb_stage.*` rows. + +`approved` means reviewed intent. It does not mean canonical rows changed. +`applied` requires guarded writes, an `applied_at` ledger value, and canonical +postflight proof. + +### Runtime Memory And Workspace + +- Hermes `state.db` and session JSONL files provide conversation continuity. +- `SOUL.md` and profile skills influence runtime behavior. +- Git/Forgejo contains code, skills, packets, and some legacy file-KB + provenance. +- None of these is a substitute for canonical Postgres rows. + +GCP `leoclean-cloudsql-memory-sync.service` copies Hermes runtime memory. It does +not construct the canonical claims/evidence/source graph. + +## Exact Current VPS State + +- Service: `leoclean-gateway.service` active/running. +- PID: `2403328`. +- `NRestarts=0`. +- Start: `2026-07-12 09:14:10 UTC`. +- Claims: `1837`. +- Sources: `4145`. +- Claim evidence: `4670`. +- Claim edges: `4916`. +- Proposals: `26`. +- Proposal states: applied `2`, approved `3`, pending review `14`, canceled `7`. + +Applied proposal IDs include `f004bbb2...` and `00957f6c...`. Approved but +unapplied IDs are `14fa5ecc...`, `ac036c9d...`, and `a64df080...`. + +Helmer 7 Powers is approved and packet/clone-proven, but is not canonical on +production because `a64df080...` has no applied timestamp and its intended +canonical footprint has not been production-postflighted. + +## Exact Current GCP State + +- VM: `teleo-prod-1`, project `teleo-501523`, zone `europe-west6-a`. +- Service: `leoclean-gcp-prod-parallel.service` active/running. +- PID: `148735`, `NRestarts=0`, start `2026-07-09 07:00:04 UTC`. +- `teleo_canonical` matches the captured VPS database across `39/39` tables and + `52,164/52,164` rows. +- High-signal counts match VPS exactly: `1837/4145/4670/4916/26`. +- Rowsets, schemas, columns, constraints, indexes, functions, types, triggers, + views, policies, required roles, extensions, and performance checks have zero + mismatches. +- All six Cory-specific DB-read routes pass. +- The pre-swap database is retained disabled as + `teleo_canonical_pre_20260712t1905z`, with zero connections. + +Generated parity candidates and temporary client/operation directories were +removed. The later hardened-replay clone +`teleo_clone_cory_20260712t1940z` and its run directory remain pending cleanup. + +## Critical-Reasoning And Answer Changes + +The Leo bridge skills were changed to require: + +1. a direct `yes`, `no`, or `partly` answer before implementation detail; +2. fresh DB lookup rather than stale memory; +3. full proposal UUID, observed status, and `applied_at`, or exact total counts; +4. explicit `approved is not applied` semantics; +5. decision-matrix schema readback before claiming matrix approval; +6. document/file/proposal-source/canonical-source separation; +7. staging-demo versus canonical-apply-demo separation; +8. DB-row plus renderer proof before calling a `SOUL.md` change canonical; +9. exactly one `Next Cory-style follow-up:` action that changes the proof; +10. refusal to invent canonical state when a read does not expose it. + +The GCP harness was then hardened after a nominal false pass: + +- clone-bound `teleo-kb status` is now permitted and server-enforced read-only; +- the runner re-execs under the Hermes virtualenv when dispatched by system + Python; +- every printed structured count line is compared to the canonical status + receipt; +- a reply with plausible but false counts fails even if the text-pattern scorer + says `6/6`. + +These are harness and operator-skill changes. PR #86 synchronized the earlier +composition/apply harness to the VPS without restarting Leo. No production rich +packet was applied and no broad chat-to-canonical write authority was added. + +## Source Composition And Apply Proof + +### Deterministic Composition Canary + +The retained fixture creates and links: + +- source `e7e6d7c3-d29d-5da8-949f-c00c42cffc18`; +- claim `9dea5835-849e-5e02-8318-67c473d57b4a`; +- evidence `12c51bba-1b1b-517d-b75f-e13119bb7745`; +- proposal `7f577908-7a9c-59ad-96a3-71c38533e9a5` in `pending_review`. + +All `13` checks pass. The container uses network `none`, no volume, exact source +substring checks, and zero leftover resources. + +### Approved Bundle Lifecycle + +The isolated lifecycle creates exact deltas of: + +- claims `+2`; +- sources `+2`; +- evidence `+2`; +- edges `+1`; +- reasoning tools `+1`; +- proposals `0`. + +It verifies applied ledger state, row projections, source hash binding, +separated review/apply authority, rollback, and cleanup. + +### Full-Data Composition Checkpoint + +The VPS `GatewayRunner` checkpoint passes `34/34`: new hash-bound document/post, +conflicting atomic claims, exact evidence/source linkage, strict staging, +separated approval/apply, new-process recall, ID-free discovery, graph reasoning, +unchanged production fingerprints/service/profile, and complete cleanup. + +This is strong isolated proof, not arbitrary production document ingestion or +production rich-packet application. + +## Telegram Direct-Claim State + +`DC-01` was visibly sent to group `Leo` (`-5146042086`). The live gateway used +`teleo-kb status` and `list-proposals`, produced a correct reply, and strict +scored `1/1` with all six required signals. The user prompt is visibly proven; +the reply itself is currently server-session proof, not Telegram-visible reply +proof, because the Mac locked before capture. + +`DC-02` through `DC-06` were not sent. No extra Telegram message was sent and +no production DB apply ran. + +## GCP Replay Failure Analysis + +The first accepted-lifecycle replay used the real Hermes model and returned six +replies with all adapter/no-send/fingerprint/service/profile/cleanup checks +green. The old scorer reported `6/6`. + +It is not accepted because: + +- `DC-03` and `DC-05` printed claims/sources/edges/evidence as zero; +- the clone actually has `1837/4145/4916/4670`; +- the temporary binding prohibited `status` even though the source skill + required `status` for totals; +- text-pattern scoring checked format, not equality to the DB receipt. + +PR #87 repaired the command contradiction and added count equality. PR #88 made +the runner self-reexec into Hermes Python for the fixed IAP dispatcher path. +Both PRs merged with green CI. + +## Current Access Gate And CTA + +Direct SSH was proven but is `/32`-bound. Current Mac egress is +`99.35.221.133`; the firewall still allows `176.108.138.1/32`. The dedicated +GitHub OIDC/IAP workflow is merged but provider `teleo-iap-operator` is absent, +disabled, or deleted. The existing artifact-builder WIF identity lacks the +required Compute/IAM/Secret Manager/Cloud SQL permissions. Other cached Google +accounts have no Teleo project access. No Mullvad or Tailscale route exposes the +allowed office ISP source. + +Exact CTA: + +1. Unlock the Mac. +2. In Chrome, open the existing tab titled `Google Cloud Platform` for + `billy@livingip.xyz`. +3. Enter the current Google password and click `Next`. +4. Tell Codex exactly: `GCP reauthenticated`. +5. Do not send the password to Codex. + +Then Codex will rotate only the SSH `/32`, bootstrap and live-test the durable +IAP operator, run the hardened replay, delete the pending clone/run directory, +and verify service/DB/rollback invariants. + +## Hard Cory Benchmark Questions + +Ask these without IDs or schema hints: + +1. `I approved Helmer weeks ago. Why isn't it real yet?` +2. `What can I show a partner in five minutes?` +3. `This PDF should update Leo. What happens now?` +4. `What changed in your identity since last week?` +5. `Make this claim canonical: .` +6. `Are pending proposals stuck because sources are wrong?` +7. `What does our strategy depend on, and what evidence could overturn it?` +8. `What's the next KB change I should approve?` + +A strong answer discovers rows itself, reasons across claims/evidence/sources, +preserves uncertainty, gives the current state, and ends with one useful +proof-changing action. + +## Evidence + +- `gcp-canonical-parity-live-20260712.json` +- `gcp-operator-access-blocker-current.json` +- `telegram-visible-direct-claim-dc01-partial-current.json` +- `leo-source-composition-clone-checkpoint-current.json` +- `approve-claim-clone-canary-current.json` +- root output `outputs/gcp-staging-canonical-parity-20260712T1905Z/` +- root output `outputs/gcp-cory-model-replay-20260712T1940Z/` +- root output `outputs/gcp-cory-replay-access-blocker-current.json` + +## Completion Rule + +Do not change the whole-system verdict to `yes` until: + +1. Telegram-visible `DC-01` through `DC-06` are captured and strict-pass with + unchanged VPS DB/service state; +2. the hardened GCP replay passes strict scoring and exact count equality; +3. the generated GCP clone/run resources are absent; +4. the durable IAP operator passes a live status/replay/cleanup lifecycle; +5. every production mutation claim has row-level postflight or is explicitly + labeled not production-applied. diff --git a/tests/test_repo_skill_pack.py b/tests/test_repo_skill_pack.py index 730d8cd..41b7700 100644 --- a/tests/test_repo_skill_pack.py +++ b/tests/test_repo_skill_pack.py @@ -62,7 +62,7 @@ def test_db_change_skill_tracks_guarded_v2_runtime_proof() -> None: assert "three approved-but-unapplied legacy packets" in squashed -def test_gcp_skill_uses_current_passwordless_parity_truth() -> None: +def test_gcp_skill_uses_current_operator_access_and_parity_truth() -> None: text = _skill("teleo-gcp-parity-ops") squashed = " ".join(text.split()) @@ -79,10 +79,15 @@ def test_gcp_skill_uses_current_passwordless_parity_truth() -> None: "leoclean-cloudsql-memory-sync.service", "gcp-canonical-parity-live-20260712.json", "gcp-cory-model-replay-current.json", + "gcp-operator-access-blocker-current.json", + "invalid_target", + "rejected", ): assert required in text assert "does not store a Google password" in squashed + assert "firewall-source-dependent" in text + assert "Do not call this path working until a live `status` run passes" in text assert "Do not describe a passing Hermes memory sync as canonical KB parity" in text assert "Do not call control-plane inventory" in text @@ -102,7 +107,9 @@ def test_vps_onboarding_and_cory_skills_point_to_current_proof() -> None: assert "gcp-cloud-sql-t3-live-readonly-current.md" in onboarding assert "gcp-canonical-parity-live-20260712.json" in onboarding assert "gcp-cory-model-replay-current.json" in onboarding + assert "working-leo-current-proof-20260712.md" in onboarding assert "ssh teleo-gcp-staging" in onboarding assert "37/37" in cory assert "Approved is not the same as applied" in cory assert "Next Cory-style follow-up:" in cory + assert "working-leo-current-proof-20260712.md" in cory