# Reproducing the uploaded-file analysis This package is the final record for **15–16 October 2026**. It contains nineteen timed job observations, not nineteen providers. Five positive timed files have same-job browser reproductions. Exact access links, sessions, raw captures, provider-page HTML and private originals are intentionally excluded. ## Offline public analysis Use Python 3.12+, Node.js 25+, Playwright 1.62.1 and Chrome 155.0.8059.39 for matching browser behavior. Figure generation needs matplotlib (tested version is recorded in build-environment.json); HTML conversion needs Python Markdown. Poppler verifies PDF text in private collection. Public JSON/CSV inspection requires no account or network access. `final-observations.json` and CSV expose each job's exact observation time, anchor, elapsed minutes, condition, original/fresh outcomes and response SHA. `final-counts.json` describes the four separate groups. `results.json` and `checkpoint-results.csv` retain baseline controls and historical collection status as well as timed checks. A baseline is not an expiry observation. `sources.json` indexes archived provider sources by URL, timestamp and SHA; copyrighted raw pages remain private. `claim-audit.json` records benchmark scope and corrections. To rebuild figures and HTML from the supplied public data, in an isolated environment: ```bash python -m pip install matplotlib Markdown python uploaded-file-study/build-final.py ``` Run from the parent of `uploaded-file-study/`. The package keeps that directory layout. `article.md` contains the generated tables; build-final.py regenerates them from final-observations.json. It embeds PNGs and downloadable sanitized evidence into article.html when the ZIP is present. `render-final.cjs` visits only the local HTML and aborts external requests; set NODE_PATH to your Playwright installation if needed. Screenshots are separate visual-QA artifacts, not measurements. ## What requires the private originals `analyze.py`, `refresh-ledger.py`, `finalize-analysis.py` and `validate.py` reconcile raw captures, response bodies, PDF markers and hashes. They cannot recreate confidential bytes from a public hash. Their code is supplied for audit, while the original run's validation reports preserve checks. The ZIP carries final-validation-snapshot.json from before final assembly; final-validation.json beside the final HTML is the authoritative final archive check. `final-observations.json` is reproducible from those private inputs with finalize-analysis.py. Published timing can also be recalculated directly from public anchorUTC and observedUTC fields. The original source PDFs were made by make-specimen.py using deterministic image data, independent filename/text/metadata markers and ReportLab. Synthetic label IDs must be unique. Do not reuse existing job IDs, raw response paths or screenshot names. ## Live collection is closed The saved research-window.json and window-guard.cjs deliberately block new live checks after the owner's cutoff. Collection scripts are historical recipes, not permission to rerun this study, access old URLs, evade limits or reuse credentials. A separately authorized future study needs a new folder, new protocol/dates, new synthetic jobs, current UI/source review and newly validated task-isolated capture infrastructure. The proxy uses mitmproxy 12.2.3, only a dedicated browser context/process, normal upstream TLS verification and a process-scoped capture-CA exception. Never install its CA into personal/system stores or use a blanket HTTPS-validation bypass. The fixture certificate/trust bundle is specific to localhost and is not shipped. Worker/frame fixtures use 8806–8808; lifecycle uses 8801/8802, proxy 8804 and controller 8810. Inspect conflicts before any separately authorized restart. Standard-job, PDF24, paired PDFgear and other collection recipes contain archived selectors. Inspect current DOM and stop at account, verification or free-tier barriers. The original runtime paths in recipes are environment-specific; adapt them for a new authorized environment. No manual permanent provider deletion occurred in this investigation. Fixture deletion validates instrumentation only. ## Interpretation checks Never equate a failed URL with internal erasure, HTTP 200 with a valid PDF, bearer access with a vulnerability, or same-job browser reproduction with independent replication. A changed access condition or clock cannot become a precise deletion-time estimate. No market prevalence or safety ranking is supported. PDF2Go's numerical download-count benchmark was unverified at final source audit; original notes remain historical and corrected by claim-audit.json. The Clarity filename observation is single-capture, without independent matched reproduction or verified PDF-content disclosure.