# Redirect observations: reproduction `redirect_record.py` is original MIT-licensed source. It records controlled responses through an explicitly supplied transport. It accepts only the reserved fixture origin and has no target-taking command-line option. It is not a real-link expander. ## Runtime and command Executed with CPython 3.12.14, whose official release source tag resolves to commit `2abcf904b8dac8c999d2b3aac76681abb333798a` in `https://github.com/python/cpython.git`. The binary does not expose an embedded commit; its hash is recorded separately. No reproducible binary-build claim is made. From the complete package root, with that runtime: ```sh PYTHONDONTWRITEBYTECODE=1 python3 data/examples/url-boundary-tests/run_local.py --output local-test-results ``` The published runner imports the public recorder without alteration, provides a local-only HTTP transport, and runs the fetch-policy suite as well. It starts and stops its own temporary server. An audit guard refuses external DNS and any connection outside the registered fixture socket. No private harness is required. The runner warns and continues on a version mismatch, records the actual runtime, and writes into a fresh timestamped subdirectory of the requested local output directory. It refuses data/measurements as an output destination. Do not deploy the runner; no external service or real short link is needed to reproduce the result. ## Expected observations | Context pair | Final paths | | --- | --- | | Desktop/mobile User-Agent strings | `/dest/desktop`, `/dest/mobile` | | `en`/`fr` language strings | `/dest/english`, `/dest/french` | | No Cookie / synthetic `segment=returning` | `/dest/new`, `/dest/returning` | | Repeated `/count` with identical headers | `/dest/visit-1`, `/dest/visit-2` | | Three-hop chain with all declared context | `/chain`, `/ua`, `/dest/mobile` | There are nine observations and 19 local requests. Every hop records UTC time, the synthetic requested URL, method, context, status, Location and the fixture's visit counter. The public measurement also retains the server-received synthetic headers so the client record can be cross-checked. The result is `data/measurements/redirect-observation-record.json` in the complete package. Source and runner hashes are included. The audit-hook counters are copied and zero-attempt assertions run against the measured values; they are not overwritten. Earlier P9 records remain under data/measurements/earlier-runs/P9, where a note identifies their overwritten zero fields as non-measurements. Local bind details are intentionally omitted. All sample URLs use a reserved `.test` name; all cookies and client identifiers are synthetic. ## Interpretation limits The server's rules are known because they were written for this test. They show four possible causes of changed destinations, not the cause of a particular real-world difference. The recorder follows only recognized HTTP redirect statuses within one reserved origin. It rejects queries, fragments, unsupported characters and other origins; the local runner imposes a two-second timeout around each observation. There is no browser, JavaScript execution, refresh handling, cookie jar, cache, TLS connection or geographic variation. Provider preview descriptions in the article come from documentation only. No preview, link checker, scanning service, shortener or target was used.