TechnicalEntropy Freedoom browser runtime — reproducible build Engine source commit: dcb7a8dbc7a16ce3dda29382ac9aae9d77d21284 Compiler: Emscripten 6.0.8 docker.io/emscripten/emsdk@sha256:8714ed3a9fb585e662c931259a996bac36a57a8dd34b81e8277436fd77364475 From the repository root, after extracting the adjacent corresponding-source archive at the repository root: podman run --rm --userns=keep-id \ -v "$PWD:/src:Z" \ -w /src/third_party/doomgeneric/technicalentropy \ docker.io/emscripten/emsdk@sha256:8714ed3a9fb585e662c931259a996bac36a57a8dd34b81e8277436fd77364475 \ make -f Makefile.web clean all The Makefile produces revision-named intermediate files. Published JS, WASM, compressed WAD, and corresponding-source archive names include the first twelve hexadecimal characters of each file's actual SHA-256 and are recorded in /games/freedoom/runtime-manifest.v1.json. The committed engine verifies as: JS b66221e2306063875e5ef008ec233d10fe2eeb2dd580e93c9fde1f69b5609a52 WASM 571b00d6a41285468db232c244ae4c70e2daee9dc6c8ce162f88bc593b40947b Run `pnpm verify:freedoom` and `pnpm verify:freedoom:performance` from the repository development container to verify the committed artifacts, corresponding-source manifest, notices, hashes, commercial-data denylist, and first-launch performance budgets. The WAD is not built from the engine source. It is the separately licensed Freedoom Phase 2 0.13.0 data archive documented in third_party/freedoom.