{
  "schemaVersion": "zb-mp3-relink-verification-v1",
  "completedAt": "2026-09-20T13:22:51.508695+00:00",
  "scope": "Isolated temporary rebuild/relink and synthetic audio validation; no live workspace or application runtime modification.",
  "gitCommit": "8c9bf9d0261e1c73126ec66884cc2dc0eafc993d",
  "workingTreeDirty": true,
  "toolchain": {
    "sdkPackageLabel": "2.0.8",
    "emsdkReleaseHash": "e4ed6c79f4db8b175d9bbe55869b697aba9bcf2a",
    "emccReportedVersion": "2.0.7",
    "emscriptenSourceCommit": "d059fd603d0b45b584f634dc2365bc9e9a6ec1dd",
    "clangVersion": "12.0.0",
    "llvmSourceCommit": "1a7a9efec3cf872dcf3e1a6e6fe39e797c4d9fc6",
    "binaryenVersion": "98 (version_97-120-gb8b457dda)",
    "nodeVersion": "12.18.1",
    "pythonVersion": "3.9.6",
    "host": "macOS Darwin25.3.0 arm64; x86_64 compiler via Rosetta",
    "versionMismatch": "Official historical and current emsdk2.0.8 maps point to this archive; it reports emcc2.0.7. No compiler files modified."
  },
  "sdkArchive": {
    "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/e4ed6c79f4db8b175d9bbe55869b697aba9bcf2a/wasm-binaries.tbz2",
    "bytes": 264854840,
    "sha256": "85f25c13eb11fe263cbb23c1ff12732da0d14b1fbc528d58b3fb4d61d60b8332",
    "providerHashes": [
      "crc32c=7LUQ0Q==",
      "md5=dr7+9T6raAOioGY/yjcbXQ=="
    ],
    "durationSeconds": 24.89
  },
  "nodeArchive": {
    "url": "https://nodejs.org/dist/v12.18.1/node-v12.18.1-darwin-x64.tar.gz",
    "sha256": "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba",
    "bytes": 20873670,
    "officialShasumsMatch": true
  },
  "sourceCommits": {
    "lame": "98db548e8e851defbba3184125ce10725355c332",
    "wrapper": "4a45333baadbab312d1cc0911151dfad23157c51"
  },
  "testedArchive": {
    "sha256": "f3043d4c90de8c4f84a731fed71895f08d371f66773b2d8f56a77b34e9b75a92",
    "bytes": 1577306,
    "members": 368
  },
  "currentArchive": {
    "file": "zonebuilder-mp3-source-0.7.0-lame-3.100.tar.gz",
    "bytes": 1585230,
    "sha256": "dad1e42b1f368d8f89d95415bcd3f3e0d6d4f872f66dcc3cd3f6dfbe8d144fea"
  },
  "finalPackageComparison": {
    "allBuildSourceAndHelperBytesUnchanged": true,
    "comparedFileCount": 354,
    "changesSinceCompileTest": {
      "changed": [
        "zonebuilder-mp3-source-0.7.0-lame-3.100/README.md",
        "zonebuilder-mp3-source-0.7.0-lame-3.100/SHA256SUMS",
        "zonebuilder-mp3-source-0.7.0-lame-3.100/UPSTREAM-PROVENANCE.json"
      ],
      "added": [
        "zonebuilder-mp3-source-0.7.0-lame-3.100/toolchain-notices/EMSCRIPTEN-COMPONENT-NOTICES.txt",
        "zonebuilder-mp3-source-0.7.0-lame-3.100/toolchain-notices/MUSL-COMPONENT-NOTICES.txt",
        "zonebuilder-mp3-source-0.7.0-lame-3.100/toolchain-notices/emscripten-component-notices-manifest.json",
        "zonebuilder-mp3-source-0.7.0-lame-3.100/toolchain-notices/musl-component-notices-manifest.json"
      ],
      "removed": []
    }
  },
  "builds": [
    {
      "name": "initial modern-host-node probe",
      "result": "FAIL",
      "exitCode": 1,
      "cause": "Pinned old SDK configure-generated JS used Node24 global fetch for local conftest.wasm path; original compiler worked. Fixed by selecting original SDK-era Node12.18.1, no source/flag change."
    },
    {
      "name": "complete upstream original source",
      "result": "PASS",
      "exitCode": 0
    },
    {
      "name": "complete upstream modified library",
      "result": "PASS",
      "exitCode": 0
    },
    {
      "name": "actual recipient source package / included unmodified rebuild-mp3.py / same modified library",
      "result": "PASS",
      "exitCode": 0
    }
  ],
  "temporaryLibraryChange": {
    "path": "src/wasm/lame/lame-src/libmp3lame/version.c",
    "function": "get_lame_short_version",
    "originalReturn": "str",
    "replacementReturn": "3.100-ZBRELINK",
    "beforeSha256": "5b33545cd0fb1743cc33790fbbc37a1276f0f341ea68c71ae16c0b64a5c43c75",
    "afterSha256": "f5b21320b097f57e92d469ce309aeb684df460b74b90b08b72650261f3bd6313",
    "purpose": "Temporary library-only inert version string marker; wrapper ABI/build flags unchanged"
  },
  "shippedLibraryChanged": false,
  "encoding": {
    "fixture": "Deterministic2seconds stereo PCM,44.1kHz,440Hz left/660Hz right,128kbps CBR; all chunks copied from WASM before reuse; all78 MPEG1 LayerIII frames parsed",
    "sameWasmABI": true,
    "originalRebuildMP3MatchesPublishedBytes": true,
    "recipientWasmMatchesFullSourceModified": true,
    "variants": {
      "published": {
        "wasmBytes": 132999,
        "wasmSha256": "85e81719250b9a667b1258143f689dda70e3e57a7e7c29ab0b4cef65c8f6eb9a",
        "mp3Bytes": 32600,
        "mp3Sha256": "5c254f3478d9e3dfca969e8d3e21bf0eff8b321519c4433696c158f055bafb64",
        "frames": 78,
        "sampleRate": 44100,
        "channels": 2,
        "secondsInput": 2,
        "version": "wasm-media-encoders-0.7.0",
        "mime": "audio/mpeg",
        "embeddedModifiedVersion": false
      },
      "rebuilt": {
        "wasmBytes": 132969,
        "wasmSha256": "a1d8ba08c80ec5e63d62ad30685e9656c9032126e9cd3b9c95991f8e17083b68",
        "mp3Bytes": 32600,
        "mp3Sha256": "5c254f3478d9e3dfca969e8d3e21bf0eff8b321519c4433696c158f055bafb64",
        "frames": 78,
        "sampleRate": 44100,
        "channels": 2,
        "secondsInput": 2,
        "version": "wasm-media-encoders-0.7.0",
        "mime": "audio/mpeg",
        "embeddedModifiedVersion": false
      },
      "modified": {
        "wasmBytes": 132984,
        "wasmSha256": "819acdef31733e6b5e297bcf0d4dd5274d86c76e94633873f624b0ae1cfb9236",
        "mp3Bytes": 32600,
        "mp3Sha256": "1b6eb4d259c3f507e1407c54e74778423ded98cda680551de0c687421e02be14",
        "frames": 78,
        "sampleRate": 44100,
        "channels": 2,
        "secondsInput": 2,
        "version": "wasm-media-encoders-0.7.0",
        "mime": "audio/mpeg",
        "embeddedModifiedVersion": true
      },
      "recipient": {
        "wasmBytes": 132984,
        "wasmSha256": "819acdef31733e6b5e297bcf0d4dd5274d86c76e94633873f624b0ae1cfb9236",
        "mp3Bytes": 32600,
        "mp3Sha256": "1b6eb4d259c3f507e1407c54e74778423ded98cda680551de0c687421e02be14",
        "frames": 78,
        "sampleRate": 44100,
        "channels": 2,
        "secondsInput": 2,
        "version": "wasm-media-encoders-0.7.0",
        "mime": "audio/mpeg",
        "embeddedModifiedVersion": true
      }
    }
  },
  "decoding": {
    "browser": "Chromium148.0.7778.96",
    "network": "Every page request aborted; about:blank page only; no app or live state",
    "allFourVariants": "PASS",
    "decodedSeconds": 2.0375510204081633,
    "channels": 2,
    "sampleRate": 44100,
    "decodedFrames": 89856
  },
  "runtimeNotices": {
    "description": "Emscripten MIT/NCSA runtime including emmalloc+standalone; musl MIT plus retained40component copyright/license blocks; compiler-rt Apache2+LLVM exceptions; WASI interface header CC0",
    "muslVersionHeader": "1.1.15",
    "linkTraceFullWasmMatchesOriginalBuild": true,
    "limit": "Link trace enumerates extracted members before LTO/metaDCE; notice composites are conservative supersets, not an asserted exact map of historical published binary. --Map diagnostic ignored by old emcc; --trace worked."
  },
  "limitations": [
    "Rebuilt WASM differs from published bytes (a1d8ba… versus85e817…); no exact historical binary reproducibility claim.",
    "Official SDK2.0.8 mapping archive reports emcc2.0.7/d059fd…; preserve both package pin and actual tool version.",
    "macOS arm64 with Rosetta and Python3.9.6 differs from original Linux container; Node12.18.1 selected as recorded SDK default.",
    "Functional synthetic coverage here is2s stereo44.1kHz128kbpsCBR, not all codecs/modes/durations or whole application export UX.",
    "System afinfo parsed original MP3; afconvert unavailable/unsupported client-format behavior also occurred with original published artifact; independent Chromium decoder used instead."
  ],
  "originalTemporaryEvidenceSha256": "5506dbbe2d5294a41e7600bb88e67bce8292c45cd70ca0a0e137d6e5dcc0d1d5",
  "recordRole": "Historical functional-relink validation before replacement of the npm runtime; not evidence for the current source archive/runtime.",
  "supersededForCurrentRuntimeBy": "REPRODUCIBLE_BUILD.json"
}
