This repository records upstream fixes and independently verifiable contributions incorporated into open-source projects. Each entry links the original review, the change, and the validation evidence. PRs integrated through internal code-sync are identified explicitly rather than represented as GitHub-native merges.
Inventory → Discover → Validate → Assign → Remediate → Prove
For executable bugs, I seek a reproducible failure on the upstream base, a narrow fix and a regression demonstrating the difference. Documentation and configuration corrections are checked against the source of truth. Impact ratings are self-assessed, not maintainer-assigned; an API panic is not automatically a remote denial-of-service vulnerability.
EthSystems Works #51 — rotortree snapshot root panic · Medium API reliability (self-assessed)
- Problem: A valid
rotortreeMerkle tree can grow toMAX_DEPTH, butTreeSnapshotstores onlyMAX_DEPTHnon-root level slots inlevels. Calling the publiclevel_len(depth)orget_node(depth, index)at that depth indexedlevels[MAX_DEPTH]and panicked, including before the tree reached full leaf capacity. This is a reproducible reliability defect; a production outage or remote exploit has not been demonstrated. - Fix: Return the root count and hash from the separately stored
self.rootwheneverlevel == self.depth, preserving empty-tree behaviour and returningIndexOutOfRangefor invalid indices. The patch touches only the two accessors and their tests incrates/rotortree. - Proof: The maximum-depth regression failed with an index-out-of-bounds panic against upstream
e5061c8(1 failing and 3 passing focused tests); applying the patch gave 4 passing, 0 failing. Regression coverage exercises sequential and batch insertion, binary depth 1 and 3, ternary depth 2, and each maximum-depth leaf-count range, plus empty/single-leaf controls. Locally, 107 default, 180 all-feature and 107 no-default-feature tests passed, alongside Clippy, nightly formatting and diff checks. Maintainerrymncrequested test simplification and a signed commit, approved the revised patch, and merged it on 13 October 2026 as1449c62.
- Problem: A forced nested
getLogsfetch could reduce the recorded end of a cached range. With an existing [100, 1000] range, requesting [500, 600] wrote [100, 610], because the merge replacedtoBlockwith the shorter padded range's end. - Fix: Keep
Math.maxof covered end blocks when ranges overlap; merge adjacent ranges while leaving disjoint ranges separate. - Proof: A red/green Jest regression exercises nested, right-extending, adjacent and disjoint ranges. 4 tests, the TypeScript build and diff check passed. Maintainer
g1nt0kiapproved; merged 12 October 2026 asf286359. This fixes cache bookkeeping; no missing-log incident is claimed.
- Problem: Rebar3 Common Test runnables emitted a bare group name after
--caseinstead of the required--group <name>. - Fix: Insert the flag only for grouped tests, leaving ungrouped runnables unchanged; add both grouped and ungrouped regressions.
- Proof: The new regression failed before the fix while 1,809 control tests passed. Workspace tests passed in reported Linux and macOS OTP matrices. Meta internal merge:
robertoaloiimported the contribution into internal review and merged it as05020fd, as confirmed by Meta's code-sync bot. GitHub marks the original PR closed rather than natively merged.
- Problem: Juno sent JSON-RPC error responses to requests without an
idwhen the method was unknown or parameters invalid. The JSON-RPC specification prohibits responding to notifications. - Fix: Suppress all notification responses after dispatch without suppressing error responses for ID-bearing requests.
- Proof: Four red/green regressions cover unknown-method notifications, invalid-parameter notifications, notification-only batches and mixed batches. The relevant packages passed
go test -race. Approved and merged 8 October 2026 as4c6b4d3.
- Problem:
x402-payunconditionally broadcast a funding transaction, bypassing the CLI's persisted dry-run transaction mode. - Fix: Use the existing transaction-mode resolver and shared
--broadcast/--dry-runflags; return a structured payment preview rather than moving funds while dry-run is active. - Proof: Regression coverage checks standard x402 and Bazaar payment paths do not submit transactions in dry-run mode. Fixes issue #130; merged 8 October 2026 as
b3e81d0.
- Problem: The slot-time endpoint requested full blocks with
maxSupportedTransactionVersion: 0; blocks containing v1 transactions could be rejected, leaving a stale cached block instead of a fresh update. - Fix: Permit version 1 in the RPC request and preserve program-ID resolution using static and loaded address-table keys.
- Proof: Regressions assert the exact JSON-RPC request and address resolution; 3 Vitest tests, TypeScript and formatting checks passed. Fixes #2141; merged as
a233795.
- Problem: The provider estimated OpenAI token counts from message counts and fabricated costs with a hard-coded price, producing misleading usage reports across multi-step tool calls.
- Fix: Aggregate actual API-reported token usage across ReAct iterations, omit incomplete totals, and remove unsupported synthetic costs.
- Proof: Real-SDK loopback regressions cover measured, zero and missing usage; the reported 31 tests and Node 20/22/24 checks passed. Merged upstream as
6478386.
- Problem: The advertised Streamable HTTP → SSE fallback ran only during transport construction, but incompatibility with an SSE-only endpoint surfaces during
client.connect(). - Fix: On qualifying 4xx
StreamableHTTPErrornegotiation failures, close the failed connection, create a fresh MCP client and retry with legacy SSE; do not mask unrelated transport failures. - Proof: An end-to-end legacy SSE server fixture validates the negotiated fallback, with Node 20/22/24 and Biome CI reported passing. Merged as
bf5f668.
- Problem: The shared source-code allowlist omitted
.vyfiles, so Vyper-only changes could disappear before scan inventory and ranking. - Fix: Include Vyper sources in existing text-code inventory and ranking flows and add targeted regressions for repository, revision-diff and local-patch paths.
- Proof: An OpenAI maintainer independently reproduced five failing inventory/ranking cases on the parent and verified that all passed after the fix. 295 tests passed across affected modules, with no blocking behaviour issues. Merged 5 October 2026 as
d327164.
- Problem: A correctly signed JWT that initially passed validation could continue to authenticate from the cache after its explicit
exp, because cache hits used theiatwindow without rechecking expiration. - Fix: Apply the same exclusive expiry boundary (
now >= expis rejected) to cached and fresh validation while retaining the normal valid-token fast path. - Proof: A deterministic clock-based reproduction compares fresh validation against cache reuse at
iat + 1, exact expiry, and subsequent times. Both manual HS256 and library fallback paths are covered by regressions. Merged 5 October 2026 aseeca264.
- Problem: Pharos (chain ID
1672) was listed innetworkNamesbut missing fromexplorerUrls. The indexer therefore initialisedBlockchain.explorerwithout a Pharos URL, causing Token and NAV links to fall back to the pool dashboard. - Fix: Added
https://www.pharosscan.xyzfor chain1672insrc/chains.ts, preserving the existing chain and RPC configuration. - Proof: Checked the chain mapping and the timekeeper path that populates
Blockchain.explorer. The merged diff adds only the explorer mapping. A maintainer approved the PR and merged it on 1 October 2026, closing #479. Existing Pharos rows may still require a refresh or reindex becausegetOrInitdoes not update initialised records.
- Problem: The Glamsterdam roadmap's manually maintained proposal notice had drifted from the generated upgrade data. It still listed EIP-7610 and omitted the scheduled networking proposals EIP-8070, EIP-8136 and EIP-8189.
- Fix: Removed EIP-7610 and added eth/72 (EIP-8070), EIP-8136 and snap/2 (EIP-8189) to the English source. The change preserves the page's structure and leaves translation propagation to the internationalisation pipeline.
- Proof: Checked the proposal list against
src/data/upgrades/generated.ts. The PR records zero markdownlint errors and a passinggit diff --check; its diff changes onlypublic/content/roadmap/glamsterdam/index.md. A maintainer approved and merged the PR on 1 October 2026. The team also added me as an ethereum.org maintenance contributor in #19364.
- Problem: Chrome Platform Status hides stage-level actions when an API Owners gate is present and expects the gate column to render actions associated with that gate. The experiment-extension email action had an empty gate-type list in the normal launch, fast-track and deprecation process definitions, so neither rendering path displayed it.
- Fix: Associated all three email actions with
GATE_API_EXTEND_ORIGIN_TRIALand added one regression covering the three process definitions. The change leaves the email URL, prerequisites and approval rules untouched. - Proof: The regression failed on the unpatched
mainbranch for all three definitions withAssertionError: 3 not found in [], then passed after the fix. Ruff lint and formatting, the licence check,git diff --checkand mypy across 363 source files also passed. A maintainer approved the change, and Google's merge queue landed it asca80064on 29 September 2026. It was subsequently included in the closed deployment release #6950.
- Problem: The
scan --patchworkflow could report success when the model returnedno_changewithout explaining how it had checked the finding. A claim that no fix was needed could therefore clear the finding without verification evidence. - Fix: Extended the existing verification requirement to
no_changeresults. Missing or whitespace-only verification now produces a failed result and exit code 2. Validno_changeresults remain accepted, and the response instructions explicitly require verification for both successful statuses. This checks that an explanation exists; it does not establish that the explanation is true. - Proof: Controlled before/after tests reproduced success for missing and blank verification on the unpatched code and rejection after the fix. The maintainer confirmed 72 focused tests passed, plus two full SDK runs with 3,242 passed, 50 skipped and no failures each. Builds, type checks, formatting and GitHub CI passed. Approved and merged on 27 September 2026, with the original fix credited to me.
- Problem: The vector-store helper checked a path's extension before checking whether the path was a file or directory. Directories such as
documents.v1orarchive.zipwere therefore rejected even when they contained supported documents. - Fix: Classified the path first, then applied the extension allowlist only to regular files. Directory filtering remains case-insensitive and non-recursive.
- Proof: Three dotted-directory regressions failed against the original implementation and passed after the fix. All 882 tests, build, lint and documentation checks passed locally; CI passed on Node.js 22, 24 and 26, together with both CodeQL analyses. OpenAI approved and merged the PR on 24 September 2026.
- Problem: The Google Vertex Claude provider resolved
top_pandtop_kaliases with logical OR. Because0is falsy, an explicit zero could be replaced by the camelCase alias or omitted, changing the sampling configuration sent to the model. - Fix: Replaced the two falsy fallbacks with nullish coalescing so only a missing value falls through, while preserving the existing alias precedence and newer-model sampling suppression.
- Proof: Regression cases cover explicit zero values against non-zero aliases. The maintainer independently verified that reverting either fallback makes its regression fail, then ran 1,146 Google provider tests, typecheck, the CLI build, formatting/lint and ten mocked-transport QA configurations. All 57 applicable PR checks were green before merge on 29 September 2026.
- Problem: Ethereum JSON-RPC documentation no longer matched the implementation.
- Fix: Corrected block selectors, exclusions and response examples.
- Proof: Checked the documentation against the current RPC source.
- Problem: CSV and JSONL round trips dropped query metadata and could change evaluation results.
- Fix: Preserved acceptable skills, notes and custom columns across both formats.
- Proof: Added round-trip coverage and passed the full test, type, lint and documentation checks.
- Problem: Cache eviction tried to remove regular files as directories, and the text-file exclusion used the wrong suffix.
- Fix: Removed files and directories with the correct operation and repaired the
.txtcheck. - Proof: Regression tests cover files, directories and protected CSV/TXT files.
- Problem: CRX3 browser extensions were read with the older CRX2 header layout, so scans could start at the wrong ZIP offset.
- Fix: Added version-specific CRX2 and CRX3 parsing and rejected unsupported or truncated headers.
- Proof: Focused and scanner regression suites passed with lint and type checks.
- Problem: The ERC-3643 guide treated investor transfers, minting and administrative transfers as if they followed the same checks.
- Fix: Separated the transfer paths and clarified owner, agent, compliance and censorship assumptions.
- Proof: Compared the text with the canonical specification and reference implementation.
- Problem: Newer OpenAI models rejected the legacy
max_tokensrequest field. - Fix: Replaced it with
max_completion_tokensthroughout request construction and diagnostics. - Proof: A regression test requires the new field and rejects the old one.
- Problem: Engine API V3 and later accepted explicit null values for required payload fields and returned the wrong class of error later.
- Fix: Rejected null or omitted
withdrawals,blobGasUsedandexcessBlobGasas invalid parameters. - Proof: Regressions cover explicit null and omitted fields. The maintainer PR superseded my #13734 while retaining my commits and authorship.
- Problem: Nethermind still served
engine_getPayloadV5at Amsterdam, even though its V5 response cannot carry Amsterdam'sslotNumberorblockAccessList. It could return an outdated payload shape instead of-38005 Unsupported fork. - Fix: Limited V5 to its Osaka window and rejected it once block-level access lists are enabled.
- Proof: The focused regression failed in both fixture modes before the fix and passed 2/2 afterward. The V4/V5/V6 fork-boundary suite passed 33/33, preserving Osaka V5 behaviour. The PR received three maintainer approvals, merged into
masteron 24 September 2026 and closed #13713 as completed.
- Problem: The EURR description named Revolut as the issuer, although Bridge Building S.A. issues the token and Revolut distributes it.
- Fix: Corrected the issuer and distributor attribution.
- Proof: Cross-checked the wording against the issuer and distributor sources. No supply or pricing logic changed.
- Problem: The workflow example used stale action versions and unsafe output handling.
- Fix: Updated the versions, explained the input/output key difference and used safe report printing.
- Proof: Checked the example against the published action interface.
- Problem: The documentation used underscore input names that the action does not accept.
- Fix: Documented the correct hyphenated inputs, required API key and supported options.
- Proof: Checked both examples against the action definition.
- Problem: Smoke tests did not execute IIFE browser bundles, so an unreplaced
process.env["NODE_ENV"]reference could ship unnoticed. - Fix: Corrected the replacement and made smoke tests execute both IIFE bundles.
- Proof: Production builds and CJS, ESM, browser, native and IIFE smoke tests passed.
- Problem: An obsolete configuration invoked the removed
codex mcp-servercommand and could break Claude Code start-up. - Fix: I reported and proposed the removal in #303. The maintainer shipped the core fix in the broader #306 clean-up.
- Proof: Plugin loadability, metadata, shell, Bats, JavaScript and temporary Git fixture checks covered the change.