fix(qa): repair package Telegram harness boundaries#108499
Conversation
fac11d6 to
debe151
Compare
debe151 to
f7424e6
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f7424e6339
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| splitModelRef: params.splitModelRef, | ||
| qaChannelPlugin, | ||
| hasDiscoveryLabels, |
There was a problem hiding this comment.
Keep suite runtime test expectations in sync
With this dependency removed, createQaSuiteScenarioDeps no longer passes qaChannelPlugin, but extensions/qa-lab/src/suite-runtime-flow.test.ts:333 still asserts call.deps.qaChannelPlugin is the mocked plugin. That focused QA Lab test will fail because the property is now undefined; either preserve the dependency or update the test expectation in the same change.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7a232b7767
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| }); | ||
|
|
||
| it("loads the package Telegram harness without the private QA transport runtime", async () => { | ||
| const { runQaTelegramSuite } = await import("./src/live-transports/telegram/cli.runtime.js"); |
There was a problem hiding this comment.
Exercise the harness path that still loads private QA protocol
In the installed-package Telegram lane this test only imports cli.runtime.js; it never calls runQaTelegramSuite, so it misses the runtime path where runQaFlowSuiteFromRuntime() imports lab-server.ts, which imports bus-state.ts/bus-queries.ts. Those modules still have value imports from openclaw/plugin-sdk/qa-channel-protocol (extensions/qa-lab/src/bus-state.ts:3, extensions/qa-lab/src/bus-queries.ts:2), and that subpath is explicitly omitted from the package (package.json:156; node -e "import('openclaw/plugin-sdk/qa-channel-protocol')" returns ERR_PACKAGE_PATH_NOT_EXPORTED). When the Docker harness actually runs the suite, package acceptance can still fail even though this import-only regression passes.
Useful? React with 👍 / 👎.
|
Merged via squash.
|
* fix(qa): keep packaged entry off private transport * fix(qa): lazy-load private transport runtime * fix(qa): pass relative package artifact path * fix(qa): isolate packaged bus protocol * fix(qa): mount package scenario catalog
* fix(qa): keep packaged entry off private transport * fix(qa): lazy-load private transport runtime * fix(qa): pass relative package artifact path * fix(qa): isolate packaged bus protocol * fix(qa): mount package scenario catalog
What Problem This Solves
Exact main release checks exposed four installed-package Telegram harness failures:
openclaw/plugin-sdk/qa-channel, a private facade intentionally absent from packed runtimes.--output-dir.openclaw/plugin-sdk/qa-channel-protocolexport.Exact failures:
Why This Change Was Made
QA Lab registration imports only the narrow public plugin-entry helper. Lab-server and native QA-channel paths lazy-load the private facade only when those embedded QA features execute.
The package-mounted QA Lab bus owns the two small protocol helpers its source graph requires. Parity tests compare parsing and bounded redaction with the canonical local-only protocol. This avoids widening installed-package exports merely to satisfy a source harness.
The Docker harness now keeps separate relative CLI and absolute mount output paths. It also mounts the QA scenario catalog as read-only harness data while the SUT remains the installed package candidate.
Regression coverage imports the real Telegram harness while both private QA SDK paths fail on load, checks protocol parity, and asserts both package-path and scenario-data mounts.
User Impact
Package acceptance and live Telegram validation can exercise an installed package without private QA-only exports, rejected artifact paths, or missing harness scenarios. Explicit QA-channel flows retain their behavior.
Evidence
3670f9d8de7bac03ab7d8728cb26a4c3ac0b92be.tbx_01kxm2zth4vdanxv1ykgcbsxck: focused package/QA tests green; targeted oxfmt, oxlint, and shell syntax green.