Files
adolf/scripts/perf/rtt-regression-audit.md
alvis bedb527145
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Vendor OpenClaw source as Adolf fork baseline
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
2026-07-05 09:36:54 +00: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 openclaw/plugin-sdk/llm@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.