Skip to content

feat(qa): wire Crabline Slack transport#97891

Merged
RomneyDa merged 1 commit into
mainfrom
codex/qa-crabline-slack
Jun 29, 2026
Merged

feat(qa): wire Crabline Slack transport#97891
RomneyDa merged 1 commit into
mainfrom
codex/qa-crabline-slack

Conversation

@RomneyDa

Copy link
Copy Markdown
Member

What Problem This Solves

Splits the Slack portion of #95920 into a focused QA Lab Crabline transport PR. QA Lab can now start Crabline's published Slack fake provider and pass the resulting Slack runtime env into the gateway process.

Why This Change Was Made

The Slack plugin now supports SLACK_API_URL, so QA Lab does not need to mutate Slack channel config or add Slack extension code. The transport forwards Crabline's createChannelDriverSmokeEnv() output and posts inbound messages using Crabline's provider URL and headers directly.

User Impact

Maintainers can run Crabline-backed Slack QA without live Slack credentials. Existing production Slack behavior is unchanged.

Evidence

  • node scripts/run-vitest.mjs run --config test/vitest/vitest.extension-qa.config.ts qa-lab/src/crabline-transport.test.ts qa-lab/src/suite.test.ts
  • pnpm tsgo:extensions:test

@RomneyDa
RomneyDa requested a review from a team as a code owner June 29, 2026 17:38
@github-actions github-actions Bot added the dependencies-changed PR changes dependency-related files label Jun 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Dependency Guard

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

Changed files:

  • extensions/qa-lab/package.json
  • pnpm-lock.yaml
  • pnpm-workspace.yaml

Maintainer follow-up:

  • Review whether the dependency changes are intentional.
  • Inspect resolved package deltas when lockfile, shrinkwrap, or workspace dependency policy changes are present.
  • Treat package-lock.json and npm-shrinkwrap.json diffs as 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

Copy link
Copy Markdown
Contributor

Dependency graph changes are blocked

OpenClaw does not accept dependency graph changes through PRs unless a repository admin or security explicitly authorizes the current head SHA. Dependency updates are generated internally by maintainers so external PRs cannot change the resolved graph.

Detected dependency graph changes:

  • pnpm-lock.yaml changed.
  • extensions/qa-lab/package.json changed devDependencies.

Auto-scrub was not attempted because this PR changes package manifest dependency graph fields:

  • extensions/qa-lab/package.json changed devDependencies.

Dependency graph changes must be reviewed by security or handled by maintainers internally. Please remove lockfile changes manually if they are not needed.

To remove lockfile changes, restore them from the target branch:

git fetch origin
git checkout 'origin/main' -- 'pnpm-lock.yaml'
git commit -m 'chore: remove dependency lockfile change'
git push

If this PR intentionally needs a dependency graph change, ask a repository admin or member of @openclaw/openclaw-secops to comment:

/allow-dependencies-change

The action will approve the current head SHA (5619798ae8af6fc2d14baf47c78bcd834d40de02) when it reruns. A later push requires a fresh approval.

@clawsweeper

clawsweeper Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 29, 2026, 1:51 PM ET / 17:51 UTC.

Summary
The PR updates QA Lab's Crabline transport to support Slack fake-provider runtime env wiring, inbound posting through Crabline provider URLs/headers, and the @openclaw/crabline package bump from 0.1.0 to 0.1.3.

PR surface: Source +2, Tests +102, Config 0, Other 0. Total +104 across 8 files.

Reproducibility: not applicable. this is a QA Lab feature PR rather than a reported current-main bug. Source review confirms current main lacks the Slack Crabline runtime env patch and still pins the older Crabline package.

Review metrics: 1 noteworthy metric.

  • Dependency Graph Change: 1 direct package version changed; 3 dependency metadata files touched. The package manifest, lockfile, and workspace release-age exemption are supply-chain review surfaces before merge.

Stored data model
Persistent data-model change detected: serialized state: extensions/qa-lab/src/crabline-transport.test.ts, serialized state: extensions/qa-lab/src/crabline-transport.ts. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🌊 off-meta tidepool
Patch quality: 🦐 gold shrimp
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Get exact-head dependency approval or remove the Crabline dependency graph changes.

Risk before merge

  • [P1] The PR changes a resolved executable QA dependency and lock/workspace metadata; repository policy and the live dependency guard require exact-head maintainer/security approval before merge.

Maintainer options:

  1. Approve Exact Dependency Head (recommended)
    A repository admin or security owner can approve the current head after reviewing the @openclaw/crabline package delta and accepting the resolved dependency graph change.
  2. Remove The Dependency Bump
    If dependency approval is not intended for this PR, remove the package, lockfile, and workspace release-age changes and keep only code compatible with the existing Crabline contract.

Next step before merge

  • [P2] Human maintainer/security approval is needed for the exact-head dependency graph change; there is no narrow code repair for ClawSweeper to apply.

Security
Needs attention: The diff has no concrete malicious-code signal, but it changes the resolved @openclaw/crabline package and remains blocked on repository dependency approval.

Review details

Best possible solution:

Keep the focused Slack QA Lab wiring, review and approve the exact Crabline package bump if maintainers want this path, then merge only after the dependency guard is satisfied on the current head.

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

Not applicable: this is a QA Lab feature PR rather than a reported current-main bug. Source review confirms current main lacks the Slack Crabline runtime env patch and still pins the older Crabline package.

Is this the best way to solve the issue?

Yes for the focused Slack path: the PR uses the existing Slack SLACK_API_URL seam and Crabline's published bridge instead of adding Slack plugin code. The remaining blocker is dependency approval, not a definite code defect.

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P3: This is a useful internal QA fake-provider integration, not an urgent user-facing runtime regression.
  • merge-risk: 🚨 security-boundary: The PR changes a resolved executable package used by QA automation and remains behind the repository dependency-approval boundary.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🌊 off-meta tidepool and patch quality is 🦐 gold shrimp.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The external-contributor proof gate does not apply to this member-authored, maintainer-labeled PR; the body includes command evidence for the QA Lab tests and extension typecheck.
Evidence reviewed

PR surface:

Source +2, Tests +102, Config 0, Other 0. Total +104 across 8 files.

View PR surface stats
Area Files Added Removed Net
Source 3 10 8 +2
Tests 2 105 3 +102
Docs 0 0 0 0
Config 2 2 2 0
Generated 0 0 0 0
Other 1 5 5 0
Total 8 122 18 +104

Security concerns:

  • [medium] Dependency graph approval still required — extensions/qa-lab/package.json:19
    The PR changes the Crabline package version plus lock/workspace metadata, and the live dependency guard says exact-head approval or removal is required before merge.
    Confidence: 0.95

What I checked:

  • Repository policy applied: Root AGENTS.md and scoped extensions/AGENTS.md were read fully; their dependency-review, plugin-boundary, protected-label, and review-depth guidance apply because the PR changes a bundled plugin and package metadata. (AGENTS.md:29, 888f399499c4)
  • Current main lacks this transport env patch: Current main only merges provider/Codex and heap-checkpoint runtime env patches into the QA gateway child; there is no transport-owned env patch for Crabline Slack. (extensions/qa-lab/src/suite.ts:1555, 888f399499c4)
  • Current main still pins the older Crabline dependency: QA Lab currently depends on @openclaw/crabline 0.1.0, so the Slack fake-provider bridge and inbound URL/header contract in 0.1.3 are not already present on main. (extensions/qa-lab/package.json:19, 888f399499c4)
  • Slack runtime seam already exists: The Slack plugin reads trusted SLACK_API_URL for WebClient routing, so the PR uses the existing Slack foundation instead of adding Slack-specific QA branches to the Slack plugin. (extensions/slack/src/client-options.ts:45, 888f399499c4)
  • Dependency contract inspected: The @openclaw/[email protected] tarball exports Slack/Telegram/WhatsApp fake-provider channels, Slack createChannelDriverSmokeEnv, and inbound providerUrl/providerHeaders; 0.1.0 only advertises Telegram and lacks those inbound URL/header fields.
  • PR diff wires the new env into gateway startup: The PR adds optional createRuntimeEnvPatch to the QA transport interface, implements it for Crabline, and merges it into startQaGatewayChild runtime env patches. (extensions/qa-lab/src/suite.ts:1558, 5619798ae8af)

Likely related people:

  • RomneyDa: Authored and merged the QA Lab Crabline channel-driver work and the Slack alternate API-root foundation that this PR builds on, and also authored the WhatsApp stack foundation referenced by the related broader PR. (role: feature owner and recent area contributor; confidence: high; commits: 63b13ea837fe, 39e1be080ca0, 0deddfa20428; files: extensions/qa-lab/src/crabline-transport.ts, extensions/qa-lab/src/suite.ts, extensions/slack/src/client-options.ts)
  • Vincent Koc: Recently fixed the same Crabline transport delivery-target path, so they are a plausible adjacent reviewer for transport-state behavior. (role: recent QA Lab contributor; confidence: medium; commits: 009d6b261aad; files: extensions/qa-lab/src/crabline-transport.ts, extensions/qa-lab/src/crabline-transport.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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.

How this review workflow works
  • 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.

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. labels Jun 29, 2026
@RomneyDa
RomneyDa merged commit 2cc43ae into main Jun 29, 2026
139 of 149 checks passed
@RomneyDa
RomneyDa deleted the codex/qa-crabline-slack branch June 29, 2026 17:57
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 30, 2026
QiuYuang pushed a commit to QiuYuang/openclaw that referenced this pull request Jul 1, 2026
chenyangjun-xy pushed a commit to chenyangjun-xy/openclaw that referenced this pull request Jul 1, 2026
chenyangjun-xy pushed a commit to chenyangjun-xy/openclaw that referenced this pull request Jul 3, 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 extensions: qa-lab maintainer Maintainer-authored PR merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: S 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.

1 participant