From 34c08a9ff2a5c981fa9dc0c4291734f527148a68 Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Wed, 25 Feb 2026 20:58:04 -0500 Subject: [PATCH] Tests: scrub user-specific matrix fixtures and defaults --- .../LEGACY_MATRIX_PARITY_GAP_AUDIT.md | 98 +++++++++---------- .../matrix-js/scripts/live-basic-send.ts | 2 +- .../matrix-js/scripts/live-e2ee-send.ts | 2 +- .../matrix-js/scripts/live-e2ee-wait-reply.ts | 2 +- .../matrix-js/src/channel.directory.test.ts | 4 +- src/commands/health.test.ts | 10 +- 6 files changed, 59 insertions(+), 59 deletions(-) diff --git a/extensions/matrix-js/LEGACY_MATRIX_PARITY_GAP_AUDIT.md b/extensions/matrix-js/LEGACY_MATRIX_PARITY_GAP_AUDIT.md index 40f8d6edc71..20c665f306b 100644 --- a/extensions/matrix-js/LEGACY_MATRIX_PARITY_GAP_AUDIT.md +++ b/extensions/matrix-js/LEGACY_MATRIX_PARITY_GAP_AUDIT.md @@ -4,10 +4,10 @@ Audit date: February 23, 2026 Scope: -- Baseline spec: `/Users/gumadeiras/openclaw/extensions/matrix-js/LEGACY_MATRIX_PARITY_SPEC.md` +- Baseline spec: `/extensions/matrix-js/LEGACY_MATRIX_PARITY_SPEC.md` - Compared implementations: - - Legacy: `/Users/gumadeiras/openclaw/extensions/matrix` - - New: `/Users/gumadeiras/openclaw/extensions/matrix-js` + - Legacy: `/extensions/matrix` + - New: `/extensions/matrix-js` Method: @@ -33,67 +33,67 @@ Status legend: 1. `PASS (static)`: Channel identity is consistent as `matrix-js` across metadata and runtime registration. - Evidence: - - `/Users/gumadeiras/openclaw/extensions/matrix-js/index.ts:7` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/openclaw.plugin.json:2` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/channel.ts:41` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/channel.ts:99` + - `/extensions/matrix-js/index.ts:7` + - `/extensions/matrix-js/openclaw.plugin.json:2` + - `/extensions/matrix-js/src/channel.ts:41` + - `/extensions/matrix-js/src/channel.ts:99` 2. `PASS (static)`: Config namespace is consistently `channels.matrix-js`. - Evidence: - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/channel.ts:116` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/channel.ts:125` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/channel.ts:319` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/onboarding.ts:17` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/onboarding.ts:174` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/send/client.ts:22` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/client/config.ts:125` + - `/extensions/matrix-js/src/channel.ts:116` + - `/extensions/matrix-js/src/channel.ts:125` + - `/extensions/matrix-js/src/channel.ts:319` + - `/extensions/matrix-js/src/onboarding.ts:17` + - `/extensions/matrix-js/src/onboarding.ts:174` + - `/extensions/matrix-js/src/matrix/send/client.ts:22` + - `/extensions/matrix-js/src/matrix/client/config.ts:125` 3. `PASS (static)`: Outbound/inbound channel tags and routing context emit `matrix-js`. - Evidence: - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/outbound.ts:20` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/outbound.ts:36` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/outbound.ts:49` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/send.ts:55` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/handler.ts:496` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/handler.ts:509` + - `/extensions/matrix-js/src/outbound.ts:20` + - `/extensions/matrix-js/src/outbound.ts:36` + - `/extensions/matrix-js/src/outbound.ts:49` + - `/extensions/matrix-js/src/matrix/send.ts:55` + - `/extensions/matrix-js/src/matrix/monitor/handler.ts:496` + - `/extensions/matrix-js/src/matrix/monitor/handler.ts:509` 4. `PASS (static)`: Matrix-js now uses isolated storage namespace/prefixes. - Evidence: - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/credentials.ts:31` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/client/storage.ts:42` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/sdk/idb-persistence.ts:127` - - `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/client/create-client.ts:43` + - `/extensions/matrix-js/src/matrix/credentials.ts:31` + - `/extensions/matrix-js/src/matrix/client/storage.ts:42` + - `/extensions/matrix-js/src/matrix/sdk/idb-persistence.ts:127` + - `/extensions/matrix-js/src/matrix/client/create-client.ts:43` ## Parity Matrix (Spec Section 16, Pre-Filled) -| Check | Status | Evidence | -| ---------------------------------------------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Config schema keys and defaults are equivalent | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix/src/config-schema.ts` vs `/Users/gumadeiras/openclaw/extensions/matrix-js/src/config-schema.ts` (no semantic diffs) | -| Auth precedence (config/env/token/cache/password/register) matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/client/config.ts` | -| Bun runtime rejection behavior matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/client/runtime.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/index.ts` | -| Startup/shutdown lifecycle and status updates match legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/channel.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/index.ts` | -| DM detection heuristics match legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/direct.ts` | -| DM/group allowlist + pairing flow matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/handler.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/allowlist.ts` | -| Mention detection (`m.mentions`, formatted_body links, regex) matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/mentions.ts` | -| Control-command authorization gate behavior matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/handler.ts` | -| Inbound poll normalization matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/poll-types.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/handler.ts` | -| Inbound location normalization matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/location.ts` | -| Inbound media download/decrypt/size-limit behavior matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/media.ts` | -| Reply dispatch + typing + ack reaction + read receipts match legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/handler.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/replies.ts` | -| Thread handling (`threadReplies`) matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/threads.ts` | -| `replyToMode` handling for single/multi reply flows matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/monitor/replies.ts` | -| Outbound text chunking, markdown, and formatting behavior matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/send.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/send/formatting.ts` | -| Outbound media encryption/voice/thumbnail/duration behavior matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/send/media.ts` | -| Outbound poll payload behavior matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/send.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/poll-types.ts` | -| Action gating and action semantics match legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/actions.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/tool-actions.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/actions/*` | -| Verification action flow and summary semantics match legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/actions/verification.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/sdk/verification-manager.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/sdk/crypto-facade.ts` | -| Directory live lookup + target resolution ambiguity handling matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/directory-live.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/resolve-targets.ts` | -| Probe/status reporting fields match legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/probe.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/channel.ts` | -| Storage layout and credential persistence semantics match legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/client/storage.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/credentials.ts` | -| HTTP hardening and decrypt retry behavior matches legacy | PASS (static) | `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/sdk/http-client.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/sdk/decrypt-bridge.ts`, `/Users/gumadeiras/openclaw/extensions/matrix-js/src/matrix/sdk.ts` | +| Check | Status | Evidence | +| ---------------------------------------------------------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Config schema keys and defaults are equivalent | PASS (static) | `/extensions/matrix/src/config-schema.ts` vs `/extensions/matrix-js/src/config-schema.ts` (no semantic diffs) | +| Auth precedence (config/env/token/cache/password/register) matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/client/config.ts` | +| Bun runtime rejection behavior matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/client/runtime.ts`, `/extensions/matrix-js/src/matrix/monitor/index.ts` | +| Startup/shutdown lifecycle and status updates match legacy | PASS (static) | `/extensions/matrix-js/src/channel.ts`, `/extensions/matrix-js/src/matrix/monitor/index.ts` | +| DM detection heuristics match legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/direct.ts` | +| DM/group allowlist + pairing flow matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/handler.ts`, `/extensions/matrix-js/src/matrix/monitor/allowlist.ts` | +| Mention detection (`m.mentions`, formatted_body links, regex) matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/mentions.ts` | +| Control-command authorization gate behavior matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/handler.ts` | +| Inbound poll normalization matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/poll-types.ts`, `/extensions/matrix-js/src/matrix/monitor/handler.ts` | +| Inbound location normalization matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/location.ts` | +| Inbound media download/decrypt/size-limit behavior matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/media.ts` | +| Reply dispatch + typing + ack reaction + read receipts match legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/handler.ts`, `/extensions/matrix-js/src/matrix/monitor/replies.ts` | +| Thread handling (`threadReplies`) matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/threads.ts` | +| `replyToMode` handling for single/multi reply flows matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/monitor/replies.ts` | +| Outbound text chunking, markdown, and formatting behavior matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/send.ts`, `/extensions/matrix-js/src/matrix/send/formatting.ts` | +| Outbound media encryption/voice/thumbnail/duration behavior matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/send/media.ts` | +| Outbound poll payload behavior matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/send.ts`, `/extensions/matrix-js/src/matrix/poll-types.ts` | +| Action gating and action semantics match legacy | PASS (static) | `/extensions/matrix-js/src/actions.ts`, `/extensions/matrix-js/src/tool-actions.ts`, `/extensions/matrix-js/src/matrix/actions/*` | +| Verification action flow and summary semantics match legacy | PASS (static) | `/extensions/matrix-js/src/matrix/actions/verification.ts`, `/extensions/matrix-js/src/matrix/sdk/verification-manager.ts`, `/extensions/matrix-js/src/matrix/sdk/crypto-facade.ts` | +| Directory live lookup + target resolution ambiguity handling matches legacy | PASS (static) | `/extensions/matrix-js/src/directory-live.ts`, `/extensions/matrix-js/src/resolve-targets.ts` | +| Probe/status reporting fields match legacy | PASS (static) | `/extensions/matrix-js/src/matrix/probe.ts`, `/extensions/matrix-js/src/channel.ts` | +| Storage layout and credential persistence semantics match legacy | PASS (static) | `/extensions/matrix-js/src/matrix/client/storage.ts`, `/extensions/matrix-js/src/matrix/credentials.ts` | +| HTTP hardening and decrypt retry behavior matches legacy | PASS (static) | `/extensions/matrix-js/src/matrix/sdk/http-client.ts`, `/extensions/matrix-js/src/matrix/sdk/decrypt-bridge.ts`, `/extensions/matrix-js/src/matrix/sdk.ts` | ## Runtime Validation Status diff --git a/extensions/matrix-js/scripts/live-basic-send.ts b/extensions/matrix-js/scripts/live-basic-send.ts index 65230c642b3..535133e6fb2 100644 --- a/extensions/matrix-js/scripts/live-basic-send.ts +++ b/extensions/matrix-js/scripts/live-basic-send.ts @@ -16,7 +16,7 @@ async function main() { encryption: false, }); - const targetUserId = process.argv[2]?.trim() || "@gumadeiras:matrix.gumadeiras.com"; + const targetUserId = process.argv[2]?.trim() || "@user:example.org"; const stamp = new Date().toISOString(); try { diff --git a/extensions/matrix-js/scripts/live-e2ee-send.ts b/extensions/matrix-js/scripts/live-e2ee-send.ts index ec8494d4296..9f9e71738e9 100644 --- a/extensions/matrix-js/scripts/live-e2ee-send.ts +++ b/extensions/matrix-js/scripts/live-e2ee-send.ts @@ -9,7 +9,7 @@ type MatrixEventLike = { }; async function main() { - const targetUserId = process.argv[2]?.trim() || "@gumadeiras:matrix.gumadeiras.com"; + const targetUserId = process.argv[2]?.trim() || "@user:example.org"; const useFullBootstrap = process.argv.includes("--full-bootstrap"); const startupTimeoutMs = 45_000; const base = resolveLiveHarnessConfig(); diff --git a/extensions/matrix-js/scripts/live-e2ee-wait-reply.ts b/extensions/matrix-js/scripts/live-e2ee-wait-reply.ts index 8fa814d2fce..ad57cca0da0 100644 --- a/extensions/matrix-js/scripts/live-e2ee-wait-reply.ts +++ b/extensions/matrix-js/scripts/live-e2ee-wait-reply.ts @@ -15,7 +15,7 @@ type MatrixRawEvent = { async function main() { const roomId = process.argv[2]?.trim(); - const targetUserId = process.argv[3]?.trim() || "@gumadeiras:matrix.gumadeiras.com"; + const targetUserId = process.argv[3]?.trim() || "@user:example.org"; const timeoutSecRaw = Number.parseInt(process.argv[4] ?? "120", 10); const timeoutMs = (Number.isFinite(timeoutSecRaw) && timeoutSecRaw > 0 ? timeoutSecRaw : 120) * 1000; diff --git a/extensions/matrix-js/src/channel.directory.test.ts b/extensions/matrix-js/src/channel.directory.test.ts index 80d0fc62f11..5064cf1b2f9 100644 --- a/extensions/matrix-js/src/channel.directory.test.ts +++ b/extensions/matrix-js/src/channel.directory.test.ts @@ -200,7 +200,7 @@ describe("matrix directory", () => { const cfg = { channels: { "matrix-js": { - name: "pinguini", + name: "bot-default", homeserver: "https://legacy.example.org", userId: "@legacy:example.org", accessToken: "legacy-token", @@ -222,7 +222,7 @@ describe("matrix directory", () => { expect(updated.channels?.["matrix-js"]?.encryption).toBeUndefined(); expect((updated.channels?.["matrix-js"] as Record)?.register).toBeUndefined(); expect(updated.channels?.["matrix-js"]?.accounts?.default).toMatchObject({ - name: "pinguini", + name: "bot-default", homeserver: "https://legacy.example.org", userId: "@legacy:example.org", accessToken: "legacy-token", diff --git a/src/commands/health.test.ts b/src/commands/health.test.ts index c138932e087..55e8ca1e949 100644 --- a/src/commands/health.test.ts +++ b/src/commands/health.test.ts @@ -126,22 +126,22 @@ describe("healthCommand", () => { telegram: { accountId: "main", configured: true, - probe: { ok: true, elapsedMs: 196, bot: { username: "pinguini_ugi_bot" } }, + probe: { ok: true, elapsedMs: 196, bot: { username: "bot-default_ugi_bot" } }, accounts: { main: { accountId: "main", configured: true, - probe: { ok: true, elapsedMs: 196, bot: { username: "pinguini_ugi_bot" } }, + probe: { ok: true, elapsedMs: 196, bot: { username: "bot-default_ugi_bot" } }, }, flurry: { accountId: "flurry", configured: true, - probe: { ok: true, elapsedMs: 190, bot: { username: "flurry_ugi_bot" } }, + probe: { ok: true, elapsedMs: 190, bot: { username: "beta_bot" } }, }, poe: { accountId: "poe", configured: true, - probe: { ok: true, elapsedMs: 188, bot: { username: "poe_ugi_bot" } }, + probe: { ok: true, elapsedMs: 188, bot: { username: "gamma_bot" } }, }, }, }, @@ -152,7 +152,7 @@ describe("healthCommand", () => { const lines = formatHealthChannelLines(summary, { accountMode: "all" }); expect(lines).toContain( - "Telegram: ok (@pinguini_ugi_bot:main:196ms, @flurry_ugi_bot:flurry:190ms, @poe_ugi_bot:poe:188ms)", + "Telegram: ok (@bot-default_ugi_bot:main:196ms, @beta_bot:flurry:190ms, @gamma_bot:poe:188ms)", ); }); });