From 7440f31a14f16d5de479f2e5e1f8cbe9797914f3 Mon Sep 17 00:00:00 2001 From: cppla Date: Fri, 9 Oct 2026 18:28:14 +0800 Subject: [PATCH 1/2] Observe browser H3 resumption on new physical connections --- .../DIAGNOSTIC-2026-10-09.md | 139 ++++++++ scripts/browser-connection-fixture/README.md | 28 +- scripts/browser-connection-fixture/main.go | 77 ++++- .../browser-connection-fixture/main_test.go | 315 ++++++++++++++++-- 4 files changed, 524 insertions(+), 35 deletions(-) create mode 100644 scripts/browser-connection-fixture/DIAGNOSTIC-2026-10-09.md diff --git a/scripts/browser-connection-fixture/DIAGNOSTIC-2026-10-09.md b/scripts/browser-connection-fixture/DIAGNOSTIC-2026-10-09.md new file mode 100644 index 0000000..31156d6 --- /dev/null +++ b/scripts/browser-connection-fixture/DIAGNOSTIC-2026-10-09.md @@ -0,0 +1,139 @@ +# Bounded Chrome H3 warm-reconnection observation + +This is a local diagnostic, not a passive fingerprint comparison or a formal +corpus. Chrome successfully resumed TLS on a new physical H3 connection in +three admitted trials after one successful readiness check. An earlier +readiness attempt failed in the collection script and remains a separate failed +experiment; it was not replaced inside the successful experiment. + +## Setup and frozen procedure + +The 2026-10-09 run used macOS/arm64, Chrome **154.0.8037.95**, Playwright CLI +**0.1.22**, and Playwright **1.64.0-alpha-1790635538000**. The observer was built +with Go **1.27.2** from base commit +`932e56ca1210d264c682dacf35538a576915d74c` plus this fixture change. It uses the +official `github.com/quic-go/quic-go` **v0.63.0** HTTP/3 server, not the AutoCAR +web-H3 client or its maintained dependency replacement. + +One fixture instance served the entire successful experiment, with the same +lab certificate and TLS ticket keys. It listened only on numeric IPv4 loopback, +had a 540-second lifetime, 64-request/32-admitted-connection budgets and the +unchanged 30-second idle limits. It had no TCP listener. The certificate had a +loopback SAN and a one-day validity; no system trust store was changed. + +Each readiness/trial used a separately named, nonpersistent headless CLI +session. Within each trial the same process/context performed all three phases. +The four session startup PIDs were distinct and each session was closed. Raw +temporary profile paths were redacted, so the retained command lines do not +independently establish profile-path uniqueness. + +Explicit lab flags were `--enable-quic`, one exact +`--origin-to-force-quic-on=127.0.0.1:`, one exact +`--ignore-certificate-errors-spki-list=`, `--no-proxy-server`, and +`--enable-automation`. Context `ignoreHTTPSErrors` remained false. Chrome's +headless/automation defaults, including its disable-feature flags, were retained +in sanitized runtime metadata. This is not a normal unmodified browser launch. + +Before the first target navigation in each session, the collector saved +`Browser.getVersion` and a successful `Browser.getBrowserCommandLine`. It +required the expected product, headless mode and lab switches, rejected global +certificate bypasses/conflicting QUIC or proxy switches, and required exactly +one origin override and SPKI switch. + +The successful experiment froze its plan, browser configuration and collector +at **10:22:26 UTC**, before any target navigation. Its fixed sequence was: + +1. Navigate `/` once: HTTP 200, navigation Resource Timing `h3`, positive + connection ID, and server TLS 1.3 complete with `did_resume: false`. +2. Fetch a unique `/probe?trial=