test: prove OpenClaw 2026.5.27 resolves #4434 unreachable inference TUI error#4437
test: prove OpenClaw 2026.5.27 resolves #4434 unreachable inference TUI error#4437ericksoa wants to merge 9 commits into
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughBumps OpenClaw to 2026.5.27 across builds/manifests/tests, widens chat-send patching for admission-shaped runners, adds unit and E2E tests reproducing TUI behavior when inference endpoints are unreachable, and adds a selective/nightly E2E job wired into CI aggregations. ChangesOpenClaw 2026.5.27 upgrade with issue
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Comment |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Auto-dispatched E2E: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
E2E Scenario Advisor RecommendationRequired scenario E2E: None Full scenario advisor summaryE2E Scenario AdvisorBase: Required scenario E2E
Optional scenario E2E
Relevant changed files
|
PR Review AdvisorFindings: 2 needs attention, 7 worth checking, 0 nice ideas Review findings🛠️ Needs attention
🔎 Worth checking
🌱 Nice ideas
Since last review detailsCurrent findings:
This is an automated advisory review. A human maintainer must make the final merge decision. |
Selective E2E Results — ❌ Some jobs failedRun: 26579419772
|
Selective E2E Results — ❌ Some jobs failedRun: 26580021337
|
Selective E2E Results — ❌ Some jobs failedRun: 26580885137
|
Selective E2E Results — ✅ All requested jobs passedRun: 26581483934
|
|
/nvskills-ci |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
Selective E2E Results — ✅ All requested jobs passedRun: 26584199493
|
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/nightly-e2e.yaml:
- Around line 354-362: The checkout step currently leaves default git
credentials in the workspace; update the Checkout action configuration (the step
named "Checkout" that uses
actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd) to disable persisted
credentials by adding persist-credentials: false under its with: block so the
privileged job does not retain Git credentials in the workspace.
- Around line 345-350: The .coderabbit.yaml is missing a path_instructions entry
for the workflow job issue-4434-tui-unreachable-inference-e2e; add a mapping
under path_instructions that references the workflow/job key
(issue-4434-tui-unreachable-inference-e2e) and points to the relevant test
script paths (e.g., test-issue-4434-tui-unreachable-inference or the actual e2e
test directory/files), ensuring the key matches the job name used in the
workflow and the path glob patterns match where the test scripts live so
coderabbit can trigger correct instructions for that job.
In `@test/e2e/test-openclaw-tui-chat-correlation.sh`:
- Line 49: The version check uses regex-style grep which treats "." as any char;
change the command used in the conditional that references openclaw_version to
use fixed-string matching (e.g., replace grep -q "2026.5.27" with grep -Fq
"2026.5.27") so the literal string "2026.5.27" is matched exactly (update the if
condition around the grep invocation).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: a2107b9a-8f01-4ffa-bfe2-206858d44df8
📒 Files selected for processing (15)
.github/workflows/nightly-e2e.yamlDockerfileDockerfile.baseagents/openclaw/manifest.yamlnemoclaw/package.jsonnemoclaw/src/package-metadata.test.tsscripts/patch-openclaw-chat-send.jssrc/lib/sandbox/version.test.tssrc/lib/verify-deployment.test.tstest/e2e/test-issue-4434-tui-unreachable-inference.shtest/e2e/test-openclaw-tui-chat-correlation.shtest/fetch-guard-patch-regression.test.tstest/issue-4434-tui-unreachable-inference.test.tstest/openclaw-chat-send-patch.test.tstest/validate-e2e-coverage.test.ts
Selective E2E Results — ✅ All requested jobs passedRun: 26584355281
|
|
🌿 Preview your docs: https://nvidia-preview-pr-4437.docs.buildwithfern.com/nemoclaw |
Selective E2E Results — ❌ Some jobs failedRun: 26585206489
|
|
Actionable comments posted: 0 |
Selective E2E Results — ❌ Some jobs failedRun: 26585283728
|
Selective E2E Results — ❌ Some jobs failedRun: 26585367114
|
|
Actionable comments posted: 0 |
Selective E2E Results — ✅ All requested jobs passedRun: 26586330696
|
Selective E2E Results — ✅ All requested jobs passedRun: 26586391765
|
Selective E2E Results — ✅ All requested jobs passedRun: 26586935610
|
Selective E2E Results — ✅ All requested jobs passedRun: 26587080976
|
|
Actionable comments posted: 0 |
Selective E2E Results — ✅ All requested jobs passedRun: 26652959641
|
jyaunches
left a comment
There was a problem hiding this comment.
Approving on regression-risk grounds.
Regression-risk review
Surface area is small: only one product-code change (scripts/patch-openclaw-chat-send.js, +16/−3) plus version/integrity bumps and test fixture alignment. The rest of the behavior change comes from upstream OpenClaw 2026.5.22 → 2026.5.27.
Past OpenClaw bumps have rolled back in production (e.g. #3820 reverted by #4051 in <5h), so I wanted breadth of E2E rather than just count of green checks before approving.
E2E coverage on head 5f549f66
All 5 advisor-required jobs green via auto-dispatch + the live privileged job:
- ✅
cloud-e2e - ✅
openclaw-tui-chat-correlation-e2e(direct proof the chat-send shim still applies on the newadmitReplyTurnshape) - ✅
rebuild-openclaw-e2e - ✅
sandbox-survival-e2e - ✅
issue-4434-tui-unreachable-inference-e2e(live privileged repro on Linux w/NVIDIA_API_KEY)
The advisor also flagged three optional adjacent surfaces that weren't auto-dispatched. I dispatched them manually against this PR head (run 26652959641):
- ✅
openclaw-inference-switch-e2e - ✅
inference-routing-e2e - ✅
hermes-e2e
8/8 advisor-recommended E2Es now green on 5f549f66.
Non-blocking follow-ups (PR Review Advisor)
The PR Review Advisor only ran once on the initial commit (924c1d52) and never re-evaluated after the "harden review gates" / "address review feedback" commits. Verifying each finding directly against HEAD:
- 🛠 Privileged job lacks explicit trusted workflow-ref gate (
if: github.ref == 'refs/heads/main') — partially mitigated bypersist-credentials: falseand SHA-pinned + ancestor-checkedtarget_ref, but workflow YAML/script ref itself isn't gated. - 🛠 Live proof's
VISIBLE_ERROR_REand final-status assertion are still broad; the synthetic Vitest covers the structured-error shape, so regression-guard quality lives mostly there. - 🔎 Failure-artifact sanitizer is non-recursive into
CAPTURE_DIR/; tokens are still env-redacted. - 🔎 Adjacent items: pin
expect/iptableshost packages, record OSV/GHSA advisory review evidence foropenclaw@2026.5.27, refresh.agents/skills/nemoclaw-user-reference/references/commands.md(still showsv2026.5.22), and document tolerant-parser source-of-truth/removal contract.
CodeRabbit's three actionable items (path_instructions mapping, persist-credentials: false, fixed-string version match) are all addressed.
These are CI hygiene / assertion rigor, not product correctness, and reasonable to track as a follow-up issue.
Verdict
LGTM — approving. Recommend opening one tracking issue for the advisor follow-ups before merging.
|
Converting to draft so we don't merge a new OpenClaw without discussing first. |
Release target
Refs #4434. This PR targets
v0.0.55; #4434 should remain open until this OpenClaw upgrade is merged, tagged, and verified in the shipped.55release.Why this resolves #4434
NemoClaw #4434 reports that
openclaw tuikeeps an active spinner andconnectedstatus with no visible terminal error when the NVIDIA inference endpoint is unreachable. This branch moves the sandbox OpenClaw pin from2026.5.22to2026.5.27with npm integrity:sha512-2N93zhdAo88KAbHt6T7KvYXf4s7XIkYXBgv1npYpn7e1Y9FvrtgtpsA38my9rtFW+70uXEojRPX5/OqnuDqJPw==Upstream proof:
broadcastChatError()call for synchronouschat.sendfailures.Changes
Dockerfile,Dockerfile.base,agents/openclaw/manifest.yaml, and package metadata to OpenClaw2026.5.27.scripts/patch-openclaw-chat-send.jsso NemoClaw's chat-send run-id preservation shim still recognizes the compiled OpenClaw2026.5.27followup-runner admission shape.test/e2e/test-issue-4434-tui-unreachable-inference.sh.nightly-e2e.yamlasissue-4434-tui-unreachable-inference-e2e, including selective dispatch, public-install target-ref handling, failure artifacts, aggregate reporting coverage, and trusted workflow-script checkout for the secret/sudo firewall job.Local validation
npm cinpm ci --include=devnpm run build:clinpm run typecheck:clinpm test -- test/fetch-guard-patch-regression.test.ts test/openclaw-chat-send-patch.test.ts test/openclaw-tui-chat-correlation.test.ts test/issue-4434-tui-unreachable-inference.test.tsnpm test -- src/lib/sandbox/version.test.ts src/lib/verify-deployment.test.tsnpm test -- test/validate-e2e-coverage.test.ts test/e2e-advisor-dispatch.test.ts test/e2e-script-workflow.test.ts test/issue-4434-tui-unreachable-inference.test.ts nemoclaw/src/package-metadata.test.tsshellcheck test/e2e/test-issue-4434-tui-unreachable-inference.shbash -n test/e2e/test-issue-4434-tui-unreachable-inference.shbash -n test/e2e/test-openclaw-tui-chat-correlation.shNEMOCLAW_ISSUE_4434_LIVE=0 bash test/e2e/test-issue-4434-tui-unreachable-inference.shgit diff --checknpm pack openclaw@2026.5.27dist smoke withnode scripts/patch-openclaw-chat-send.js "$tmp/package/dist"docker build -f Dockerfile --build-arg BASE_IMAGE=ghcr.io/nvidia/nemoclaw/sandbox-base:latest -t nemoclaw-issue4434-openclaw-runtime-smoke:2026-5-27 .docker run --rm --entrypoint openclaw nemoclaw-issue4434-openclaw-runtime-smoke:2026-5-27 --version->OpenClaw 2026.5.27 (27ae826)2026.5.27npm integrity and install path.98e0a763efe0925f26cf89129cd4ab63cb0b05f3: passed, including CLI/plugin coverage hooks.test/nemoclaw-start.test.tscase timed out during the full concurrent run, then passed directly withnpx vitest run --project cli test/nemoclaw-start.test.ts -t "captures baseline snapshot when openclaw.json is valid and no baseline exists".Nightly proof
Targeted nightly E2E passed on the final PR head:
5f549f661fe81b485f75903146512af4225d4698issue-4434-tui-unreachable-inference-e2eThe live job runs the requested end-to-end flow on Linux with the repository
NVIDIA_API_KEYsecret: public install from this PR ref, cloud onboard with NVIDIA Endpoints andnvidia/nemotron-3-super-120b-a12b, pre-blocknemoclaw <sandbox> status, pre-blocknemoclaw <sandbox> connect --probe-only, exactDOCKER-USERDROPrules for75.2.113.119and99.83.136.103, in-sandbox endpoint-block verification,openclaw tui,hello, and final TUI assertion.The passing assertion was:
PASS: openclaw tui surfaced a visible unreachable-inference error and stopped the spinnerThe dispatch command for reruns while this job only exists on the PR branch is:
Remaining release note
v0.0.53/ OpenClaw2026.5.22spinner/no-error behavior after the exact firewall block. I did not rerun the mutating baseline repro from this macOS host.Dockerfile.basebuild was blocked locally because this Docker install does not providedocker buildx, whileDockerfile.baseuses BuildKitRUN --mount. The runtime Docker path and a base-style OpenClaw install smoke both passed.Summary by CodeRabbit
Tests
Chores