From 46f0558d2e26589cde3cee797df4ecf4e7386c53 Mon Sep 17 00:00:00 2001 From: John McLear Date: Fri, 15 May 2026 21:18:09 +0100 Subject: [PATCH] feat(scaling-dive): add fanout-debounce lever + 60-minute timeout - Adds fanout-debounce matrix entry. Sets settings.fanoutDebounceMs to 50ms via sed-append; requires the core_ref to include ether/etherpad#7766 (the FanoutScheduler). Fails fast with a clear error if the setting isn't picked up. - Bumps job timeout 30 -> 60 minutes. Cliff-finding sweeps at authors=100..500 take long enough that nodemem and websocket-only were getting cancelled mid-sweep at 30 min on run 25937943898. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/scaling-dive.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scaling-dive.yml b/.github/workflows/scaling-dive.yml index 8f8b460..46b6be4 100644 --- a/.github/workflows/scaling-dive.yml +++ b/.github/workflows/scaling-dive.yml @@ -29,11 +29,11 @@ jobs: dive: name: dive · ${{ matrix.lever }} runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 60 strategy: fail-fast: false matrix: - lever: [baseline, websocket-only, nodemem] + lever: [baseline, websocket-only, nodemem, fanout-debounce] env: PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin @@ -119,6 +119,12 @@ jobs: # No settings change; NODE_OPTIONS is set when launching below. echo "applied via NODE_OPTIONS" ;; + fanout-debounce) + # Lever 3: coalesce per-pad fan-out within a 50ms window + # (requires ether/etherpad#7766 in the checked-out core_ref). + sed -i '/"loadTest": true,/a\ "fanoutDebounceMs": 50,' settings.json + grep fanoutDebounceMs settings.json || { echo "fanoutDebounceMs not present — core must include #7766"; exit 1; } + ;; *) echo "unknown lever: ${{ matrix.lever }}" >&2 exit 1