Skip to content

fix(qa): restore Slack transport under isolated installs - #137283

Merged
vincentkoc merged 1 commit into
mainfrom
fix/qa-slack-private-runtime
Sep 3, 2026
Merged

fix(qa): restore Slack transport under isolated installs#137283
vincentkoc merged 1 commit into
mainfrom
fix/qa-slack-private-runtime

Conversation

@vincentkoc

Copy link
Copy Markdown
Member

Fixes #137245

What Problem This Solves

Fixes an issue where maintainers running the source-only private QA Slack transport would see it fail before credential acquisition after an isolated pnpm install.

Why This Change Was Made

The private QA build emits its Slack consumer under the root dist graph while deliberately externalizing @slack/web-api. The root package now declares the same pinned SDK version as the Slack plugin, so Node can resolve that external dependency under pnpm's isolated linker without changing plugin ownership or bundling topology.

User Impact

Slack QA and RTT qualification can start the live transport again after an isolated frozen install.

Evidence

@vincentkoc vincentkoc self-assigned this Sep 3, 2026
@openclaw-barnacle openclaw-barnacle Bot added size: XS maintainer Maintainer-authored PR labels Sep 3, 2026
@vincentkoc
vincentkoc marked this pull request as ready for review September 3, 2026 11:53
@vincentkoc
vincentkoc requested a review from a team as a code owner September 3, 2026 11:53
@clawsweeper

clawsweeper Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

@github-actions github-actions Bot added the dependencies-changed PR changes dependency-related files label Sep 3, 2026
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Dependency Guard

This PR changes dependency-related files. Maintainers should confirm these changes are intentional.

Changed files:

  • package.json
  • pnpm-lock.yaml

Maintainer follow-up:

  • Review whether the dependency changes are intentional.
  • Inspect resolved package deltas when lockfiles or workspace dependency policy changes are present.
  • Treat pnpm-lock.yaml and package-lock.json diffs as dependency security-review surfaces.
  • Run pnpm deps:changes:report -- --base-ref origin/main --markdown /tmp/dependency-changes.md --json /tmp/dependency-changes.json locally for detailed release-style evidence.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Dependency graph changes noted

This PR includes dependency graph changes. The dependency guard is informational because the PR author is a repository admin, a member of @openclaw/openclaw-secops, or an OpenClaw organization member with Maintain or Admin repository access.

  • Current SHA: 14d08f717994ed41b3f6092f5738c88a585c63a5
  • Trusted actor: @vincentkoc
  • Trusted role: pull request author; openclaw-secops

Security review is still recommended before merge when the dependency graph change is intentional.

@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Sep 3, 2026
@clawsweeper

clawsweeper Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 3, 2026, 8:15 AM ET / 12:15 UTC.

ClawSweeper review

What this changes

The PR adds the existing pinned Slack Web API package to the root dependency graph and tests that private QA’s root distribution can resolve it after an isolated pnpm install.

Regression provenance

Possible regression — probable (reproduction; reviewed change). No predecessor PR is attributed.

Merge readiness

Ready for maintainer review

No blocking correctness findings. This active member-authored PR repairs a current-main isolated-install failure at the root build boundary; current main still lacks the root dependency declaration, so the PR remains necessary.

Priority: P2
Reviewed head: 14d08f717994ed41b3f6092f5738c88a585c63a5

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused root-resolution repair with a credible pre-fix failure, an appropriate boundary test, and no supported correctness or supply-chain concern.
Proof confidence 🐚 platinum hermit (4/6) Not applicable: The author is a repository member, so the external-contributor proof gate does not apply; the PR body nevertheless records an isolated frozen-install, root-dist resolver result for the rebased candidate.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Not applicable Not applicable: The author is a repository member, so the external-contributor proof gate does not apply; the PR body nevertheless records an isolated frozen-install, root-dist resolver result for the rebased candidate.
Evidence reviewed 6 items Root-built QA call chain: The Slack QA adapter imports the Slack plugin public API; that API exports the client factory, whose implementation imports the external Slack SDK.
Externalization contract: The unified root build explicitly leaves @slack/web-api external rather than bundling it.
Isolated-install cause remains on main: The workspace uses pnpm's isolated linker, while fetched current main does not declare @slack/web-api in the root package manifest.
Findings None None.
Security None None.

How this fits together

Private QA compiles its QA Lab transport code into the root distribution, where it imports the Slack plugin’s public client API. That client retains the Slack SDK as an external Node dependency, which must resolve from the root distribution before credential acquisition and the QA scenario begin.

flowchart LR
  A[Isolated pnpm install] --> B[Private QA build]
  B --> C[Root distribution]
  C --> D[QA Lab Slack adapter]
  D --> E[Slack plugin client API]
  E --> F[External Slack SDK]
  F --> G[Credential and transport scenario]
Loading

Before merge

None.

Agent review details

Security

None.

PR surface

Tests +23, Config +1, Other +3. Total +27 across 3 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 1 23 0 +23
Docs 0 0 0 0
Config 1 1 0 +1
Generated 0 0 0 0
Other 1 3 0 +3
Total 3 27 0 +27

Review metrics

Metric Value Why it matters
Production versus test delta production +1 manifest declaration, tests +23, lockfile +3 The production change is limited to making an already-pinned dependency directly resolvable from the root QA runtime; no runtime code or new package artifact is added.

Root-cause cluster

Relationship: fixed_by_candidate
Canonical: #137245
Summary: This PR is the active candidate repair for the linked isolated-install private-QA Slack resolver defect.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Technical review

Best possible solution:

Retain the root declaration at the plugin’s existing pinned version and the root-dist resolver regression test, while keeping the Slack plugin as the owner of its SDK usage.

Do we have a high-confidence way to reproduce the issue?

Yes. The current source proves the root-built QA adapter reaches an externalized Slack SDK, and the linked issue supplies a concrete isolated-install build/run failure before any credential or Slack API call.

Is this the best way to solve the issue?

Yes. Declaring the existing exact plugin SDK version at the root is the narrow owner-boundary repair; bundling the SDK would contradict the explicit externalization contract and moving ownership from the Slack plugin would be broader and less maintainable.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against e0dad1fc1333.

Labels

Label justifications:

  • P2: This restores the private Slack QA and RTT qualification path, without changing ordinary Slack message delivery.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The author is a repository member, so the external-contributor proof gate does not apply; the PR body nevertheless records an isolated frozen-install, root-dist resolver result for the rebased candidate.

Evidence

What I checked:

Likely related people:

  • Peter Steinberger: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)
  • Vincent Koc: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (1 earlier review cycle)
  • reviewed 2026-09-03T12:02:02.921Z sha 7f0aeaf :: needs maintainer review before merge. :: none

@vincentkoc
vincentkoc force-pushed the fix/qa-slack-private-runtime branch from 7f0aeaf to 14d08f7 Compare September 3, 2026 12:06
@vincentkoc
vincentkoc merged commit 9eb5e4f into main Sep 3, 2026
170 checks passed
@vincentkoc
vincentkoc deleted the fix/qa-slack-private-runtime branch September 3, 2026 12:26
vincentkoc added a commit that referenced this pull request Sep 3, 2026
…36761-session-mode-local-20260903

* commit '58187248c8cafd7b8cfbba3de8d001762fb08b48':
  improve(testing): add watchOS Gateway upgrade survivor (#137203)
  improve(ui): structure Devices rows with an actions menu and a facts panel (#137084)
  test(cli): reuse canonical pairing call guard (#137210)
  fix(sessions): prevent gateway stalls during large session cleanup (#126035)
  fix(qa): resolve Slack runtime dependency (#137283)
  fix: fence Session Observer catalog requests (#137243)
  fix(memory): make watcher pressure guidance actionable (#137181)
  test(entry): type the respawn exit mock directly (#137258)
  fix(release): install first-hop fixtures through the candidate registry (#137286)

# Conflicts:
#	scripts/e2e/lib/upgrade-survivor/assertions.mjs
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Sep 4, 2026
180Sai pushed a commit to 180Sai/openclaw that referenced this pull request Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies-changed PR changes dependency-related files maintainer Maintainer-authored PR P2 Normal backlog priority with limited blast radius. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XS status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Private Slack QA leaks plugin dependencies into root dist

1 participant