Skip to content

Commit b79c8ef

Browse files
docs(staging): record blocked cli staging soak (#35)
Record staging-only readiness evidence and explicit access/build blockers. Production remains HOLD; no product, release, or deployment changes. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
1 parent ff9d812 commit b79c8ef

1 file changed

Lines changed: 97 additions & 0 deletions

File tree

staging-soak-proof/cli/REPORT.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
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

Comments
 (0)