Skip to content

feat(qa): add transport scenario requirements#97915

Merged
RomneyDa merged 1 commit into
mainfrom
codex/channel-scenario-driver-contract
Jun 29, 2026
Merged

feat(qa): add transport scenario requirements#97915
RomneyDa merged 1 commit into
mainfrom
codex/channel-scenario-driver-contract

Conversation

@RomneyDa

@RomneyDa RomneyDa commented Jun 29, 2026

Copy link
Copy Markdown
Member

What Problem This Solves

QA Lab needs a shared foundation for making channel scenarios portable across the existing qa-channel and Crabline suite transports, without introducing a parallel channel-driver abstraction. Today both transports already route through QaTransportAdapter, but there was no shared way for a scenario to declare which transport capabilities or generic channel actions it needs before a later PR ports Slack, Telegram, and WhatsApp scenarios onto that path.

Why This Change Was Made

This PR keeps the existing transport architecture and adds a small scenario-requirements layer on top of it. QaTransportCapabilities is now exported from the existing transport adapter surface, transports advertise supported generic actions, and qa-transport-scenarios.ts can define/filter/assert scenario requirements using existing live standard scenario IDs plus QaTransportAdapter capabilities/actions.

The helper is wired through the existing live transport scenario metadata surface so it is production-reachable QA Lab code, but this PR still does not change runner behavior or port any channel scenarios yet.

User Impact

No end-user behavior changes. QA developers can now build the next stacked PRs around the existing transport adapter contract instead of adding a new driver concept.

Evidence

  • node scripts/run-vitest.mjs run --config test/vitest/vitest.extension-qa.config.ts extensions/qa-lab/src/qa-transport-scenarios.test.ts extensions/qa-lab/src/scenario-runtime-api.test.ts extensions/qa-lab/src/qa-channel-transport.test.ts extensions/qa-lab/src/crabline-transport.test.ts extensions/qa-lab/src/suite-runtime-flow.test.ts
  • node scripts/run-vitest.mjs run --config test/vitest/vitest.extension-qa.config.ts extensions/qa-lab/src/qa-transport-scenarios.test.ts extensions/qa-lab/src/scenario-runtime-api.test.ts
  • pnpm lint --threads=8
  • pnpm run lint:extensions:bundled
  • pnpm run deadcode:dependencies
  • pnpm deadcode:unused-files
  • pnpm check:test-types
  • pnpm tsgo:extensions:test
  • git diff --check

@clawsweeper

clawsweeper Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 29, 2026, 5:50 PM ET / 21:50 UTC.

Summary
The PR adds internal QA Lab transport scenario requirement helpers, exports them through live transport scenario metadata, and advertises supported generic actions on QA transport adapters.

PR surface: Source +168, Tests +153. Total +321 across 8 files.

Reproducibility: not applicable. This PR adds internal QA Lab infrastructure rather than reporting a runtime bug. The relevant confidence path is source review plus the exact-head QA Lab and CI checks.

Review metrics: none identified.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🌊 off-meta tidepool
Patch quality: 🐚 platinum hermit
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:

  • none.

Next step before merge

  • No ClawSweeper repair lane is needed; the remaining action is normal maintainer review and landing judgment.

Security
Cleared: The diff changes internal QA Lab TypeScript source and tests only; it does not touch dependencies, workflows, secrets, install scripts, publishing, or downloaded-code execution.

Review details

Best possible solution:

Land the existing QaTransportAdapter-based requirements layer after ordinary maintainer review, while keeping later Slack, Telegram, and WhatsApp scenario ports in separate follow-up PRs.

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

Not applicable: this PR adds internal QA Lab infrastructure rather than reporting a runtime bug. The relevant confidence path is source review plus the exact-head QA Lab and CI checks.

Is this the best way to solve the issue?

Yes: the PR keeps scenario requirements on the existing QaTransportAdapter and live transport scenario metadata path, which is the narrowest maintainable owner boundary I found in the surrounding QA Lab code.

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P3: The PR is internal QA Lab developer infrastructure with no end-user runtime, config, provider, storage, or channel-delivery impact.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool 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 external-contributor real behavior proof gate does not apply to this maintainer-labeled internal QA infrastructure PR.
Evidence reviewed

PR surface:

Source +168, Tests +153. Total +321 across 8 files.

View PR surface stats
Area Files Added Removed Net
Source 5 180 12 +168
Tests 3 154 1 +153
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 8 334 13 +321

What I checked:

  • Protected maintainer PR: Live PR metadata shows this PR is open, unmerged, authored by a repository member, and labeled maintainer, so conservative cleanup should not auto-close it. (b2e265548cbe)
  • Current main transport contract: Current main already centralizes QA transport actions and common capabilities on QaTransportAdapter, so the PR builds on the existing adapter surface instead of adding a parallel driver abstraction. (extensions/qa-lab/src/qa-transport.ts:160, 15de9d881a84)
  • PR head requirement helper: The PR head maps every live standard scenario id to transport capability requirements and checks unsupported requirements against adapter capabilities plus supportedActions. (extensions/qa-lab/src/qa-transport-scenarios.ts:46, b2e265548cbe)
  • Production reachability: The new helpers are re-exported from the existing live transport scenario metadata module, making the layer reachable from the current QA Lab live transport path. (extensions/qa-lab/src/live-transports/shared/live-transport-scenarios.ts:18, b2e265548cbe)
  • Sibling transport behavior: Current main has Crabline generic actions throw while qa-channel owns action handling; the PR's default empty supportedActions plus qa-channel override preserves that sibling distinction. (extensions/qa-lab/src/crabline-transport.ts:260, 15de9d881a84)
  • Validation status: Live exact-head status checks later showed the QA smoke, extension bundled, lint, dependency, test-type, security, and compact CI lanes completed successfully for the reviewed head. (b2e265548cbe)

Likely related people:

  • RomneyDa: Current-main blame and logs show this person introduced the QA transport adapter surface and live transport scenario metadata, then extended the adjacent Crabline transport path shortly before this PR. (role: recent area contributor; confidence: high; commits: 18f0eeab20e9, 2cc43aec2deb; files: extensions/qa-lab/src/qa-transport.ts, extensions/qa-lab/src/live-transports/shared/live-transport-scenarios.ts, extensions/qa-lab/src/crabline-transport.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: 🐚 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. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed 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 Jun 29, 2026
@RomneyDa
RomneyDa force-pushed the codex/channel-scenario-driver-contract branch from 08c3980 to 090387f Compare June 29, 2026 20:12
@RomneyDa RomneyDa changed the title feat(qa): add channel scenario driver contract refactor(qa): reuse transport capabilities in scenario runtime Jun 29, 2026
@clawsweeper clawsweeper Bot added 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. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 29, 2026
@RomneyDa
RomneyDa force-pushed the codex/channel-scenario-driver-contract branch from 090387f to a81723b Compare June 29, 2026 20:33
@RomneyDa RomneyDa changed the title refactor(qa): reuse transport capabilities in scenario runtime feat(qa): add transport scenario requirements Jun 29, 2026
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed 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 Jun 29, 2026
@RomneyDa
RomneyDa force-pushed the codex/channel-scenario-driver-contract branch from a81723b to b2e2655 Compare June 29, 2026 21:39
@clawsweeper clawsweeper Bot removed the rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. label Jun 29, 2026
@clawsweeper clawsweeper Bot added 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. and removed status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 29, 2026
@RomneyDa
RomneyDa merged commit 843ad14 into main Jun 29, 2026
111 of 119 checks passed
@RomneyDa
RomneyDa deleted the codex/channel-scenario-driver-contract branch June 29, 2026 21:53
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

extensions: qa-lab maintainer Maintainer-authored PR P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: M 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