|
| 1 | +# Cortex CLI staging soak, Designer cli |
| 2 | + |
| 3 | +**Result: BLOCKED. Production: HOLD, untouched.** |
| 4 | + |
| 5 | +Observation window: 2026-09-07, 11:46–11:50 UTC. This is a bounded readiness |
| 6 | +attempt, not a completed soak or release acceptance. No staging application |
| 7 | +mutations, member login, model turns, deployments, or production requests ran. |
| 8 | +Only this staging evidence document changes tracked files. |
| 9 | + |
| 10 | +## Provenance |
| 11 | + |
| 12 | +- Backend checkout and deployment workflow revision: |
| 13 | + `2c1c575051002524386cf3a27613f952c8afd44c`. |
| 14 | +- [Deploy staging 34117265669](https://github.com/CortexLM/backend/actions/runs/34117265669): |
| 15 | + `completed / success`, updated `2026-09-07T11:34:57Z`. The Client VPN check, |
| 16 | + both Helm upgrades, and rollout verification completed successfully. |
| 17 | +- Allowlisted deployment-log evidence confirmed image |
| 18 | + `sha-db24a64032cc73c893ba4095e64e68b20d8662ab` and `vpn_ready=true`. |
| 19 | + These are historical deployment observations, not a fresh live readback. |
| 20 | +- Existing `CortexLM/cli` checkout used: |
| 21 | + `79f40090ef4874d6415c4d240606694f42df16af`. |
| 22 | + Tag `v0.1.8` resolves to `3c06750cf3c5baa90952c655053c22ffad1888cd`. |
| 23 | + The checkout includes subsequent changes; it is not the exact release tree. |
| 24 | + The inspected client-routing, doctor, CLI entrypoint, and version-marker |
| 25 | + files match the tag. No released binary was executed. |
| 26 | + |
| 27 | +## Results |
| 28 | + |
| 29 | +| Check | Status | Evidence | |
| 30 | +| --- | --- | --- | |
| 31 | +| Deployment record | PASS | GitHub reports the staging deployment successful; image and VPN flag match the supplied context. This does not establish current service readiness. | |
| 32 | +| IAM staging hop | BLOCKED | From the backend repository root, `scripts/cursor-staging-access.sh --once` exited **253**: `NoCredentials: Unable to locate credentials`. It stopped at caller identity, before role assumption, kubeconfig generation, or port-forward startup. | |
| 33 | +| API `/readyz` | BLOCKED | At `11:48:03Z`, GET `http://127.0.0.1:18081/readyz`: curl **7**, HTTP **000**, connection refused. No HTTP response or staging service observation. | |
| 34 | +| Web `/api/readyz` | BLOCKED | At `11:48:03Z`, GET `http://127.0.0.1:18080/api/readyz`: curl **7**, HTTP **000**, connection refused. No HTTP response or staging service observation. | |
| 35 | +| Public staging DNS | PASS (expected limitation) | At `11:48:37Z`, both `staging.cortex.foundation` and `api.staging.cortex.foundation` returned resolver `EAI_NONAME` (-2). Consistent with the expected public DNS limitation, not a service-health failure. | |
| 36 | +| CLI version consistency | PASS | `./scripts/check-cli-version.sh` exited **0**; all three version sources are `0.1.8`. | |
| 37 | +| CLI staging routing | PASS (source inspection only) | The CLI client accepts `CORTEX_API_URL`; `STAGING_API_URL` must be explicitly mapped to it. No implicit production fallback was exercised. | |
| 38 | +| CLI build / local doctor | BLOCKED | `cargo build --locked --offline -p cortex-cli` exited **101**: `no matching package named phc found`. No CLI binary was produced; `Cortex debug doctor --json` did not run. | |
| 39 | +| CLI smoke against staging | BLOCKED | No established hop, populated `STAGING_API_URL`, or built CLI. No API compatibility or coding-turn success is claimed. | |
| 40 | +| Member IdC/VPN and WorkOS flow | BLOCKED | Remains with **Mathis**, as supplied in the task. No member identity, VPN, or authenticated end-to-end flow was verified here. | |
| 41 | +| Formatting | PASS | `cargo fmt --all -- --check` exited **0**. This is source hygiene, not runtime evidence. | |
| 42 | + |
| 43 | +`FAIL` would indicate an observed failure of the service or behavior under |
| 44 | +test. The failed hop, connection, and offline-build commands above are recorded |
| 45 | +as `BLOCKED` because their prerequisites were unavailable; they are not passes. |
| 46 | + |
| 47 | +## Execution boundaries and evidence details |
| 48 | + |
| 49 | +- The unmodified hop script was run from the backend checkout with explicit |
| 50 | + staging role, cluster, namespace, service, and port settings. `SKIP_ASSUME=0`; |
| 51 | + no IAM, VPN, ingress, or deployment configuration was changed. |
| 52 | +- Task-specific temporary kubeconfig and PID paths were used to avoid touching |
| 53 | + another soak's files. Both remained absent after the failed hop. No |
| 54 | + port-forward process was started or left behind by this attempt. |
| 55 | +- `STAGING_API_URL` and `STAGING_WEB_URL` were unset. The loopback addresses |
| 56 | + above are the hop's documented candidates, **not successfully established |
| 57 | + staging endpoints**. |
| 58 | +- Readiness probes used unauthenticated GET, no proxy, no redirects, a two-second |
| 59 | + connect timeout and five-second total timeout, and discarded response bodies. |
| 60 | + No `/healthz` fallback was counted as a `/readyz` pass. |
| 61 | +- Rust was available outside the initial PATH. With `/root/.cargo/bin` added, |
| 62 | + Cargo and rustc both reported `1.98.0`. The build stayed locked and offline; |
| 63 | + dependencies were not installed or updated to work around the blocker. |
| 64 | +- Doctor's contract is `scope: local`, `coding_service: not_checked`, even when |
| 65 | + an API URL is set. A future successful doctor run must not be reported as a |
| 66 | + staging API or coding-turn pass. |
| 67 | +- Full Rust tests, Clippy, audit, local functional/security QA, coverage, and |
| 68 | + member browser/TUI flows were not run as part of this blocked staging attempt. |
| 69 | + The local QA script exercises an isolated local app server, not staging. |
| 70 | +- No credential values, tokens, cookies, raw deployment logs, or user content |
| 71 | + are included. Only image hashes, status fields, and redacted errors were |
| 72 | + retained from deployment evidence. |
| 73 | + |
| 74 | +## Unblock and repeat |
| 75 | + |
| 76 | +1. Provision an approved short-lived AWS session in the agent environment that |
| 77 | + can use `cursor-staging-soak`, then rerun the backend hop with `--once`. |
| 78 | + Agent API/process checks do **not** require member Client VPN; missing AWS |
| 79 | + credentials are the immediate access blocker. Do not use SSO device codes |
| 80 | + here or widen staging ingress. |
| 81 | +2. After successful hop startup, set the emitted staging URLs in the shell |
| 82 | + used for probes. Require both API `/readyz` and web `/api/readyz` to return |
| 83 | + successful HTTP responses, and verify the live image before claiming |
| 84 | + same-build evidence. |
| 85 | +3. Make the locked CLI dependencies or a verified `v0.1.8` binary available. |
| 86 | + Explicitly use `CORTEX_API_URL="$STAGING_API_URL"` in an isolated CLI home |
| 87 | + for any subsequent staging-targeted command. Local doctor is a separate |
| 88 | + prerequisite check, not a network smoke. Recheck command egress before |
| 89 | + running commands that can start an automatic update check. |
| 90 | +4. Mathis retains member IdC/VPN and real-host WorkOS validation. Login, |
| 91 | + session creation, and model turns were outside this read-only attempt; |
| 92 | + obtain separately authorized member evidence rather than treating the hop |
| 93 | + or deployment flag as proof. |
| 94 | + |
| 95 | +No production go decision follows from this report. |
| 96 | + |
| 97 | +SOAK_RESULT: BLOCKED, agent AWS credentials unavailable; staging API/web readiness and CLI smoke unverified; member IdC/VPN remains Mathis; PROD HOLD. |
0 commit comments