Files
openclaw/scripts/perf/rtt-regression-audit.md
2026-05-18 13:41:35 +08:00

4.2 KiB

RTT regression audit checkpoint

Status: branch-local checkpoint, not release notes.

Signals

  • openclaw-rtt Discord main rows appeared to jump from about 5-7s p50 to about 24-27s p50 after the 2026-05-16 main window.
  • Downloaded fast/slow Discord artifacts showed the old "fast" run included observed message triggerTimestamp and timestamp, while newer redacted runs kept only scenario metadata.
  • openclaw-rtt scripts/import-discord-rtt.mjs falls back to whole summary duration when observed-message timestamps are missing. That made a redaction shape change look like transport RTT regression.
  • Slack and WhatsApp RSS rows showed recurring first-sample max RSS outliers around 6-9GB while later warm samples sat far lower. That points at command-level cold-start RSS measurement before retained gateway heap.

Fixes in this branch

  • extensions/qa-lab/src/live-transports/discord/discord-live.runtime.ts preserves safe timing fields through metadata redaction so importers can keep measuring reply RTT without exposing Discord IDs or content.
  • Discord QA scenario summaries now include rttMs for direct importer use.
  • extensions/qa-lab/src/suite.ts records gateway-process RSS start/end/peak and checkpoint samples in qa-suite-summary.json, giving RTT importers a gateway-level metric separate from /usr/bin/time command max RSS.

Proof so far

  • Focused local wrapper: node scripts/run-vitest.mjs extensions/qa-lab/src/live-transports/discord/discord-live.runtime.test.ts passed 30 tests.
  • Focused local wrapper: node scripts/run-vitest.mjs extensions/qa-lab/src/suite.test.ts extensions/qa-lab/src/suite.summary-json.test.ts extensions/qa-lab/src/live-transports/discord/discord-live.runtime.test.ts passed 52 tests after the final rebase.
  • Testbox tbx_01krvces8y0c99nzra2a90jg13 ran pnpm openclaw qa suite --scenario channel-chat-baseline and emitted gateway RSS trace fields. Observed sample: wall 15784ms, gateway RSS 664403968 -> 689852416, peak 689852416.
  • Testbox tbx_01krwb9k7cbktytpjprxcydfbk ran pnpm check:changed and the command exited 0. The wrapper Actions run 26008757251 still reported in_progress after the box was stopped.
  • Testbox tbx_01krwbsg15xvjdgpcz8fxq1htz ran OPENCLAW_QA_GATEWAY_HEAP_CHECKPOINTS=1 pnpm openclaw qa suite --scenario channel-chat-baseline. The sample passed and recorded heap checkpoints plus RSS trace: wall 20112ms, gateway RSS 655036416 -> 953790464, peak 1051258880, heap snapshots 154M and 165M.
  • After rebasing onto b5046968f61, a fresh Testbox pnpm check:changed attempt on tbx_01krwbsg15xvjdgpcz8fxq1htz was blocked before reaching the changed gate: pnpm install rejected newly published @earendil-works/pi-ai@0.74.1 under minimumReleaseAge.
  • After rebasing again, Testbox-through-Crabbox tbx_01krwcxpxx1n22t8jmvcj40228 ran pnpm check:changed with an explicit origin/main fetch to repair the delegated shallow checkout's merge base, and passed. The run escalated to all changed-gate lanes in the delegated checkout, so it covered typecheck, lint, and runtime import-cycle checks rather than only the narrow qa-lab diff.
  • Follow-up branch perf/discord-rtt-summary-import in openclaw-rtt updates scripts/import-discord-rtt.mjs to prefer the new summary rttMs field before observed-message or summary-duration fallback, and teaches Discord and live-transport importers to ingest gateway RSS summary metrics. npm test -- scripts/import-discord-rtt.test.mjs scripts/import-live-transport-rtt.test.mjs passed 19 tests and npm run check passed.

Still weak

  • No retained-heap regression has been proven. The first heap-checkpoint sample grew by about 11M on disk across the scenario, which is worth comparing across repeated warm samples before calling it a leak.
  • The branch fixes OpenClaw artifact quality. openclaw-rtt has a paired importer branch for summary rttMs and gateway RSS metric ingestion; dashboard presentation of gateway RSS remains a later reporting decision.
  • Gitcrawl data was stale for the newest RTT window, so live gh history was the source of truth for 2026-05-16 and 2026-05-17 PR attribution.