Skip to content

test(e2e): match Slack approvals to fixture workspace - #12873

Merged
jyaunches merged 5 commits into
mainfrom
codex/12626-e2e-fixture-repairs
Oct 12, 2026
Merged

jyaunches merged 5 commits into
mainfrom
codex/12626-e2e-fixture-repairs

Conversation

@jyaunches

@jyaunches jyaunches commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Outcome

The Slack pairing E2E fixture creates and checks the same workspace-qualified identity as pinned OpenClaw. Pending requests and approved entries must match the fixture workspace; raw Slack identities and other workspaces are rejected. Discord keeps its raw sender identity.

Reason

The earlier approval-only correction still failed in E2E run 37887438352. The synthetic request used a raw user ID, while the pinned Slack plugin creates a workspace-qualified request. The CLI can approve the stored request without an active Slack adapter, leaving the raw identity unchanged. Changing only the expected approval value was insufficient.

Changes

  • Merge main through 1d90ed51690af23814689fe49b365171d3a73114 without rewriting published history.
  • Give the fake Slack event an explicit workspace and qualify the request identity from that event. Retain the raw sender in metadata, matching OpenClaw Slack 2026.9.2.
  • Check the qualified identity in both pending and approved SQLite state.
  • Exercise request creation for two workspaces and exact SQLite matching for Slack and Discord. Preserve live assertions and timeouts.

Verification

  • Four focused regression cases failed before the correction; all 46 pairing support tests pass afterward.

  • A disposable pinned OpenClaw CLI reproduction stored the raw identity for the old request and the qualified identity for the corrected request. This is dependency evidence, not managed-image E2E qualification.

  • Normal commit hooks passed, including formatting, lint, repository checks, semantic phase plans, source-shape and growth checks, and secret scanning.

  • No secrets or credentials added.

  • Normal pre-push publication validation and CLI type checking passed; GitHub verified both new commits.

  • E2E run 38267782279 passed all selected jobs on 9b1497f575: Slack and Discord pairing, cloud onboarding, full E2E, and both security-posture variants. Slack and Discord state and cleanup artifacts were verified.

  • Main advanced during that run. After merging its provider-timeout fix, all 53 pairing and provider-timeout tests passed. Normal publication checks passed and GitHub verified merge commit 279a7efd0ed15e4360574dd78661e833e4d6f928.

  • Confirming E2E run 38270348970 passed on 279a7efd0ed15e4360574dd78661e833e4d6f928 against main at bf8ab4f542649fb98ef4e98d025ebd3671a0468e. All six scenario jobs and Relevant E2E passed.

  • Final Slack artifacts show qualified pending state, successful approval and allow-state lookup, repeated-approval rejection, and ten successful cleanup actions. All selected scenario cleanup reports have no failures.

  • After the latest main merge, all 125 pairing and inference-switch support tests passed. Normal publication checks passed, and GitHub verified the merge commit.

  • E2E run 38273434015 is running the same selected coverage on 5d2af86282b58cf70ce160a7d6587d3fa67fa2d9.

Review notes

Advisor run 38266844476 completed all nine specialists with no code findings for 9b1497f575da9d0f8ef4b27a19dd3e8fc01c7bc7 against 82526e9566bb4b85304ca5d96d9ab90aa3e6b329. Its aggregate failed solely because migration-completion marked the Slack selector unresolved. The trusted manual planner accepts that selector, and the E2E run includes it. Specialist-based self-review completed using all nine trusted prompts and shared criteria, with no additional findings. This is not a passing Advisor aggregate or independent clearance for the fallback. The final merge preserves the same two-file PR diff byte-for-byte; specialist-based self-review was repeated against the new base after inspecting its timeout correction, with no new findings.

The source audit accounts for request identity, adapter fallback, owner bootstrap, repeat approval, and cleanup. The selected live qualification passed for 279a7efd0ed15e4360574dd78661e833e4d6f928. Main later advanced to 1d90ed51690af23814689fe49b365171d3a73114 with separate inference-switch test changes. That commit is now merged as 5d2af86282b58cf70ce160a7d6587d3fa67fa2d9. The PR diff remains byte-identical, and the specialist self-review was reapplied with no new findings. Runtime qualification of this latest merge is pending.


Signed-off-by: Julie Yaunches jyaunches@nvidia.com

Pinned OpenClaw stores Slack approvals under team-qualified sender identities.
The pairing fixture queried the raw sender and would reject successful approval.

Use one explicit fixture team for Socket Mode events and the SQLite expectation.
Preserve raw Discord identity checks and the existing live assertions.

Validation: two SQLite cases failed before the correction, then all 44 pairing
support tests passed. Upstream rebuild reconciliation passed 71 support tests.
Live qualification remains pending.

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches jyaunches self-assigned this Oct 9, 2026
@copy-pr-bot

copy-pr-bot Bot commented Oct 9, 2026

Copy link
Copy Markdown

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.

@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/NemoClaw/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: eafed5b9-8cba-4e5a-b9fb-10f18109c950

📥 Commits

Reviewing files that changed from the base of the PR and between a234839 and 5d2af86.


📒 Files selected for processing (2)
  • test/e2e/live/openclaw-pairing-helpers.ts
  • test/e2e/support/openclaw-discord-pairing-helpers.test.ts

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/NemoClaw/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 41fa9e32-cc2e-47a6-86c7-c2d6d355aa6b

📥 Commits

Reviewing files that changed from the base of the PR and between aa753e2 and a234839.


📒 Files selected for processing (2)
  • test/e2e/live/openclaw-pairing-helpers.ts
  • test/e2e/support/openclaw-discord-pairing-helpers.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.



📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough

Walkthrough

The E2E pairing helpers now configure a Slack team ID and check team-qualified Slack approval entries. Tests cover exact and nonmatching Slack entries and exact Discord user entries.

Changes

Pairing team matching

Layer / File(s) Summary
Configure and check pairing identities
test/e2e/live/openclaw-pairing-helpers.ts, test/e2e/support/openclaw-discord-pairing-helpers.test.ts
The fake Slack API uses the SLACK_PAIRING_TEAM value. Slack allow-from checks use a team-qualified entry; Discord checks keep using the user ID. Tests verify exact and nonmatching SQLite entries.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: prekshivyas


Merge Risk: ⚪ Minimal · up to a2348

This change updates the Slack pairing E2E fixture to use the workspace-qualified approval identity and adds tests for it. It does not affect production behavior. Live qualification and hosted checks remain pending, but no actionable merge risk was found in the supplied code.

Pre-merge checks | Passed 4 | Failed 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%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 2 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: matching Slack approvals to the fixture workspace. It is specific and consistent with the pull request changes.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR

🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@jyaunches

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@github-code-quality

github-code-quality Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall line coverage in commit 5d2af86 in the codex/12626-e2e-fixt... branch is 97%. The line coverage in commit 63002cd in the main branch is 96%.

Show a line coverage summary of the most impacted files.
File main 63002cd codex/12626-e2e-fixt... 5d2af86 +/-
nemoclaw/src/onboard/config.ts 98% 96% -2%
nemoclaw/src/index.ts 94% 93% -1%
nemoclaw/src/bl...print/runner.ts 95% 95% 0%
nemoclaw/src/bl...ime-identity.ts 97% 97% 0%
nemoclaw/src/bl...t-management.ts 100% 100% 0%
nemoclaw/src/co.../config-show.ts 100% 100% 0%
nemoclaw/src/commands/slash.ts 100% 100% 0%
nemoclaw/src/on...native-route.ts 0% 100% +100%

Updated October 12, 2026 15:52 UTC

Integrate main at 82526e9.
Preserve published PR history. The merge is conflict-free.
Focused pairing support tests passed after integration.
The approval-only correction still failed in live E2E because the probe
created a raw user request. Pinned Slack creates workspace-qualified requests
and retains the raw sender in metadata. Match that contract before approval,
and check the same qualified identity in pending and approved SQLite state.

Four focused regressions failed before this correction. All 46 pairing
support tests pass. Live Slack qualification remains pending.
Integrate main at bf8ab4f after the
first repaired E2E run passed. Preserve the Slack pairing correction and
published history. Requalify the resulting commit with the selected E2E jobs.
Integrate main at 1d90ed5 without
rewriting published history. The added main changes affect separate
inference-switch tests; preserve the qualified Slack pairing fixture.
@jyaunches
jyaunches marked this pull request as ready for review October 12, 2026 16:02
@jyaunches
jyaunches merged commit 8ff5b84 into main Oct 12, 2026
61 of 62 checks passed
@jyaunches
jyaunches deleted the codex/12626-e2e-fixture-repairs branch October 12, 2026 16:02
@wscurran wscurran added area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance integration: openclaw OpenClaw integration behavior integration: slack Slack integration or channel behavior labels Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance integration: openclaw OpenClaw integration behavior integration: slack Slack integration or channel behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants