Repository navigation
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review blockedAutomated review did not run, so no review verdict was produced. Reason: The input-safety check rejected material in this revision. No detected value, path, or scanner output is reproduced here. Automatic review is on hold, including after source changes. Request a fresh re-review after resolving the failure; maintainers can also release the hold through an intentional scanner-policy update. Next step: If this is a genuine credential, remove and rotate it. If it is an intentional test fixture, a maintainer must review and qualify it. |
|
Codex review: needs real behavior proof before merge. What this changesThis PR replaces the native test bridge with production Driver delivery, tests authority boundaries, and preserves Gateway state across restarts. Example: A dedicated native Gateway restarts with its generated dedicated-native worker profile.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Blocked before merge - 5 items remain Keep open for maintainer triage: this PR adds distinct native authority coverage and a focused Gateway restart repair. No definite introduced code defect was established; the body’s tests-only description is stale. Priority: P2 Before merge
FindingsNone. Tests
Agent review detailsHow this fits togetherKubernetes Compute renders Gateway startup configuration and storage, while the OpenShell Sandbox Driver delivers the native Harness; the integration exercises workspace and model operations through those runtime boundaries. flowchart LR
Test[Native integration] --> OCC[OCC API and worker]
OCC --> Compute[Kubernetes Compute]
Compute --> Gateway[Agent Gateway]
Compute --> Driver[OpenShell Driver]
Driver --> Harness[Native Harness]
Gateway --> Harness
Gateway --> State[Private Gateway PVC]
Technical reviewBest possible solution: Keep the existing Compute and Driver owners, qualify native authority on the selected runtime, and verify the client-state retention change across existing-Agent replacement. Do we have a high-confidence way to reproduce the issue? The base startup code rejects any existing dedicated-native profile, including the exact value it generated previously; this establishes the container-restart failure without executing target code. Is this the best way to solve the issue? Exact profile comparison is a focused repair using the existing owner, and replacing the test bridge with production delivery improves coverage; the added persistence behavior needs qualification beyond the older authority trace. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 860b73c5f832. Merge-risk optionsMaintainer options:
Provenance checked
TestingProof path: shipped entry point. SecurityNeeds attention: No concrete authorization bypass was found, but the retained client-credential lifetime remains unqualified. EvidenceWhat I checked:
Likely related people:
Review metrics
LabelsLabel changes: No label changes. Label justifications:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment HistoryReview history (11 earlier review cycles; latest 8 shown)
Reviewed October 20, 2026, 10:39 AM ET / 14:39 UTC (Revision 12). |
8d37f2c to
41f24ef
Compare
|
Live qualification on the running Podman-backed k3d demo is complete for the native enrollment boundary:
Executed from @clawsweeper re-review |
|
🦞👀 Re-review progress:
|
41f24ef to
46ddad9
Compare
|
Rebased onto current Post-rebase checks passed: startup integration 48/48, focused Compute conformance 5/5, OpenShell helper integration 10/10, TypeScript build, full ESLint, changed-file formatting, workspace boundary, flow validation, and documentation length check. The flow remains one complete lifecycle document within the 2,500-word limit. Full docs build/link checks are blocked locally by missing installed The earlier live qualification comment records pre-rebase evidence; I have not rerun the full credentialed k3d lane on this new head. Existing lifecycle/diagram findings remain open. @clawsweeper re-review |
|
🦞👀 Re-review progress:
|
|
Resolved the merge conflicts by merging Resolution
Verification
Review findings still openThe existing P2 preparation-Deployment cleanup issue remains valid: revision cleanup deletes the Sandbox and runtime provider but does not retire an orphaned preparation Deployment after an interrupted or ambiguously completed create. That requires a separate lifecycle fix and recovery proof. Final-head live native workflow evidence also remains outstanding, including enrollment, workspace/model effects, authority rejection, and retained-data recovery. I have not marked the PR ready or merged it. |
|
The quota finding was current: ClawSweeper reviewed The native-only fixture now sets Verification: evaluated the actual native configuration block with the shared fixture factory at old/new source (old: 16Gi quota minus 20Gi Agent pairs = -4Gi; new: 32Gi minus 20Gi = 12Gi). This is configuration accounting, not Kubernetes admission proof. Full ESLint, source syntax, formatting (including the pre-push hook), workspace boundaries, and diff checks passed; k3d launcher regressions: 23 passed, 0 failed/skipped. No production flow changes, so no flow-document update is needed. The live |
…removes Keeps the open native-authority PR (#1982) free of a new conflict in this file: it deletes the neighbouring OPENSHELL_KUBERNETES_WORKLOAD_IDENTITY import.
Preserve native authority coverage alongside main network-policy tests, opt-in QA scheduling, and capacity-retry checks. Keep the shared Sandbox log delegate once. Co-authored-by: sallyom <11166065+sallyom@users.noreply.github.com> Signed-off-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
|
Follow-up to Free’s latest review, published at Merged main For the exact Validation at the new head: OpenShell helper integration 15 passed, 0 failed/skipped, full ESLint and Prettier passed, suite audit/workspace checks passed, and independent source review found no actionable P0–P3 findings. Required CI passed, including documentation check/build. GitHub reports no merge conflicts. The new advisory was intentionally skipped under main’s opt-in policy; no manual rerun was requested. Native live qualification and the separate input-safety hold remain open. This update does not merge the PR. |
Retain the Gateway client credential store alongside its database so Pod replacement preserves migration receipts. Reuse only the exact generated native worker profile on container restart, retaining rejection of conflicting device settings. Signed-off-by: sallyom <somalley@redhat.com>
Signed-off-by: sallyom <somalley@redhat.com>
|
@clawsweeper rereview |
|
🦞👀 Re-review progress:
|
Remove the independent native Gateway persistence and restart change from this coverage PR. Preserve it with its tests and documentation on a separate main-based branch. Co-authored-by: sallyom <11166065+sallyom@users.noreply.github.com> Signed-off-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
|
Sally’s requested split is complete. The persistence/startup repair from The original red Static Checks was the two docs over the 2,500-word cap. Those additions moved with #3041 and were trimmed there (hosted counts: 2,489 and 2,494). Required CI is green on both PRs. #1982’s first new CI attempt also saw a 503 in an unchanged workspace image fixture; one failed-jobs-only rerun passed. That observation is recorded, not presented as a source repair. Fresh current-head e2e ran through the approved trusted-PR environment: QA run. Local installation, Kubernetes and Compose passed; OpenShell failed. Its actual result and diagnostics are inspected and linked in the body, with executing commit and image digests. Native startup again returned authentication HTTP 401 before the authority checks. Separately, Codex’s first Gateway model-turn request failed with an internal error; diagnostics report app-server WebSocket initialization HTTP 502. These are evidence-backed failing boundaries, not a claim that invalid credentials or an upstream model outage is established. Passing native authority proof remains blocked; #3041 also remains a draft pending existing-state replacement and retained-authority qualification. No credentials, protected-environment policies, assertions or review/security holds were bypassed, and neither PR is merged. |
Preserve main native-admin return-flow documentation while keeping the client-state and exact-worker-profile fixes separately reviewable for PR #1982 qualification. Co-authored-by: sallyom <11166065+sallyom@users.noreply.github.com> Signed-off-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
|
Real native OpenClaw + OpenShell e2e passed: 1 passed, 0 failed, 0 skipped, on a fresh disposable Linux k3d cluster and PostgreSQL database with an authorized OpenAI key and This qualifies a combined candidate, not #1982 alone: #1982 ./scripts/k3d test --harness openclawCompleted at The separate fresh #1982-only run failed before those authority checks: its native model probe returned Test-environment qualifications: two local test-only patches were required: omit the unused Codex token requirement for native-only preparation, and use an exact high loopback port for the rootless Linux relay. Their complete diffs are below. Authority, expiry, revocation, model execution, and secret-exposure assertions were retained. The cluster used legacy iptables with NetworkPolicies enabled; no host privileged-port sysctl was changed. Existing immutable runtime images were reused, and the controller was rebuilt from the combined candidate. Focused Compute regressions: 2 passed, 0 failed/skipped. Lint, changed-file formatting, workspace isolation and whitespace checks passed. #3041 advanced to Sanitized assertion transcriptSource, immutable-image and result receipt{
"runReceipt": {
"oceCommit": "e583b67b506ce3e6a7a0889003a02f4688db44d0",
"openclawCommit": "4c7a1654f8f4a1dd2ecab4c421419f1093bc2d65",
"openShellVersion": "0.1.4",
"model": "gpt-6-luna",
"engine": "podman",
"command": [
"./scripts/k3d",
"test",
"--harness",
"openclaw"
],
"startedAt": "2026-10-20T19:57:05Z",
"nativeBuildHeapMb": 6144,
"iptablesBackend": "legacy",
"freshClusterAndDatabase": true,
"productionPatchesBeyondPR": [
"06ae1e0e13b7517abaa933911d367ac8c8fa2336"
],
"basePr1982Commit": "73c39aed60cab99aa642b282ed99b74e48ce4b2a",
"repairPr3041Commit": "06ae1e0e13b7517abaa933911d367ac8c8fa2336",
"controllerSourceCommit": "e583b67b506ce3e6a7a0889003a02f4688db44d0",
"imageReuse": "Existing exact-source immutable runtime/controller builds; imported into the new cluster by standard preparation",
"imageSelectorWrapperSha256": "0e0dbcb88b7b14757e4bee9fe22b4c67fac152ac6c66a2da4934ec9079c1f6b1",
"rootlessRelayPatchSha256": "74fdf329a4e0dfe9f98c7497372f8b0b18613b83fc7c045a543d0c993e16ac17",
"preparationPatchSha256": "dca5b2a998a8d25a7560cb4d48650058576a90ae700622a38ba464e7847e3f3f",
"exitCode": 0,
"elapsedSeconds": 1228.77,
"finishedAt": "2026-10-20T20:17:34Z"
},
"counts": {
"tests": 1,
"pass": 1,
"fail": 0,
"cancelled": 0,
"skipped": 0
},
"images": [
{
"envName": "OCC_TEST_KUBERNETES_GATEWAY_IMAGE",
"sourceImage": "localhost/openclaw-ci-image-openclaw-ci-local-e72c0affcd5f/runtime@sha256:8950cea722cd6a6afdad7bec803b3db9b754a2efc43f5c87f3667773798de98e",
"reference": "localhost/openclaw-k8s-opencl-09b62f8343d3/occ-test-kubernetes-gateway-image-56b9062c124d@sha256:7d930c9455551e0570b102510093587fe5130e55d6383150f696911aea774b6a",
"hostImageId": "sha256:e23e9dcee972e4a3598ed14a3cf9e0cf796424772193bfcd8c0cabe44760276c"
},
{
"envName": "OCC_TEST_PRODUCTION_CONTROLLER_IMAGE",
"sourceImage": "localhost/pr1982-3041/controller@sha256:5beaa58447142dd58825a3e99eb99b966af8c035f02c0f95bee76f76e5c6d2a8",
"reference": "localhost/openclaw-k8s-opencl-09b62f8343d3/occ-test-production-controller-image-7eb59adc6fd9@sha256:37a5dba34735e2a7e6133842946e273dbd834fd90a553f24611ad8e9cb9c4f6e",
"hostImageId": "sha256:d37b2bf15d232376633395dbb561109d6dc97801dbc19ee6e6f2a56841bd63f5"
},
{
"envName": "OCC_TEST_OPENSHELL_GATEWAY_IMAGE",
"sourceImage": "ghcr.io/nvidia/openshell/gateway:5a7728c304b5528e954e9ae900cf21f84e1a12b1@sha256:bdb4fe248070032c88be78f029dad9325cb698480e90486e1413a674a5d8edc8",
"reference": "localhost/openclaw-k8s-opencl-09b62f8343d3/occ-test-openshell-gateway-image-95b4cb154e4b@sha256:f8b547a91cf53642c0fbad5691b1739f17d545283fcfc6844bf922cec4c18017",
"hostImageId": "sha256:86e30ddc9eaad2995067b3844d34a061ccb63163a6486cb165d0acf3c28a2fc0"
},
{
"envName": "OCC_TEST_OPENSHELL_SUPERVISOR_IMAGE",
"sourceImage": "ghcr.io/nvidia/openshell/supervisor:5a7728c304b5528e954e9ae900cf21f84e1a12b1@sha256:aa681d8264af6ee860e38349ed3c76609a51778eb6d0f02743df03787b80a290",
"reference": "localhost/openclaw-k8s-opencl-09b62f8343d3/occ-test-openshell-supervisor-image-288216123bce@sha256:4a80d5151a87906a86c0a06c330b17f0cef558d51b9a52bb58161dd95fd1ecac",
"hostImageId": "sha256:7d4a7c81ee57eef3768d919d7c3b85e0b3544220d0c5b7e5877d2aec9c4d978f"
},
{
"envName": "OCC_TEST_OPENSHELL_SANDBOX_IMAGE",
"sourceImage": "ghcr.io/nvidia/openshell/sandbox:5a7728c304b5528e954e9ae900cf21f84e1a12b1@sha256:ca00c094aeaa60681b8196cda18ab3c5dd5f7d782d4c36798256427b67599070",
"reference": "localhost/openclaw-k8s-opencl-09b62f8343d3/occ-test-openshell-sandbox-image-6a2691155eb5@sha256:6e5696d10b0df98d44cda8e789d815fda97e95ec44c224c750d278c3509b6c39",
"hostImageId": "sha256:9efdb1dc463d487c975fea93f4e3d26bd0635e1c35ebb1117ff432e3716476a9"
},
{
"envName": "OCC_TEST_KEYCLOAK_IMAGE",
"sourceImage": "quay.io/keycloak/keycloak:26.7.5@sha256:37dbaf6f0722c9ec246335f36e1ef8b2e6cb960f7c27e0d8c615121a3d475a85",
"reference": "localhost/openclaw-k8s-opencl-09b62f8343d3/occ-test-keycloak-image-7a3739ed8fe8@sha256:fcbdc620064b5115738e24a1f57b0f54a4fc16a85ff6879a680225cddfa36fc4",
"hostImageId": "sha256:35ca1a87eb8c74421c8718b47f753019a7b8b8b7da70aeda504452b003d05761"
}
],
"checkExitCodes": {
"conformance": 0,
"lint": 0,
"workspace": 0,
"format": 0,
"docs": 1,
"whitespace": 0
},
"docsCheckLimit": "Blocked by missing docs-only @sindresorhus/slugify dependency; content validation not reached.",
"proofLimits": [
"Combined #1982+#3041 candidate, not #1982 alone.",
"Two disclosed local test-only adapters: native-only credential preparation and rootless Linux high-port routing relay.",
"Fresh Linux k3d proof; no OpenShift or all-storage-class qualification."
]
}Complete local test-only preparation patchesdiff --git a/scripts/ci/prepare.mjs b/scripts/ci/prepare.mjs
index 67f0b3486..5ed8088d0 100644
--- a/scripts/ci/prepare.mjs
+++ b/scripts/ci/prepare.mjs
@@ -778,7 +778,11 @@ async function validateLaneInputsBeforeSideEffects(lane, env = {}) {
if (prepare.k3d && name !== "openshell" && effectiveEnv.OPENCLAW_CI_K3S_IMAGE) {
assertImmutableImageReference(effectiveEnv.OPENCLAW_CI_K3S_IMAGE, "OPENCLAW_CI_K3S_IMAGE");
}
- requireEnv(prepare.requireEnv ?? [], effectiveEnv);
+ const requiredEnv =
+ name === "openshell" && effectiveEnv.OCC_K3D_OPENCLAW_SOURCE
+ ? (prepare.requireEnv ?? []).filter((variable) => variable !== "CODEX_ACCESS_TOKEN")
+ : (prepare.requireEnv ?? []);
+ requireEnv(requiredEnv, effectiveEnv);
if (prepare.nodeBaseImage) {
assertNodeBaseImage(effectiveEnv.NODE_BASE_IMAGE);
}
diff --git a/tests/integration/sandbox-driver-openshell-k3d-real.test.mjs b/tests/integration/sandbox-driver-openshell-k3d-real.test.mjs
index 804bb2482..56032b9c3 100644
--- a/tests/integration/sandbox-driver-openshell-k3d-real.test.mjs
+++ b/tests/integration/sandbox-driver-openshell-k3d-real.test.mjs
@@ -488,6 +488,12 @@ async function startWorkspaceGatewayHostRelay(context, workspaceGateway) {
// Docker Desktop and Podman Machine host networking stays in their Linux VM.
// Publish to macOS loopback and use the engine's host alias for the port-forward.
const usesContainerVm = process.platform === "darwin";
+ const rootlessPodman =
+ process.platform === "linux" &&
+ basename(containerEngine) === "podman" &&
+ (
+ await executeFile(containerEngine, ["info", "--format={{.Host.Security.Rootless}}"])
+ ).stdout.trim() === "true";
const relayHost = usesContainerVm
? basename(containerEngine) === "podman"
? "host.containers.internal"
@@ -514,8 +520,10 @@ async function startWorkspaceGatewayHostRelay(context, workspaceGateway) {
/^(?:\d{1,3}\.){3}\d{1,3}$/,
"the disposable k3d Gateway must expose an IPv4 ClusterIP.",
);
- const endpointPort = usesContainerVm ? await availablePort() : 443;
- if (usesContainerVm) {
+ // Rootless Linux cannot bind privileged host ports. Keep the same TLS route
+ // on an exact high port, without changing host sysctls or test authority.
+ const endpointPort = usesContainerVm || rootlessPodman ? await availablePort() : 443;
+ if (usesContainerVm || rootlessPodman) {
const envoyHttpsPort = envoyService.spec.ports.find(({ port }) => port === 443);
assert.ok(envoyHttpsPort, "the workspace Gateway Service must retain its HTTPS port.");
await kubectl(
@@ -593,7 +601,7 @@ async function startWorkspaceGatewayHostRelay(context, workspaceGateway) {
' client.on("error", () => upstream.destroy());',
' upstream.on("error", () => client.destroy());',
"});",
- `server.listen(443, ${JSON.stringify(usesContainerVm ? "0.0.0.0" : "127.0.0.1")});`,
+ `server.listen(${rootlessPodman ? endpointPort : 443}, ${JSON.stringify(usesContainerVm ? "0.0.0.0" : "127.0.0.1")});`,
'process.on("SIGTERM", () => server.close(() => process.exit(0)));',
].join("\n");
await executeFile(containerEngine, [
@@ -629,7 +637,7 @@ async function startWorkspaceGatewayHostRelay(context, workspaceGateway) {
assert.equal(
relayRunning,
true,
- "the exact OpenShell host routing relay must own loopback port 443.",
+ "the exact OpenShell host routing relay must own its loopback port.",
);
const originalLookup = dns.lookup;
dns.lookup = function lookup(hostname, options, callback) { |
|
Free's clanker here (an AI agent working on Free's behalf). One more review pass on head I'd hold this until #3041 lands and this branch is refreshed on top of it, as the PR body itself suggests. The OpenShell QA advisory on this head is also red: native startup got a 401 before the authority checks ran, and the Codex case got a 502. Heads-up on a conflict with the pending Credential Proxy branch: Nits
|
|
@clawsweeper rereview |
|
🦞👀 Re-review progress:
|
Extract the persistence and generated-worker-profile restart repair from PR #1982, with its original tests and focused documentation. Trim the owning pages below the documentation word limit. Original-commit: 5ed7304 Signed-off-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com> Co-authored-by: sallyom <somalley@redhat.com> Co-authored-by: sallyom <11166065+sallyom@users.noreply.github.com> Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Problem
Native OpenClaw delivery through the OpenShell Sandbox Driver needs current end-to-end coverage of Gateway authority for workspace and model operations. Ordinary CI does not prove that this credentialed runtime path works.
Change
Persistence repair separated
At Sally’s request, commit
5ed73046b9808e4759e47c33d736d97eb7cc0166and its six files were removed from this PR without rewriting history. The implementation, restart tests, flow and storage reference are now in separate main-based draft PR #3041.This PR changes only tests, testing docs and CI selection/budgets. It does not change production storage, startup, Driver contracts, runtime versions or image pins relative to its main merge base. Retained-client authority and existing-state replacement qualification belong to #3041, not to a claim that this coverage PR already proves them.
Native k3d e2e prerequisite
Depends on PR #3041 for native k3d e2e qualification. Sally reports on October 20 that local testing fails with #1982 alone and needs the #3041 fix. Sally’s completed combined-run proof is now published: 1 passed, 0 failed/skipped, using #1982
73c39aed6plus #304106ae1e0e1as local candidatee583b67b506ce3e6a7a0889003a02f4688db44d0, on OpenClaw4c7a1654f8f4a1dd2ecab4c421419f1093bc2d65. The #1982-only control reached model READY and worker connection, then failed after Gateway replacement with the client-credential migration error. This identifies the persistence half of the dependency; it does not separately prove that the worker-profile restart bug also occurred in that attempt.Keep the changes in separate PRs: qualify and land #3041 first, then refresh and qualify #1982 with that fix present. Any combined proof must identify both OCE commits or the applied patch set, the upstream OpenClaw commit and image digests. It must not be labeled as proof of #1982 alone. This dependency does not clear either PR’s review/security hold.
Verification
Completed combined native proof and cause
The published VM proof records the source/image receipts, full authority transcript and two disclosed native-only/rootless test adapters. This is passing combined-source Linux/k3d evidence, not #1982-alone or arbitrary prior-state/storage qualification. The four #3041 production/regression file blobs are identical between tested repair
06ae1e0e1and current97ecaacb0; the full latter commit was not the executed tree.Source investigation found a runtime-layout mismatch: the VM’s OpenClaw includes upstream #174599’s separate
client/credentials.sqlitestore, absent from OCE’s defaultf8386bc7pin. OCE persisted the older shared-state location but not the new client directory, so replacement lost the required client receipt. Native enrollment/profile lifecycle differs from eligible Codex’s binding-file path. This does not explain hosted CI’s earlier 401/502 by itself, and does not establish a reproduced Codex persistence failure.Current head:
73c39aed60cab99aa642b282ed99b74e48ce4b2a.NO_PROXYso the host proxy does not intercept its local server.docs/flows/agent-native-admin.mdto 2,566 words and the storage reference to 2,520. Both files are restored to main here. Their extracted versions are shortened in fix(compute): preserve native Gateway state across restarts #3041 rather than exempted from the limit.503 DEPENDENCY_UNAVAILABLEinstead of 200 on its first PUT. The same fixture/probe blobs pass in fix(compute): preserve native Gateway state across restarts #3041 and do not select its changed worker profile. A single failed-jobs-only rerun passed. This is an observed retry success, not an established repair or root cause for the intermittent response.full-qaopt-in ran current-head trusted-PR QA. The OpenShell job failed; local installation, Kubernetes and Compose jobs passed. Protected-environment policies and credential custody were unchanged. Passing standalone/default-image native authority proof remains blocked; the separately recorded combined VM candidate passed.Fresh
73c39aed6OpenShell resultThe job, owning result, and diagnostics were inspected after completion on October 20 at 15:47 UTC:
c94452f3a09a104f7f7e999d962c51c5d6bf9fc9, for PR head73c39aed60cab99aa642b282ed99b74e48ce4b2a.sha256:eeb3cb5fea92f343c7461618ee9f9834b61d6c4ebbae3a2b5f7135817a268d3c. Runtime/Gateway/Codex digest:sha256:94acba7d157215b645440ad68b86fd21e2199e71512b87b9b78a6d95bf604f7c.api_error: internal error. Gateway diagnostics repeatedly report Codex app-server WebSocket initialization receiving HTTP 502. This is a transport observation, not proof that the model provider itself returned 502.AUTHENTICATION_FAILED, HTTP 401,responseHeaderMarker: provider-likeandproviderErrorType: invalid_request_error. Activation timed out before native authority assertions. Both guided native first-Agent profiles also returnedRUNTIME_AUTHENTICATION_FAILED/401.Earlier exact-run diagnosis
For PR head
cec583ef4, the OpenShell job, owning result and diagnostics were inspected. The result identifies executing merge SHA4a42ea5230400b561631f255aa49e5da709344a3. Setup and Codex passed, but the native Harness startup model probe returnedAUTHENTICATION_FAILED/HTTP 401. Revision activation timed out before the authority assertions. Both existing guided native profiles also failed withRUNTIME_AUTHENTICATION_FAILED/401.That evidence does not distinguish an invalid API key from failed credential delivery. Native uses
OPENAI_API_KEY; Codex uses the separateCODEX_ACCESS_TOKEN, so Codex success does not validate native authentication. The fresh run above must supply its own outcome.Sally’s earlier live trace remains tied to OCE
46036ab58006d224c520da1ef0e098d7cbf71f6dand OpenClaw6b48a17ac0f4691634bda59282b6a3371d095265. It is useful historical evidence, not current-image qualification.Risks
The completed native authority proof covers the disclosed combined VM candidate and runtime, not #1982 alone or the default pinned hosted image. Auth-only loopback probes do not prove NetworkPolicy enforcement; in-flight cancellation and re-enrollment are outside these assertions. No all-storage-class, OpenShift or Helm-installed production qualification is claimed.
#2633 remains a separate integration point; its branch is untouched. Existing review/security holds are not cleared by this split, ordinary CI or publication. This update does not merge either PR.
Contributor: @sallyom. Implementation and verification by @roboclaw-bot. Review feedback: @freeqaz and @freeqaz-openai.
Work sessions
View the OpenClaw team session