Skip to content

Release v4.15.1 - #1043

Merged
gummy789j merged 4 commits into
masterfrom
release_v4.15.1
Oct 22, 2026
Merged

gummy789j merged 4 commits into
masterfrom
release_v4.15.1

Conversation

@gummy789j

@gummy789j gummy789j commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator
  1. Require patched Node.js releases. Node 20 is end-of-life and gets no fix for the October 2026 security releases. engines now accepts only the patched versions: >=22.23.4 <23 || >=24.22.1 <25 || >=26.12.1. CI now covers Node 22, 24 and 26; the standalone workflow moves from Node 20 to 22. check-latest: true makes CI use the newest patch even when the runner image still ships an older one. The README and CLAUDE.md state the new minimum versions.
  2. Fix intermittent ECONNRESET on the x402 paid request. x402 roundtrip runs the paywall server and the payer in one process. Between the 402 challenge and the paid retry, the payer decrypts its key (scrypt) and signs, and this blocks the event loop. On a busy CI runner the block can outlast the server's keep-alive timeout. The payer then writes the paid GET /pay to the idle socket just as the server closes it, and the payment fails with ECONNRESET and an unknown payment status. The server now sends Connection: close with the 402, so the paid retry always opens a fresh connection.
  3. Widen golden test timeouts. Golden tests spawn the real CLI with real scrypt. On a loaded 4-vCPU runner several of them ran close to or past their limits: backup hit 31.1s and derive 29.9s against a 30s budget. The golden project timeout goes from 30s to 60s, the x402 roundtrip subprocess guard from 20s to 40s, and bai recharge from 60s to 120s.

gummy789j and others added 4 commits October 22, 2026 14:22
Node 20 is end-of-life and gets no fix for the October 2026 security
releases; the Brotli out-of-bounds write reaches the CLI through fetch and
axios responses from RPC, x402 and other user-chosen endpoints.

- engines: >=22.23.4 <23 || >=24.22.1 <25 || >=26.12.1
- standalone workflow: Node 20 -> 22
- CI: add Node 26 to the matrix; check-latest so a lagging runner image
  cannot test below the engines floor
- README / CLAUDE.md: state the new minimum versions
x402 roundtrip runs the paywall and the payer in one process. Between the
402 and the paid retry the payer decrypts its key (scrypt) and signs, which
blocks the event loop. When that block outlasts the server's keep-alive
timeout, the payer writes the retry on the idle socket just before the
server's timer destroys it, and the payment fails with ECONNRESET and an
unknown payment status. This surfaced as intermittent golden test failures
on loaded CI runners.

Send Connection: close with the 402 so the paid retry always opens a fresh
connection.
Golden cases spawn the CLI with real scrypt, and on a loaded 4-vCPU runner
several of them measured close to or past their limits: the backup case hit
31.1s and derive 29.9s against the project's 30s budget.

- golden project testTimeout: 30s -> 60s
- x402 roundtrip subprocess guard: 20s -> 40s, test timeout 30s -> 60s
- bai recharge: 60s -> 120s
@gummy789j
gummy789j merged commit 7b52c6b into master Oct 22, 2026
16 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants