Skip to content

fix: align OpenClaw pairing state root#3737

Merged
ericksoa merged 15 commits into
mainfrom
fix/slack-pairing-state-root-3730
May 19, 2026
Merged

fix: align OpenClaw pairing state root#3737
ericksoa merged 15 commits into
mainfrom
fix/slack-pairing-state-root-3730

Conversation

@ericksoa
Copy link
Copy Markdown
Contributor

@ericksoa ericksoa commented May 18, 2026

Summary

  • pin all OpenClaw processes in the sandbox to the shared persistent state root at /sandbox/.openclaw
  • export the same OpenClaw state, config, and credentials paths into the connect-shell runtime env so openclaw pairing approve slack <code> sees gateway-created pending requests
  • add regression coverage for startup env wiring and .openclaw writable state directories

Fixes #3730.

Test Plan

  • npm run build:cli
  • bash -n scripts/nemoclaw-start.sh
  • git diff --check
  • npm run source-shape:check
  • ./node_modules/.bin/vitest run test/nemoclaw-start.test.ts test/sandbox-provisioning.test.ts
  • ./node_modules/.bin/vitest run test/generate-openclaw-config.test.ts test/onboard-messaging.test.ts test/policies.test.ts test/validate-blueprint.test.ts --testTimeout 15000
  • commit hook full CLI coverage: passed

Notes

  • Pre-push was skipped with --no-verify because the local hook repeatedly failed before running tests on rm: dist: Directory not empty caused by generated dist/.DS_Store. The same full CLI hook passed during commit after clearing dist/ and building nemoclaw/dist.
  • DGX Spark live Slack pairing acceptance still needs to be run against real Slack credentials.

Summary by CodeRabbit

  • Chores
    • Standardized OpenClaw runtime state under a shared sandbox root (/sandbox/.openclaw) and unified state/config/credentials locations; connect-session env writer now exports these variables into the runtime env file.
  • New Features
    • Added a full end-to-end Slack Socket Mode pairing test and a nightly E2E job to validate pairing and approval flows.
  • Tests
    • Expanded coverage to assert env exports, state paths, directory creation/permissions, and env-file ordering.
  • Tools
    • Added a hermetic fake Slack API and helper for Socket Mode/WebSocket simulation.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 18, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Exports OPENCLAW_* pinned to /sandbox/.openclaw, ensures state subdirs and permissions, writes OPENCLAW_* into the connect-session env file, updates tests and provisioning checks, and adds a hermetic fake Slack REST+Socket Mode server, websocket policy helper, CI job, and E2E pairing test.

Changes

OpenClaw state path standardization for pairing request resolution

Layer / File(s) Summary
Entrypoint exports
scripts/nemoclaw-start.sh
OPENCLAW_HOME, OPENCLAW_STATE_DIR, OPENCLAW_CONFIG_PATH, and OPENCLAW_OAUTH_DIR are exported to pin OpenClaw state to /sandbox/.openclaw.
Runtime env propagation
scripts/nemoclaw-start.sh
write_runtime_shell_env() iterates present OPENCLAW_* vars and writes them into /tmp/nemoclaw-proxy-env.sh with safe single-quote escaping.
Unit tests: startup & gateway env
test/nemoclaw-start.test.ts
Startup harness and gateway token export harness now emit/export OPENCLAW_* vars; test #3730 asserts envFile contains those exports and that OPENCLAW_STATE_DIR precedes OPENCLAW_GATEWAY_TOKEN.
Sandbox provisioning checks
test/sandbox-provisioning.test.ts
Asserts .openclaw subdirectories (credentials, devices, identity, logs, telegram) exist (not symlinks) and have group-write and setgid permission bits.
CI/docs: path_instructions & workflow
.coderabbit.yaml, .github/workflows/nightly-e2e.yaml
Adds openclaw-slack-pairing-e2e path_instructions and workflow job; wires job into dispatch allowlist and downstream reporting/scorecard/notify steps.
Fake Slack API (REST + Socket Mode)
test/e2e/lib/fake-slack-api.cjs
Adds crypto import, token placeholder detection, unified JSON responses, websocket handshake/frame encode-decode, /socket-mode websocket handling, and redacted request/message logging.
Slack websocket policy helper
test/e2e/lib/slack-api-proof.sh
Adds apply_fake_slack_socket_mode_policy to configure websocket endpoint rules with credential rewrite and allow rules.
Hermetic Slack Pairing E2E
test/e2e/test-openclaw-slack-pairing.sh
New end-to-end test that runs NemoClaw install, starts fake Slack REST+Socket Mode, performs pairing challenge via gateway embedded Node websocket client, validates state files under /sandbox/.openclaw, approves pairing via connect-shell, and verifies approval consumption and allowlist updates.
sequenceDiagram
  participant Host
  participant SandboxGateway
  participant FakeSlack
  participant OpenClawState

  Host->>SandboxGateway: run install and start gateway, start fake Slack via test
  SandboxGateway->>FakeSlack: websocket upgrade to /socket-mode with placeholder token
  FakeSlack->>SandboxGateway: send socket_mode event (event_callback)
  SandboxGateway->>OpenClawState: issuePairingChallenge -> write pending pairing to credentials/slack-pairing.json
  Host->>SandboxGateway: connect-shell approve pairing (approve code)
  SandboxGateway->>OpenClawState: consume pairing, update slack-default-allowFrom.json
  FakeSlack->>Host: capture shows rewritten token/body for websocket and chat.postMessage
Loading

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#3332: Overlaps scripts/nemoclaw-start.sh and env-file generation for OPENCLAW_* variables.

Suggested labels

E2E, Sandbox

Suggested reviewers

  • cv
  • jyaunches

Poem

🐰
Paths snug in sandbox burrowed deep,
Shared state wakes where secrets sleep.
A pairing code no longer hides,
OpenClaw finds it where it bides.
Hop, approve — the bot now thrives!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: align OpenClaw pairing state root' directly summarizes the main change: aligning OpenClaw processes to a shared persistent state root at /sandbox/.openclaw.
Linked Issues check ✅ Passed All primary coding objectives from issue #3730 are met: shared state root at /sandbox/.openclaw is established [scripts/nemoclaw-start.sh], OpenClaw paths (OPENCLAW_HOME, OPENCLAW_STATE_DIR, OPENCLAW_CONFIG_PATH, OPENCLAW_OAUTH_DIR) are exported into connect-shell runtime environment [scripts/nemoclaw-start.sh, test/nemoclaw-start.test.ts], and regression test coverage for startup environment and writable .openclaw directories is added [test/nemoclaw-start.test.ts, test/sandbox-provisioning.test.ts]. The comprehensive E2E test validates the full pairing flow with the fix in place.
Out of Scope Changes check ✅ Passed All changes are scoped to resolving issue #3730: OpenClaw state root alignment in nemoclaw-start.sh, test coverage for new environment variables and state directories, E2E test infrastructure for Slack pairing validation, and documentation updates. No unrelated modifications detected.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/slack-pairing-state-root-3730

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 18, 2026

E2E Advisor Recommendation

Required E2E: openclaw-slack-pairing-e2e, cloud-e2e, sandbox-survival-e2e, sandbox-operations-e2e
Optional E2E: messaging-providers-e2e, openclaw-inference-switch-e2e, docs-validation-e2e

Dispatch hint: openclaw-slack-pairing-e2e,cloud-e2e,sandbox-survival-e2e,sandbox-operations-e2e

Auto-dispatched E2E: cloud-e2e, sandbox-survival-e2e, sandbox-operations-e2e via nightly-e2e.yaml at 12300835d9d14fb7337b9c780b959b3ef1251bacnightly run

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • openclaw-slack-pairing-e2e (medium): Directly validates the runtime change: Slack Socket Mode creates a pending pairing request in the gateway context and openclaw pairing approve slack <code> in connect-shell sees the same shared OpenClaw state root.
  • cloud-e2e (medium): scripts/nemoclaw-start.sh is the sandbox entrypoint used by normal onboarding and inference. Run the broad cloud onboard + inference flow to catch boot/env regressions from the entrypoint changes.
  • sandbox-survival-e2e (medium): Entrypoint changes can affect gateway startup and restart behavior. This job covers sandbox survival across gateway restarts.
  • sandbox-operations-e2e (medium): Entrypoint changes are lifecycle-sensitive and can affect process recovery after gateway kill and multi-sandbox operations.

Optional E2E

  • messaging-providers-e2e (medium): Shared fake Slack API and Slack policy proof helpers changed. This existing job validates Slack REST provider placeholder rewrite alongside other messaging providers.
  • openclaw-inference-switch-e2e (medium): The entrypoint now exports OpenClaw config/state paths into runtime shells. This is adjacent to OpenClaw route/config patching and live request validation, but the PR’s primary risk is Slack pairing state root parity.
  • docs-validation-e2e (low): The parity map changed for the new script. Run only if reviewers want extra confidence in docs/parity validation metadata.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: nightly-e2e.yaml
  • jobs input: openclaw-slack-pairing-e2e,cloud-e2e,sandbox-survival-e2e,sandbox-operations-e2e

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
scripts/nemoclaw-start.sh (1)

228-239: Run the entrypoint E2E suites before merge.

Given these are scripts/nemoclaw-start.sh entrypoint-path changes, run the recommended E2E jobs to validate real sandbox lifecycle behavior (restart recovery, gateway kill recovery, and full onboard/cloud path).

Also applies to: 1595-1601

🤖 Prompt for 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.

In `@scripts/nemoclaw-start.sh` around lines 228 - 239, Change introduces
sandbox-wide OpenClaw state env vars (OPENCLAW_HOME, OPENCLAW_STATE_DIR,
OPENCLAW_CONFIG_PATH, OPENCLAW_OAUTH_DIR) set from
_SANDBOX_HOME/_OPENCLAW_STATE_DIR; before merging, run the entrypoint E2E suites
that exercise sandbox lifecycle (restart recovery, gateway kill recovery, full
onboard/cloud path) to validate these env changes; if failures arise, adjust the
script to preserve per-user behavior or ensure shared state permissions and
paths (check usages of _SANDBOX_HOME, _OPENCLAW_STATE_DIR and any code reading
OPENCLAW_HOME/OPENCLAW_OAUTH_DIR) and rerun E2E until they pass.
🤖 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.

Nitpick comments:
In `@scripts/nemoclaw-start.sh`:
- Around line 228-239: Change introduces sandbox-wide OpenClaw state env vars
(OPENCLAW_HOME, OPENCLAW_STATE_DIR, OPENCLAW_CONFIG_PATH, OPENCLAW_OAUTH_DIR)
set from _SANDBOX_HOME/_OPENCLAW_STATE_DIR; before merging, run the entrypoint
E2E suites that exercise sandbox lifecycle (restart recovery, gateway kill
recovery, full onboard/cloud path) to validate these env changes; if failures
arise, adjust the script to preserve per-user behavior or ensure shared state
permissions and paths (check usages of _SANDBOX_HOME, _OPENCLAW_STATE_DIR and
any code reading OPENCLAW_HOME/OPENCLAW_OAUTH_DIR) and rerun E2E until they
pass.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 26f7db05-57e5-42fc-a39d-46c88f850443

📥 Commits

Reviewing files that changed from the base of the PR and between d7bae57 and 0adc650.

📒 Files selected for processing (3)
  • scripts/nemoclaw-start.sh
  • test/nemoclaw-start.test.ts
  • test/sandbox-provisioning.test.ts

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26044452842
Target ref: 0adc65089e45a5a846ab8b83dfaf6fe435e61ed4
Workflow ref: main
Requested jobs: sandbox-operations-e2e,messaging-providers-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
sandbox-operations-e2e ✅ success

@ericksoa ericksoa changed the title Fix Slack pairing state root fix: align OpenClaw pairing state root May 18, 2026
@ericksoa ericksoa added v0.0.46 Release target bug Something isn't working Platform: DGX Spark Support for DGX Spark Integration: Slack Use this label to identify Slack integration issues with NemoClaw. Integration: OpenClaw Support for OpenClaw NemoClaw CLI Use this label to identify issues with the NemoClaw command-line interface (CLI). NV QA Bugs found by the NVIDIA QA Team fix labels May 18, 2026
@ericksoa ericksoa self-assigned this May 18, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
test/e2e/lib/fake-slack-api.cjs (1)

39-66: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Implement the real Socket Mode bootstrap response for apps.connections.open.

slackResponseFor() must return a successful response with a WebSocket URL when the /api/apps.connections.open endpoint is called with valid app-token authentication. Currently, it returns ok: false even when auth succeeds, breaking any client that follows Slack's actual Socket Mode bootstrap flow. Real clients call apps.connections.open first to obtain a dynamic WebSocket URL before attempting the connection—this fake implementation will silently pass the existing bespoke E2E tests but won't catch regressions in the actual Socket Mode connection path.

💡 Suggested fix
-function slackResponseFor(pathname, authAccepted) {
+function slackResponseFor(pathname, authAccepted, hostHeader = "") {
   if (!authAccepted) {
     return { status: 401, body: { ok: false, error: "bad_auth", endpoint: pathname } };
   }
+  if (pathname === "/api/apps.connections.open") {
+    return {
+      status: 200,
+      body: {
+        ok: true,
+        url: `ws://${hostHeader}/socket-mode`,
+      },
+    };
+  }
   if (pathname === "/api/chat.postMessage") {
     return {
       status: 200,
@@
-    const response = slackResponseFor(pathname, authAccepted);
+    const response = slackResponseFor(pathname, authAccepted, req.headers.host || "");
🤖 Prompt for 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.

In `@test/e2e/lib/fake-slack-api.cjs` around lines 39 - 66, slackResponseFor
currently returns an error for /api/apps.connections.open even when authAccepted
is true; update slackResponseFor to detect pathname ===
"/api/apps.connections.open" and when authAccepted is true return a 200 body
matching Slack's Socket Mode bootstrap (ok: true and a url field with a
websocket URL string) so clients can retrieve the dynamic WebSocket URL; use
expectedTokenForPath/tokenLooksPlaceholder logic to ensure auth is validated for
apps.connections.open and return the success response only when the app-token is
accepted.
🤖 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 `@test/e2e/test-openclaw-slack-pairing.sh`:
- Around line 372-377: The test currently hard-codes OPENCLAW_STATE_DIR in the
exec gosu gateway env block (the line setting
OPENCLAW_STATE_DIR=/sandbox/.openclaw), which masks regressions in the gateway
startup wiring; remove that hard-coded export or replace it so the test inherits
the real runtime value (e.g., omit the OPENCLAW_STATE_DIR assignment or set
OPENCLAW_STATE_DIR="$OPENCLAW_STATE_DIR") so the gateway helper uses the actual
state-root provided by the startup logic instead of /sandbox/.openclaw.

---

Outside diff comments:
In `@test/e2e/lib/fake-slack-api.cjs`:
- Around line 39-66: slackResponseFor currently returns an error for
/api/apps.connections.open even when authAccepted is true; update
slackResponseFor to detect pathname === "/api/apps.connections.open" and when
authAccepted is true return a 200 body matching Slack's Socket Mode bootstrap
(ok: true and a url field with a websocket URL string) so clients can retrieve
the dynamic WebSocket URL; use expectedTokenForPath/tokenLooksPlaceholder logic
to ensure auth is validated for apps.connections.open and return the success
response only when the app-token is accepted.
🪄 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: af8dbcc7-bb9e-4833-a56a-f7cf4c16f98f

📥 Commits

Reviewing files that changed from the base of the PR and between 0adc650 and 2af1d42.

📒 Files selected for processing (5)
  • .coderabbit.yaml
  • .github/workflows/nightly-e2e.yaml
  • test/e2e/lib/fake-slack-api.cjs
  • test/e2e/lib/slack-api-proof.sh
  • test/e2e/test-openclaw-slack-pairing.sh

Comment thread test/e2e/test-openclaw-slack-pairing.sh Outdated
@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26049442236
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 1 passed, 1 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ❌ failure

Failed jobs: openclaw-slack-pairing-e2e. Check run artifacts for logs.

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26049469071
Target ref: 2af1d4269ee0cc73be910f8b5bdbd151a7f7e40e
Workflow ref: main
Requested jobs: sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e
Summary: 3 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
sandbox-operations-e2e ✅ success
sandbox-survival-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26050814842
Target ref: 750d5add5039b64b33ef42a91af8feeb0a013704
Workflow ref: main
Requested jobs: sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e,messaging-providers-e2e
Summary: 0 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ⚠️ cancelled
messaging-providers-e2e ⚠️ cancelled
sandbox-operations-e2e ⚠️ cancelled
sandbox-survival-e2e ⚠️ cancelled

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26050722409
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 1 passed, 1 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ❌ failure

Failed jobs: openclaw-slack-pairing-e2e. Check run artifacts for logs.

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26051141655
Target ref: 9afe9cbe7245a89ccc8e59f0a663184fc10aa21f
Workflow ref: main
Requested jobs: messaging-providers-e2e,sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e
Summary: 3 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
messaging-providers-e2e ✅ success
sandbox-operations-e2e ⚠️ cancelled
sandbox-survival-e2e ✅ success

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 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 `@test/e2e/test-openclaw-slack-pairing.sh`:
- Around line 102-120: The sandbox_exec function currently masks the remote
command's exit status via the unconditional "|| true", causing callers to see
output even when the remote command failed; remove "|| true", capture the ssh
exit code after the subshell (e.g., result=$(run_with_timeout ... 2>&1); rc=$?),
then clean up the temp ssh_config, echo "$result", and return the captured rc
(return $rc) so callers can check success; apply the same pattern to the other
sandbox_exec call sites referenced.
🪄 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: 69ac7c44-a7c4-47cf-b2e9-723586787604

📥 Commits

Reviewing files that changed from the base of the PR and between 9afe9cb and b6eeeed.

📒 Files selected for processing (2)
  • test/e2e/docs/parity-inventory.generated.json
  • test/e2e/test-openclaw-slack-pairing.sh
✅ Files skipped from review due to trivial changes (1)
  • test/e2e/docs/parity-inventory.generated.json

Comment thread test/e2e/test-openclaw-slack-pairing.sh
@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26051783730
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 1 passed, 1 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ❌ failure

Failed jobs: openclaw-slack-pairing-e2e. Check run artifacts for logs.

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26051864791
Target ref: b6eeeed24c4041badbb03b32816510cff83391aa
Workflow ref: main
Requested jobs: sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
sandbox-operations-e2e ⚠️ cancelled
sandbox-survival-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26052400445
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 1 passed, 1 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ❌ failure

Failed jobs: openclaw-slack-pairing-e2e. Check run artifacts for logs.

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26052470332
Target ref: a8e1da9724adc06e91a444f579a3f5d6d1aaf13d
Workflow ref: main
Requested jobs: cloud-e2e,sandbox-survival-e2e,sandbox-operations-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
sandbox-operations-e2e ⚠️ cancelled
sandbox-survival-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26053134608
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 1 passed, 1 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ❌ failure

Failed jobs: openclaw-slack-pairing-e2e. Check run artifacts for logs.

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26053183931
Target ref: 199509f524285bf5856191b26d448698fb1c6e1a
Workflow ref: main
Requested jobs: sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e,messaging-providers-e2e
Summary: 3 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
messaging-providers-e2e ✅ success
sandbox-operations-e2e ⚠️ cancelled
sandbox-survival-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26053932989
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 1 passed, 1 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ❌ failure

Failed jobs: openclaw-slack-pairing-e2e. Check run artifacts for logs.

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26054001814
Target ref: a4672b8fb15014745b0f42c11c69d7760debfc8a
Workflow ref: main
Requested jobs: sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
sandbox-operations-e2e ⚠️ cancelled
sandbox-survival-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26055052164
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26055097512
Target ref: c399a0b7c51a5ee9118775f0fddf379c34f119e3
Workflow ref: main
Requested jobs: sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e,messaging-providers-e2e
Summary: 4 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
messaging-providers-e2e ✅ success
sandbox-operations-e2e ✅ success
sandbox-survival-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26056294003
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26056358009
Target ref: 428f80daa15a471c77230dda191b47e9bcde654c
Workflow ref: main
Requested jobs: sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e
Summary: 3 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
sandbox-operations-e2e ✅ success
sandbox-survival-e2e ✅ success

…te-root-3730

# Conflicts:
#	test/e2e/docs/parity-inventory.generated.json
#	test/e2e/lib/fake-slack-api.cjs
@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26065036322
Target ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e,messaging-providers-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
messaging-providers-e2e ✅ success
openclaw-slack-pairing-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26065061367
Target ref: 9753b43a69e4035d0830a32e7670b0f707e0f6e9
Workflow ref: main
Requested jobs: sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e
Summary: 3 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
sandbox-operations-e2e ✅ success
sandbox-survival-e2e ✅ success

…te-root-3730

# Conflicts:
#	.coderabbit.yaml
@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26076680090
Target ref: 6997edc1f2d4c4668e5eb78cbfe453d6a51c34d4
Workflow ref: main
Requested jobs: messaging-providers-e2e,sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e
Summary: 4 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
messaging-providers-e2e ✅ success
sandbox-operations-e2e ✅ success
sandbox-survival-e2e ✅ success

…te-root-3730

# Conflicts:
#	test/e2e/docs/parity-inventory.generated.json
#	test/e2e/docs/parity-map.yaml
Copy link
Copy Markdown
Contributor

@cjagwani cjagwani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — fix looks right and the e2e is thorough. No blockers from my side.

@cjagwani cjagwani dismissed their stale review May 19, 2026 18:54

Softening to non-blocking comment review — the fix is correct; my three concerns are PR-shape suggestions, not gates.

cjagwani

This comment was marked as spam.

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26117819739
Target ref: b4f1b060e8be218e359c6c459f1996fdd030734c
Workflow ref: main
Requested jobs: messaging-providers-e2e,cloud-e2e,sandbox-survival-e2e,sandbox-operations-e2e
Summary: 3 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
messaging-providers-e2e ✅ success
sandbox-operations-e2e ⚠️ cancelled
sandbox-survival-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26118325036
Target ref: b4f1b060e8be218e359c6c459f1996fdd030734c
Workflow ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
openclaw-slack-pairing-e2e ✅ success

Copy link
Copy Markdown
Contributor

@cjagwani cjagwani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — fix looks right and the e2e is thorough. No blockers from my side.

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26118674522
Target ref: ca8ccfdd076d33fb544942487c106ae514d777fa
Workflow ref: main
Requested jobs: messaging-providers-e2e,sandbox-survival-e2e,sandbox-operations-e2e,cloud-e2e
Summary: 4 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
messaging-providers-e2e ✅ success
sandbox-operations-e2e ✅ success
sandbox-survival-e2e ✅ success

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26119168776
Target ref: ca8ccfdd076d33fb544942487c106ae514d777fa
Workflow ref: fix/slack-pairing-state-root-3730
Requested jobs: openclaw-slack-pairing-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
openclaw-slack-pairing-e2e ✅ success

…te-root-3730

# Conflicts:
#	.coderabbit.yaml
@ericksoa ericksoa merged commit d147671 into main May 19, 2026
24 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26119839024
Target ref: 12300835d9d14fb7337b9c780b959b3ef1251bac
Workflow ref: main
Requested jobs: cloud-e2e,sandbox-survival-e2e,sandbox-operations-e2e
Summary: 3 passed, 0 failed, 0 skipped

Job Result
cloud-e2e ✅ success
sandbox-operations-e2e ✅ success
sandbox-survival-e2e ✅ success

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working fix Integration: OpenClaw Support for OpenClaw Integration: Slack Use this label to identify Slack integration issues with NemoClaw. NemoClaw CLI Use this label to identify issues with the NemoClaw command-line interface (CLI). NV QA Bugs found by the NVIDIA QA Team Platform: DGX Spark Support for DGX Spark v0.0.46 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[DGX Spark][Agent&Skills] openclaw pairing approve slack always returns "No pending pairing request found" — Slack bot cannot be paired

3 participants