# URL parser behavior — method This original compilation contains 40 fixtures and 120 executed observations. The current dated run uses Node 24.22.1 LTS WHATWG `URL`, Python 3.15.1 `urllib.parse.urljoin` then `urlsplit`, and Ruby 4.0.9 `URI.join` with the uri 1.1.1 gem. The official release pages were read on 24 October 2026 local time. Exact UTC execution timestamps are in `results.json`; the operating system was macOS 27.0.1 build 26A434, arm64. This is a CLI comparison, not a browser conformance test. ## Inputs and execution `fixtures.json` preserves the same 40 input/base/purpose records as the earlier run. Five inputs reuse original refinement-3 fixtures; thirty-five were independently authored. No WPT, former-site code or former scan records supplied the corpus. Host-bearing inputs use reserved `.test` names or documentation IPv4/IPv6 addresses. The integer host represents 192.0.2.1 and is never resolved. The adapters perform `new URL(input, base)` in Node; `urljoin(base, input)`, `urlsplit` and explicit `.port` evaluation in Python; and `URI.join(base, input)` plus component readers in Ruby. They use no resolver, HTTP client or submission API. This is a code-level offline boundary, not a packet-monitoring claim. Official runtime archives and documentation were downloaded separately before execution. Python and Ruby were built in an isolated workspace; Node used its official arm64 binary. All three downloaded archive hashes matched published official SHA-256 values. `runtime-provenance.json` records exact versions, hashes, build limitations and failed setup attempts. No global runtime was upgraded. Optional unrelated modules were absent from the source builds; the parsing and JSON modules required here executed successfully. Run `reproduce.py` with the declared Python interpreter and pass `--node` and `--ruby` paths to the declared executables. The runner reads local fixtures and emits JSON to stdout. `results.json` is the primary run; `reproduction-results.json` is a second actual run. All 120 observations and runtime metadata matched exactly. Timestamps differ and are not equality criteria. The repeat is a reproducibility check, not additional sample size. ## Current results and version comparison Node accepted 37 inputs, Python 37 and Ruby 29. All three accepted 28 fixtures; their serialized strings matched for 15. The adapters retain native nulls, strings, numbers and exception classes. They do not normalize API-contract differences into an invented common result. `earlier-runs/2026-10-24-p4/` preserves the earlier Node 24.19.0, Python 3.9.6 and Ruby 2.6.10 dataset unchanged. Its results are separate and not pooled. `changes-from-2026-10-24-p4.json` records every changed observation: Python P18 changes resolution of leading/trailing ASCII spaces; Python P36 changes from accepted invalid IPv6 text to `ValueError`. Node and Ruby have no changed recorded observations in this corpus. The new Ruby run directly reports uri 1.1.1 and `URI::RFC3986_Parser` as the default. Ruby issue 19266 documents the default-parser change. Nevertheless, none of these 40 `URI.join` observations changed relative to the earlier run. That bounded result is not evidence that the versions are generally equivalent. No causal attribution of the Python changes to one upstream patch is made. ## Interpretation and limits Acceptance means the named adapter returned its recorded fields; it is not a safety verdict. An exception is not proof that a competing parser has a vulnerability. Matching serialization does not establish equivalent navigation or application handling. No performance, destination content, DNS, redirects, reputation or browser parsing result was measured. ## Sources, rights and maintenance `source-ledger.json` retains earlier documentation receipts and adds current versioned API and official release sources. Documentation-family versions are separate from the actual executed binary strings. No documentation body or third-party runtime implementation is redistributed. Original data and explanatory compilation: CC BY 4.0, attribution “URL parser behavior — original compilation, 2026-10-24”. The original reproduction adapter is MIT; runtime licences apply separately. No sponsor controls rows or results. Future updates should keep the input IDs and dated evidence, execute a new named run and publish changed observations explicitly. Do not overwrite historical exceptions or infer values for unexecuted versions.