Skip to content

test(e2e): restore messaging bash parity - #5807

Merged
jyaunches merged 7 commits into
NVIDIA:mainfrom
jyaunches:e2e-parity/p0-c-messaging-bash-parity
Jun 25, 2026
Merged

test(e2e): restore messaging bash parity#5807
jyaunches merged 7 commits into
NVIDIA:mainfrom
jyaunches:e2e-parity/p0-c-messaging-bash-parity

Conversation

@jyaunches

@jyaunches jyaunches commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Summary

Restore issue #5800 parity package P0-C for merged bash-suite messaging/Discord/WhatsApp deltas only.

Related Issues

Refs #5800
Refs #5098
Refs #5328
Refs #5391
Refs #5581
Refs #5624
Refs #5571
Refs #5704

Scope gate

Parity map

ID Source PR Contract Inference classification Vitest assertion / waiver Status
C1 #5328 Compact persisted messaging plans omit derived render/build/runtime/state/health sections while retaining durable channel/config/credential/policy shape. none src/lib/messaging/plan-validation.test.ts; test/e2e-scenario/live/channels-add-remove.test.ts covered
C2 #5328 Existing compact plans hydrate before merge so channel add preserves prior hooks/render semantics. none existing src/lib/messaging/applier/host-state-applier.test.ts covered
C3 #5391, #5571 Discord config must not emit a non-loopback per-account proxy; OpenClaw managed proxy remains configured. none test/discord-template-resolver-proxy.test.ts; test/generate-openclaw-config.test.ts; test/e2e-scenario/live/messaging-providers.test.ts; test/e2e-scenario/live/openclaw-discord-pairing.test.ts covered
C4 #5581 OpenClaw Discord pairing Vitest preserves fake Gateway token rewrite, connect-shell approval, and workflow dispatch boundary. hermetic-default existing test/e2e-scenario/live/openclaw-discord-pairing.test.ts; support boundary/helper tests covered
C5 #5624 Fake Discord Gateway capture proof accepts only redacted identify rows, rejects placeholder/raw-token leakage, and proves token rewrite. hermetic-default test/e2e-scenario/live/messaging-providers.test.ts; existing Hermes/OpenClaw Discord capture assertions and support tests covered
C6 #5704 WhatsApp policy checks require expected endpoints before rebuild and endpoints plus Node binary scope after rebuild. none test/e2e-scenario/live/messaging-providers.test.ts; test/policies.test.ts covered

Inference mode support

  • Default mode for touched live targets: none for config/unit assertions; hermetic-default for fake Discord Gateway/live sandbox token-rewrite assertions.
  • Real inference support preserved: not applicable to this package’s messaging/provider contracts; live sandbox targets still use existing NVIDIA_INFERENCE_API_KEY path where their broader scenario requires install/onboard.
  • Modes validated in this PR: unit/support hermetic commands below; selective live E2E run 28194650942 passed messaging-providers-vitest, channels-add-remove-vitest, and openclaw-discord-pairing-vitest at 531acd9f8. Follow-up head 46e004e3 only tightens local workflow-boundary assertions for COMPATIBLE_API_KEY.
  • If not validated with real inference: package contracts are messaging/config/proxy/capture policy boundaries; channels-add-remove-vitest also passed the hosted-compatible workflow path after staging NVIDIA_INFERENCE_API_KEY as COMPATIBLE_API_KEY.

Validation

  • npx vitest run --project cli --maxWorkers 1 --no-fileParallelism src/lib/messaging/plan-validation.test.ts src/lib/messaging/applier/host-state-applier.test.ts test/discord-template-resolver-proxy.test.ts
  • npx vitest run --project e2e-vitest-support --maxWorkers 1 --no-fileParallelism test/e2e-scenario/support-tests/openclaw-discord-legacy-capture.test.ts test/e2e-scenario/support-tests/openclaw-discord-pairing-helpers.test.ts test/e2e-scenario/support-tests/openclaw-discord-workflow-boundary.test.ts
  • npx vitest run --project cli --maxWorkers 1 --no-fileParallelism --testTimeout 30000 test/generate-openclaw-config.test.ts -t "Discord|proxy|non-Slack"
  • npx vitest run --project cli --maxWorkers 1 --no-fileParallelism test/policies.test.ts -t "whatsapp"
  • npx vitest run --project e2e-vitest-support --maxWorkers 1 --no-fileParallelism test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts test/e2e-scenario/support-tests/openclaw-discord-workflow-boundary.test.ts
  • Selective live E2E workflow 28194650942: messaging-providers-vitest, channels-add-remove-vitest, openclaw-discord-pairing-vitest all passed.

Follow-ups / waivers

  • None.

Summary by CodeRabbit

  • Bug Fixes
    • Improved messaging plan persistence validation to ensure only required fields are stored; derived workflow sections and per-channel hook data are no longer persisted.
    • Strengthened live channel add/remove assertions to enforce agentRender and per-channel hooks absence.
    • Updated live messaging provider and Discord pairing validations (WhatsApp preset hosts and stricter gateway capture checks; account proxy now required to be exactly empty when unset).
  • Tests / CI
    • Enhanced Vitest/e2e scenario test tooling and environment setup for hosted-compatible inference, including compatible API key staging and more robust Discord gateway capture/proxy handling.

@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3c30d563-b272-424c-bf7a-f03c5f847335

📥 Commits

Reviewing files that changed from the base of the PR and between 531acd9 and 46e004e.

📒 Files selected for processing (1)
  • tools/e2e-scenarios/workflow-boundary.mts
🚧 Files skipped from review as they are similar to previous changes (1)
  • tools/e2e-scenarios/workflow-boundary.mts

📝 Walkthrough

Walkthrough

This PR updates messaging plan persistence tests, Telegram plan invariants, Discord and WhatsApp provider checks, hosted inference job environment validation, and the Discord pairing proxy assertion.

Changes

Messaging test updates

Layer / File(s) Summary
Compact persisted plan validation
src/lib/messaging/plan-validation.test.ts
A unit test checks that compaction preserves networkPolicy while removing derived workflow sections and reducing channel inputs to the persisted shape.
Telegram plan persistence
test/e2e-scenario/live/channels-add-remove.test.ts
The Telegram live scenario now asserts agentRender and per-channel hooks are absent, and the branch-specific Telegram agentRender checks were removed.
Provider policy and capture checks
test/e2e-scenario/live/messaging-providers-helpers.ts, test/e2e-scenario/live/messaging-providers.test.ts
The filesystem probe now prints the matched path or ABSENT, the fake Discord Gateway client handles extended frames and proxy handshakes, the gateway shutdown path uses a finished guard, the WhatsApp rebuild test re-reads the policy and checks host and Node scope entries, and the Discord gateway test verifies capture-file contents and sanitized token output.
Hosted inference job env wiring
.github/workflows/e2e-vitest-scenarios.yaml, tools/e2e-scenarios/workflow-boundary.mts
The e2e workflow job and boundary validation add hosted-compatible inference variables, pin model and provider settings, and stage COMPATIBLE_API_KEY from the NVIDIA inference secret.
Discord pairing proxy
test/e2e-scenario/live/openclaw-discord-pairing.test.ts
The Discord pairing test now expects configSummary.accountProxy to be an empty string.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5600: Updates the same channels-add-remove Vitest job and boundary validation for hosted/compatible inference env wiring.
  • NVIDIA/NemoClaw#5624: Uses the same Discord gateway capture verification surface and token-redaction assertions.
  • NVIDIA/NemoClaw#5704: Adjusts the same WhatsApp policy verification around host allow entries and Node scope matching.

Suggested labels

bug-fix

Suggested reviewers

  • sandl99
  • cv

Poem

A rabbit hopped through tests so bright,
🐇✨ plans grew slim and paths stayed right.
Discord whispers lost their trace,
WhatsApp hosts kept their place.
Hop-hop—clean checks in the code tonight.

🚥 Pre-merge checks | ✅ 4 | ❌ 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%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the PR’s main goal of restoring messaging parity in e2e tests.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/e2e-scenario/live/messaging-providers.test.ts`:
- Around line 905-907: The new redaction assertion in the messaging-providers
e2e test is currently vacuous because `gatewayCaptureText` falls back to an
empty string when the fake Gateway capture file is missing. Update the
`fakeGateway.captureFile` handling in `messaging-providers.test.ts` so the test
first asserts the file exists, then reads it unconditionally into
`gatewayCaptureText` before performing the `M13f` redaction check. Keep the fix
scoped to the test setup around `fakeGateway.captureFile` and the subsequent
capture-text assertions so the test fails if the artifact is never produced.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: a5ec0f6c-4cfb-4680-b857-d52ee4e72437

📥 Commits

Reviewing files that changed from the base of the PR and between 3cedcbf and 09a6cec.

📒 Files selected for processing (4)
  • src/lib/messaging/plan-validation.test.ts
  • test/e2e-scenario/live/channels-add-remove.test.ts
  • test/e2e-scenario/live/messaging-providers.test.ts
  • test/e2e-scenario/live/openclaw-discord-pairing.test.ts

Comment thread test/e2e-scenario/live/messaging-providers.test.ts Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 28186432462
Workflow ref: e2e-parity/p0-c-messaging-bash-parity
Requested scenarios: (default — all supported)
Requested jobs: messaging-providers-vitest,channels-add-remove-vitest,openclaw-discord-pairing-vitest
Summary: 1 passed, 1 failed, 1 cancelled, 0 skipped

Job Result
channels-add-remove-vitest ❌ failure
messaging-providers-vitest ⚠️ cancelled
openclaw-discord-pairing-vitest ✅ success

Failed jobs: channels-add-remove-vitest. Check run artifacts for logs.

@jyaunches

Copy link
Copy Markdown
Contributor Author

Selective P0-C E2E status update for run https://github.com/NVIDIA/NemoClaw/actions/runs/28187168691:

  • openclaw-discord-pairing-vitest: green.
  • channels-add-remove-vitest: failed before parity assertions at cloud-openclaw onboarding because the workflow-provided NVIDIA_INFERENCE_API_KEY does not satisfy the nvapi- prefix validation. Treating this as a secret/config boundary, not a P0-C assertion failure.
  • messaging-providers-vitest: still in progress.

Regular PR checks are green at current SHA bc59e1e2d.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 28187168691
Workflow ref: e2e-parity/p0-c-messaging-bash-parity
Requested scenarios: (default — all supported)
Requested jobs: messaging-providers-vitest,channels-add-remove-vitest,openclaw-discord-pairing-vitest
Summary: 1 passed, 2 failed, 0 cancelled, 0 skipped

Job Result
channels-add-remove-vitest ❌ failure
messaging-providers-vitest ❌ failure
openclaw-discord-pairing-vitest ✅ success

Failed jobs: channels-add-remove-vitest, messaging-providers-vitest. Check run artifacts for logs.

@jyaunches

Copy link
Copy Markdown
Contributor Author

Selective P0-C E2E final status for run https://github.com/NVIDIA/NemoClaw/actions/runs/28187168691:\n\n- openclaw-discord-pairing-vitest: ✅ green.\n- channels-add-remove-vitest: ❌ failed before parity assertions during cloud-openclaw onboarding because the workflow-provided NVIDIA_INFERENCE_API_KEY fails nvapi- prefix validation; classified as workflow secret/config boundary.\n- messaging-providers-vitest: ❌ failed after a long run with pre-existing live scenario failures around raw fake-token surface probes and Discord Gateway websocket proof (M13d/M13e/M13f). These failures are not introduced by the P0-C diff except that this PR intentionally strengthens the M13f capture-file assertion; regular PR checks and focused unit/support validations remain green.\n\nCurrent status: P0-C parity assertions are implemented; selective live validation is blocked by live-runner/secret/provider behavior rather than a local compile/unit failure.

@jyaunches
jyaunches force-pushed the e2e-parity/p0-c-messaging-bash-parity branch from 8fdb454 to d69d2ac Compare June 25, 2026 19:06
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 28193989752
Workflow ref: e2e-parity/p0-c-messaging-bash-parity
Requested scenarios: (default — all supported)
Requested jobs: messaging-providers-vitest,openclaw-discord-pairing-vitest,channels-add-remove-vitest
Summary: 1 passed, 1 failed, 1 cancelled, 0 skipped

Job Result
channels-add-remove-vitest ❌ failure
messaging-providers-vitest ⚠️ cancelled
openclaw-discord-pairing-vitest ✅ success

Failed jobs: channels-add-remove-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ⚠️ Run cancelled — no signal

Run: 28194577038
Workflow ref: e2e-parity/p0-c-messaging-bash-parity
Requested scenarios: (default — all supported)
Requested jobs: (selector rejected by workflow validation)
Summary: 0 passed, 0 failed, 67 cancelled, 0 skipped

Job Result
agent-turn-latency-vitest ⚠️ cancelled
bedrock-runtime-compatible-anthropic-vitest ⚠️ cancelled
brave-search-vitest ⚠️ cancelled
channels-add-remove-vitest ⚠️ cancelled
channels-stop-start-vitest ⚠️ cancelled
cloud-inference-vitest ⚠️ cancelled
cloud-onboard-vitest ⚠️ cancelled
common-egress-agent-vitest ⚠️ cancelled
concurrent-gateway-ports-vitest ⚠️ cancelled
credential-migration-vitest ⚠️ cancelled
credential-sanitization-vitest ⚠️ cancelled
cron-preflight-inference-local-vitest ⚠️ cancelled
device-auth-health-vitest ⚠️ cancelled
diagnostics-vitest ⚠️ cancelled
double-onboard-vitest ⚠️ cancelled
full-e2e-vitest ⚠️ cancelled
gateway-drift-preflight-vitest ⚠️ cancelled
gateway-guard-recovery ⚠️ cancelled
gateway-health-honest-vitest ⚠️ cancelled
gpu-double-onboard-vitest ⚠️ cancelled
gpu-e2e-vitest ⚠️ cancelled
hermes-discord-vitest ⚠️ cancelled
hermes-e2e-vitest ⚠️ cancelled
hermes-inference-switch-vitest ⚠️ cancelled
hermes-root-entrypoint-smoke-vitest ⚠️ cancelled
hermes-sandbox-secret-boundary-vitest ⚠️ cancelled
hermes-slack-vitest ⚠️ cancelled
inference-routing-vitest ⚠️ cancelled
issue-2478-crash-loop-recovery-vitest ⚠️ cancelled
issue-4434-tui-unreachable-inference-vitest ⚠️ cancelled
issue-4462-scope-upgrade-approval-vitest ⚠️ cancelled
jetson-nvmap-gpu-vitest ⚠️ cancelled
kimi-inference-compat-vitest ⚠️ cancelled
launchable-smoke-vitest ⚠️ cancelled
live-scenarios ⚠️ cancelled
messaging-compatible-endpoint-vitest ⚠️ cancelled
messaging-providers-vitest ⚠️ cancelled
model-router-provider-routed-inference-vitest ⚠️ cancelled
network-policy-vitest ⚠️ cancelled
ollama-auth-proxy-vitest ⚠️ cancelled
onboard-negative-paths-vitest ⚠️ cancelled
onboard-repair-vitest ⚠️ cancelled
onboard-resume-vitest ⚠️ cancelled
openclaw-discord-pairing-vitest ⚠️ cancelled
openclaw-inference-switch-vitest ⚠️ cancelled
openclaw-skill-cli-vitest ⚠️ cancelled
openclaw-slack-pairing-vitest ⚠️ cancelled
openclaw-tui-chat-correlation-vitest ⚠️ cancelled
openshell-gateway-upgrade-vitest ⚠️ cancelled
openshell-version-pin-vitest ⚠️ cancelled
overlayfs-autofix-vitest ⚠️ cancelled
rebuild-hermes-stale-base-vitest ⚠️ cancelled
rebuild-hermes-vitest ⚠️ cancelled
rebuild-openclaw-vitest ⚠️ cancelled
runtime-overrides-vitest ⚠️ cancelled
sandbox-rebuild-vitest ⚠️ cancelled
sandbox-survival-vitest ⚠️ cancelled
sessions-agents-cli-vitest ⚠️ cancelled
shields-config-vitest ⚠️ cancelled
skill-agent-vitest ⚠️ cancelled
snapshot-commands-vitest ⚠️ cancelled
spark-install-vitest ⚠️ cancelled
state-backup-restore-vitest ⚠️ cancelled
telegram-injection-vitest ⚠️ cancelled
token-rotation-vitest ⚠️ cancelled
tunnel-lifecycle-vitest ⚠️ cancelled
upgrade-stale-sandbox-vitest ⚠️ cancelled

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tools/e2e-scenarios/workflow-boundary.mts`:
- Around line 5944-5948: `COMPATIBLE_API_KEY` is only being checked for value
staging inside the run step, but it also needs a boundary guard outside the run
step so it cannot be exposed in the workflow environment. Add a non-run-step
protection for `COMPATIBLE_API_KEY` in the same area that already guards
`NVIDIA_INFERENCE_API_KEY`, using the existing
`requireEnvDoesNotExposeSecret`/workflow boundary checks around
`workflow-boundary.mts` to enforce that the secret is not present as an env key
before the step runs.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 65b47cbb-c4a1-476f-af98-d89e5f3420a2

📥 Commits

Reviewing files that changed from the base of the PR and between d69d2ac and 531acd9.

📒 Files selected for processing (2)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • tools/e2e-scenarios/workflow-boundary.mts

Comment thread tools/e2e-scenarios/workflow-boundary.mts
@wscurran wscurran added area: e2e End-to-end tests, nightly failures, or validation infrastructure area: messaging Messaging channels, bridges, manifests, or channel lifecycle chore Build, CI, dependency, or tooling maintenance integration: discord Discord integration or channel behavior integration: hermes Hermes integration behavior integration: whatsapp WhatsApp integration or channel behavior labels Jun 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All requested jobs passed

Run: 28194650942
Workflow ref: e2e-parity/p0-c-messaging-bash-parity-ci-531acd9
Requested scenarios: (default — all supported)
Requested jobs: messaging-providers-vitest,openclaw-discord-pairing-vitest,channels-add-remove-vitest
Summary: 3 passed, 0 failed, 0 cancelled, 0 skipped

Job Result
channels-add-remove-vitest ✅ success
messaging-providers-vitest ✅ success
openclaw-discord-pairing-vitest ✅ success

@jyaunches
jyaunches merged commit 979e81e into NVIDIA:main Jun 25, 2026
38 checks passed
@cv cv added the v0.0.69 label Jun 26, 2026
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
## Summary
Restore issue NVIDIA#5800 parity package `P0-C` for merged bash-suite
messaging/Discord/WhatsApp deltas only.

## Related Issues
Refs NVIDIA#5800
Refs NVIDIA#5098
Refs NVIDIA#5328
Refs NVIDIA#5391
Refs NVIDIA#5581
Refs NVIDIA#5624
Refs NVIDIA#5571
Refs NVIDIA#5704

## Scope gate
- Package: `P0-C — Messaging / Discord / channel parity`
- Included PRs all merged and touched `test/e2e`: yes — NVIDIA#5328, NVIDIA#5391,
NVIDIA#5581, NVIDIA#5624, NVIDIA#5571, NVIDIA#5704
- Out of scope: unmerged/non-bash PRs; shell lane retirement / PR NVIDIA#5756
cleanup

## Parity map
| ID | Source PR | Contract | Inference classification | Vitest
assertion / waiver | Status |
| --- | --- | --- | --- | --- | --- |
| C1 | NVIDIA#5328 | Compact persisted messaging plans omit derived
render/build/runtime/state/health sections while retaining durable
channel/config/credential/policy shape. | `none` |
`src/lib/messaging/plan-validation.test.ts`;
`test/e2e-scenario/live/channels-add-remove.test.ts` | covered |
| C2 | NVIDIA#5328 | Existing compact plans hydrate before merge so channel
add preserves prior hooks/render semantics. | `none` | existing
`src/lib/messaging/applier/host-state-applier.test.ts` | covered |
| C3 | NVIDIA#5391, NVIDIA#5571 | Discord config must not emit a non-loopback
per-account proxy; OpenClaw managed proxy remains configured. | `none` |
`test/discord-template-resolver-proxy.test.ts`;
`test/generate-openclaw-config.test.ts`;
`test/e2e-scenario/live/messaging-providers.test.ts`;
`test/e2e-scenario/live/openclaw-discord-pairing.test.ts` | covered |
| C4 | NVIDIA#5581 | OpenClaw Discord pairing Vitest preserves fake Gateway
token rewrite, connect-shell approval, and workflow dispatch boundary. |
`hermetic-default` | existing
`test/e2e-scenario/live/openclaw-discord-pairing.test.ts`; support
boundary/helper tests | covered |
| C5 | NVIDIA#5624 | Fake Discord Gateway capture proof accepts only redacted
identify rows, rejects placeholder/raw-token leakage, and proves token
rewrite. | `hermetic-default` |
`test/e2e-scenario/live/messaging-providers.test.ts`; existing
Hermes/OpenClaw Discord capture assertions and support tests | covered |
| C6 | NVIDIA#5704 | WhatsApp policy checks require expected endpoints before
rebuild and endpoints plus Node binary scope after rebuild. | `none` |
`test/e2e-scenario/live/messaging-providers.test.ts`;
`test/policies.test.ts` | covered |

## Inference mode support
- Default mode for touched live targets: `none` for config/unit
assertions; `hermetic-default` for fake Discord Gateway/live sandbox
token-rewrite assertions.
- Real inference support preserved: not applicable to this package’s
messaging/provider contracts; live sandbox targets still use existing
`NVIDIA_INFERENCE_API_KEY` path where their broader scenario requires
install/onboard.
- Modes validated in this PR: unit/support hermetic commands below;
selective live E2E run `28194650942` passed
`messaging-providers-vitest`, `channels-add-remove-vitest`, and
`openclaw-discord-pairing-vitest` at `531acd9f8`. Follow-up head
`46e004e3` only tightens local workflow-boundary assertions for
`COMPATIBLE_API_KEY`.
- If not validated with real inference: package contracts are
messaging/config/proxy/capture policy boundaries;
`channels-add-remove-vitest` also passed the hosted-compatible workflow
path after staging `NVIDIA_INFERENCE_API_KEY` as `COMPATIBLE_API_KEY`.

## Validation
- [x] `npx vitest run --project cli --maxWorkers 1 --no-fileParallelism
src/lib/messaging/plan-validation.test.ts
src/lib/messaging/applier/host-state-applier.test.ts
test/discord-template-resolver-proxy.test.ts`
- [x] `npx vitest run --project e2e-vitest-support --maxWorkers 1
--no-fileParallelism
test/e2e-scenario/support-tests/openclaw-discord-legacy-capture.test.ts
test/e2e-scenario/support-tests/openclaw-discord-pairing-helpers.test.ts
test/e2e-scenario/support-tests/openclaw-discord-workflow-boundary.test.ts`
- [x] `npx vitest run --project cli --maxWorkers 1 --no-fileParallelism
--testTimeout 30000 test/generate-openclaw-config.test.ts -t
"Discord|proxy|non-Slack"`
- [x] `npx vitest run --project cli --maxWorkers 1 --no-fileParallelism
test/policies.test.ts -t "whatsapp"`
- [x] `npx vitest run --project e2e-vitest-support --maxWorkers 1
--no-fileParallelism
test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
test/e2e-scenario/support-tests/openclaw-discord-workflow-boundary.test.ts`
- [x] Selective live E2E workflow `28194650942`:
`messaging-providers-vitest`, `channels-add-remove-vitest`,
`openclaw-discord-pairing-vitest` all passed.

## Follow-ups / waivers
- None.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Improved messaging plan persistence validation to ensure only required
fields are stored; derived workflow sections and per-channel hook data
are no longer persisted.
* Strengthened live channel add/remove assertions to enforce
`agentRender` and per-channel `hooks` absence.
* Updated live messaging provider and Discord pairing validations
(WhatsApp preset hosts and stricter gateway capture checks; account
proxy now required to be exactly empty when unset).
* **Tests / CI**
* Enhanced Vitest/e2e scenario test tooling and environment setup for
hosted-compatible inference, including compatible API key staging and
more robust Discord gateway capture/proxy handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
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 area: messaging Messaging channels, bridges, manifests, or channel lifecycle chore Build, CI, dependency, or tooling maintenance integration: discord Discord integration or channel behavior integration: hermes Hermes integration behavior integration: whatsapp WhatsApp integration or channel behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants