diff --git a/.github/ISSUE_SPECS/006-measured-wasm-simd-decode.md b/.github/ISSUE_SPECS/006-measured-wasm-simd-decode.md new file mode 100644 index 0000000..0f400a0 --- /dev/null +++ b/.github/ISSUE_SPECS/006-measured-wasm-simd-decode.md @@ -0,0 +1,87 @@ +# Measure and qualify a small Wasm SIMD decoder improvement + +GitHub: https://github.com/misofm/codec/issues/6 + +## Objective and immutable scope + +Enable standard Wasm SIMD in the existing FLAC decoder only if comparable repeated measurements show a useful improvement. Preserve exact canonical PCM, libFLAC integrity validation, bounded memory/foreign calls, cancellation, backpressure, public APIs, and existing supported-runtime qualification. No libFLAC rewrite, storage/delivery policy, WebGPU, format migration, or engine work. + +Published baseline: codec 0.1.0 at `12f54c988a2df319064e6ca3885268d976319cc1`; decoder SHA-256 `5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925`. Candidate base is origin/main `970119ce723666267aa28856f315d7b702945a93`, retaining source-equivalent release/docs fixes. Candidate tree `/tmp/miso-simd-study/candidates/codec`, branch `perf/simd-codec-6`. Read-only baseline tree `/tmp/miso-simd-study/worktrees/codec` must remain unchanged. + +User-selected sequence supersedes local launch defaults: Sol high baseline → Astra xhigh scoped plan → Luna xhigh implementation → fresh Astra medium independent verification → identical after benchmarks → root release and app integration only if positive. Current status: baseline and scope complete; implementation, independent verification, positive comparison, and release pending. User authorizes the conditional sequence; no new routine approval step is required. + +## Evidence informing the slice + +Study root `/tmp/miso-simd-study`. Representative Bun 1.4.2 seven-round median: decode 57.345 ms (55.566–58.863) for 5,124,876 compressed bytes / 7,938,000 PCM bytes; adapter JS SHA 395.068 ms. Chromium 153.0.8010.12 whole Ghost r1 corpus: eight stems / 35 chunks / 92,685,354 compressed bytes / 249,323,400 active PCM bytes. Five-round one-worker decoder median 2,258.0 ms (2,248.4–2,330.8); eight-worker makespan 391.9 ms (390.7–394.8). All eight package, 35 compressed chunk, 35 decoded PCM chunk, and eight canonical hashes pass. Evidence files: `evidence/representative-bun-baseline.json`, `evidence/browser-baseline.json`. + +These are isolated compute measurements, not HTTP/OPFS installation or app-open timings. The adapter's larger PCM verification cost is addressed separately in adapter #82, without changing delivery/storage or removing checks. + +## Smallest implementation + +1. Add `-msimd128` to actual decoder/libFLAC/wrapper/runtime compilation in `scripts/build-decoder-wasm.ts`, enable the necessary Binaryen SIMD feature through the existing Asyncify pipeline, and record flags/features in the reproducibility manifest. Keep Emscripten 6.0.9 and libFLAC 1.5.0 pins, `-O3`, ABI/imports, fixed 2 MiB memory, stack bounds, 256 KiB asset/input caps, and 384 KiB PCM output cap. +2. Update `wasm/flac-decoder.wasm`, its manifest, and `src/decoder-wasm.ts` public hash. Inspect actual Wasm disassembly for SIMD instructions and record the finding. Flags alone do not prove acceleration. +3. Compare the compiler-only candidate using the frozen benchmark workload before any manual SIMD work. If neutral/negative, retain published scalar and record the rejected experiment. Do not start a predictor rewrite or broad libFLAC fork. Return any proposed follow-on source adjustment to root with measured justification. +4. For a positive candidate, retain the existing asset URL/public API and document standard Wasm SIMD requirements. All currently advertised Bun/Node/browser worker gates must pass. If a supported runtime fails, keep scalar for this release rather than silently dropping support or building an unplanned dual-asset framework. + +Owned files: decoder build script, decoder Wasm/manifest/public hash, focused decoder test adjustments, README, numbered spec/evidence, and eventual version/lock changes. Do not change encoder implementation, decoder Effect/control APIs, or original research worktrees. If Effect implementation changes become necessary, read and pin the user-requested Effect guidance first. + +## Correctness and performance acceptance + +Existing tests must retain exact mono/stereo16/24 PCM, variable-block behavior, CRC/MD5/truncation/count/metadata rejection, allocator/ABI cleanup, bounded inputs/outputs, downstream backpressure, and cancellation. Rebuild reproducibly and verify fixed memory/imports/exports/asset size. Add only a missing discriminating SIMD-boundary test if existing tests do not cover it. + +Rerun `harness/representative.mjs` and `harness/run-browser.mjs` with the same source fragmentation, corpus, CPU/runtime/browser, warmups, seven Bun rounds and five browser decode rounds. Record actual candidate source/tree/version and Wasm hash; source labels must be parameterized without changing timed work. Run CPU-heavy work serially with benchmark ownership. Accept a repeatable whole-corpus improvement larger than observed variation, without a material regression in single/eight-worker modes or supported runtimes. Keep raw samples, medians/ranges, percent differences, initialization/compile cost, asset size, and bounds. A single fast sample is insufficient; do not retry repeatedly looking for a win. + +## Required qualification and release + +Run `bun run check`, pinned-native `bun run test:integration`, `bun run build:wasm:verify`, `bun run build`, and `bun run pack:check`. Keep the existing isolated packed consumer matrix: Bun 1.4.2, Node 22.23.2, Effect rc.112/rc.115, Chromium/Firefox/WebKit workers. Preserve source/toolchain/license provenance and both Wasm reproducibility gates. Do not commit corpus media, caches, dependencies, secrets, or tarballs. + +Fresh Astra medium independently verifies a frozen candidate and records full commit/tree, files, commands/results, packed archive provenance, benchmark comparison, verdict, and remaining blockers here. Root owns versioning, merge, trusted publication using `.github/RELEASING.md`, registry artifact verification, and downstream adapter/app installation. Codec may remain unchanged if its candidate is not positive; that does not prevent a qualified adapter-only improvement. No implementation or publication is claimed by this scope. + +Companion plan: `/tmp/miso-simd-study/simd-plan.md`; adapter issue https://github.com/misofm/engine-web-adapter/issues/82. Technical reference: https://emscripten.org/docs/porting/simd.html . + +## Luna implementation evidence (candidate, not published) + +The compiler-only candidate was built with the pinned Emscripten 6.0.9 +checkout and libFLAC 1.5.0 archive. `-msimd128` is present in configure +`CFLAGS` and every decoder, libFLAC, wrapper, and runtime compile. The existing +Asyncify pipeline now passes `--enable-simd`; the manifest records the exact +compiler flag and `bulk-memory`/`simd128` features. The rebuilt fixed-memory +asset is 75,923 bytes with SHA-256 +`70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd`. + +`wasm2wat wasm/flac-decoder.wasm` contains 62 `v128.const`, 23 `v128.load`, +80 `v128.store`, 20 `i8x16.shuffle`, and additional typed SIMD operations. +This is actual SIMD in the asset; the compiler flag alone was not used as +evidence. No libFLAC source or decoder control-flow changes were made. + +On the frozen representative Bun workload (Bun 1.4.2, seven rounds), decode +was 54.872 ms (53.596–71.818) versus the scalar baseline 57.345 ms +(55.566–58.863), a 4.31% median reduction. On Chromium 153.0.8010.12 and the +full eight-stem/35-chunk corpus, one-worker decode medians were 2,179.1 ms +(2,140.4–2,191.7) and 2,155.5 ms (2,150.3–2,192.5) in two candidate runs; +the published baseline was 2,258.0 ms (2,248.4–2,330.8), with an adjacent +unchanged baseline at 2,243.9 ms (2,229.0–2,298.4). Eight-worker makespan +medians were 378.1 ms (370.2–390.4) and 377.7 ms (372.5–379.8), versus the +published 391.9 ms (390.7–394.8) and adjacent unchanged 394.1 ms +(388.8–422.4). All package, compressed chunk, decoded PCM chunk, canonical +PCM, libFLAC MD5, and count checks passed in each harness run. + +Local gates passed: `bun run check` (40 passed, 5 skipped native-only), +`CODEC_NATIVE_FLAC=/data/codec-tooling/flac-scalar/src/flac/flac bun run +test:integration` (5 passed), `bun run build:wasm:verify`, `bun run build`, and +`bun run pack:check` (Bun/Node and Chromium/Firefox/WebKit packed consumers for +Effect rc.112 and rc.115). Fresh independent review and root release remain +pending; this candidate does not claim publication. + +The frozen implementation commit is `6265973b730230009b6d07705f1641a948120105`. +The post-commit final browser record is +`/tmp/miso-simd-study/evidence/browser-candidate-final.json`; it reports this +codec commit and decoder hash, with one-worker decode 2,200.9 ms +(2,181.7–2,239.6), eight-worker makespan 386.2 ms (371.3–397.9), and all +547,303,704 bytes of indexed PCM verification passing. + +## Independent verification and official acceptance + +Fresh Astra medium verified the frozen runtime and the adapter CI correction; no implementation blockers remain. Sol high repeated the frozen corpus after review: Chromium serial decode 2232.9 → 2175.5 ms, eight-worker decode 399.9 → 382.7 ms, indexed PCM verification 11568.0 → 2193.2 ms. Every digest and count passed. Both candidates are accepted for release. Most hashing improvement comes from scalar Wasm; the separately measured SIMD increment is 1.54%. These are compute measurements, not app-open timings. + +Full review, report, and immutable raw measurements are retained in `.github/RELEASE_EVIDENCE/006/`. Root is preparing the release; publication remains pending. diff --git a/.github/RELEASE_EVIDENCE/006/AFTER.md b/.github/RELEASE_EVIDENCE/006/AFTER.md new file mode 100644 index 0000000..b2b5ebf --- /dev/null +++ b/.github/RELEASE_EVIDENCE/006/AFTER.md @@ -0,0 +1,135 @@ +# Official post-verification comparison + +Measured 2026-09-13 after the fresh Astra medium review passed and its sole CI +blocker was repaired/rechecked. The compared candidate trees stayed clean and +frozen throughout the run: + +- Codec `8c2823b041594a38284b01b5a39d77a6b515716e`, tree + `0028688d80b1baf794508340bc477da590be4b38`, decoder asset SHA-256 + `70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd`. +- Adapter `088a14f57a945e6feb93145f3338943276a335dc`, tree + `d453f0937c99954bd7a8917cec06ce2682f77ee5`, generated selected SHA module + payload SHA-256 + `4435c2078c2783a77c06532e480d195ce314f500b849688d89d494432789fc28`. + +The adjacent unchanged controls are published codec `0.1.0` +`12f54c988a2df319064e6ca3885268d976319cc1` and adapter `0.4.0` +`9b8172fd52746907c113442995dc7538cfe5ad13`. Both runs used the same Linux +x86_64 AMD EPYC 7313P host, Node 22.23.2 runner, Playwright Core 1.62.1, Vite +8.2.2, and headless Chromium 153.0.8010.12 binary +`8c599d43aec53f2460a31ae2f4af6bd863f8258b34ff519564bc5d4726bfaa1e`. +System load after the serial benchmark sequence was 0.76/1.06/1.10. No +competing builds or study benchmarks ran in the window. + +## Correctness and workload identity + +The official baseline and candidate each admitted the same eight published +Ghost `r1` `MISOSTM1` packages and passed all 8 package SHA-256, 35 compressed +FLAC SHA-256, 35 decoded chunk PCM SHA-256, and 8 reconstructed canonical PCM +SHA-256 checks. The corpus remained 92,722,644 container bytes, 92,685,354 +compressed payload bytes, 249,323,400 decoded active PCM bytes, 48,656,904 +synthesized zero bytes, and 297,980,304 canonical PCM bytes. The indexed PCM +verification workload remained 547,303,704 hashed bytes. Maximum observed PCM +output remained 27,648 bytes. The raw JSON records each source identity and +package digest; the representative chunk independently matched compressed +SHA-256 `ab35d73ddbfb7cbeb9384a34c585edc0141e88bb812d047caad4969a4abe884b` +and PCM SHA-256 +`649b462aa016a111211498488ffca8da24e16f1a9b594f58bf38fb03933bb4f5` +with both adapter and Node crypto, and libFLAC MD5 was checked and verified. + +## Official adjacent Chromium results + +Each decoder case had one untimed warm-up and five measured rounds. Main-thread +PCM verification had one warm-up and three measured rounds. Local HTTP reads, +package/compressed correctness hashes, manifest admission, Wasm fetch/compile, +worker construction, network/CDN, OPFS, quota estimation, structured-clone +acknowledgements, and input/output waits are outside the timed sections. + +| Slice | Published adjacent samples (ms) | Candidate samples (ms) | Median change | Candidate CV / throughput | +| ---------------------------- | -------------------------------------- | -------------------------------------- | ----------------------------------: | ------------------------: | +| One-worker FLAC decode | 2197.2, 2232.9, 2268.7, 2243.6, 2226.3 | 2155.4, 2175.5, 2187.5, 2167.5, 2199.7 | 2232.9 → 2175.5, **2.57% faster** | 0.71%; 109.30 MiB/s | +| Eight-worker decode makespan | 399.9, 404.9, 399.9, 391.7, 416.3 | 371.3, 404.3, 379.3, 382.7, 394.6 | 399.9 → 382.7, **4.30% faster** | 3.02%; 621.30 MiB/s | +| Main-thread indexed PCM SHA | 11589.8, 11568.0, 11550.9 | 2184.3, 2201.6, 2193.2 | 11568.0 → 2193.2, **81.04% faster** | 0.32%; 237.99 MiB/s | + +The unchanged-control CVs were 1.04%, 2.01%, and 0.14% respectively. Decoder +gains are modest. The one-worker median improvement exceeds run variation and +the result agrees with the earlier independent candidate runs. The eight-worker +ranges overlap under greater scheduling noise, but its 4.30% median gain and +the earlier adjacent 4.16% result have the same direction and magnitude. The +compiler-only decoder candidate therefore passes this host's compute gate in +both serial and default-eight-worker modes. + +The SHA result is decisive and does not overlap the control. For attribution, +the same-host development control measured scalar Wasm at a 2224.7 ms median +against its adjacent unchanged-JS median of 11540.5 ms: **scalar Wasm reduces +time by 80.72% versus JS**. Selected SIMD measured +2190.4 ms in the paired control, another **1.54% faster than scalar Wasm**; its +adjacent repeat was 2189.8 ms and the official frozen result is 2193.2 ms. SIMD +adds a small repeatable gain to the much larger Wasm gain. + +## Representative Bun results + +The identical largest indexed chunk was rerun for seven rounds on Bun 1.4.2. +Bun's reported `process.version` is compatibility metadata and is not a Node 26 +qualification. + +| Slice | Published adjacent median (range; CV) | Candidate median (range; CV) | Change | +| -------------------------------- | ------------------------------------: | -------------------------------: | ----------------: | +| FLAC decode, 7,938,000 PCM bytes | 60.117 ms (57.117–63.479; 3.85%) | 55.460 ms (51.870–62.195; 5.68%) | **7.75% faster** | +| PCM SHA-256, 7,938,000 bytes | 389.382 ms (385.286–391.515; 0.55%) | 33.247 ms (33.181–33.836; 0.66%) | **91.46% faster** | + +Exact samples are retained in the official Bun JSON files. The representative +result supports the browser direction; the whole-corpus Chromium comparison is +the primary gate. + +## Assets, initialization, and memory + +The decoder asset grew from 74,338 to 75,923 bytes: +1,585 bytes (+2.13%). Its +fixed 2 MiB memory, ABI, imports/exports, 256 KiB input cap, and 384 KiB maximum +output cap are unchanged. Browser decoder compile/validation was 2.0 ms for the +adjacent control and 3.3 ms for the candidate; Bun measured 4.676 and 4.332 ms. +These are single setup observations and are excluded from throughput. + +The selected SHA compression module is 957 bytes, versus 1,347 bytes for the +scalar Wasm control. It has no imports, one fixed 64 KiB memory, a 16 KiB input +scratch/batch cap, and no growth. A single Bun observation of the candidate's +first 16 KiB hash was 1.094 ms versus 0.280 ms warm, placing a coarse upper bound +of about 0.814 ms on lazy compile/instance overhead on this host. The operation +also includes hashing and JIT effects, so it is not a pure compile measurement. + +Adapter fixed-buffer accounting rises by 131,072 bytes, from 4,853,776 to +4,984,848 bytes, leaving 3,403,760 bytes within the unchanged 8 MiB worker +reservation. Per-hash JS state/tail/length ownership and API semantics remain +unchanged. Independent verification confirmed fixed memories, failed growth, +bounded copies, digest equivalence, packed deployment, and full test gates. + +## Recommendation and limits + +**Codec decoder: ship the reviewed SIMD candidate.** It gives a repeatable but +modest 2.57% one-worker and 4.30% eight-worker Chromium improvement with exact +PCM and unchanged bounds. The small asset/compile changes are acceptable in the +measured scope. + +**Adapter SHA: ship the reviewed selected SIMD candidate.** The production +selection reduces current indexed main-thread PCM verification compute by +81.04%; scalar Wasm separately reduces time by 80.72% versus JS, and SIMD adds a +measured 1.54% reduction versus scalar Wasm. Correctness and bounded-memory +gates remain intact. + +These are isolated cached-compute findings. They make no app-open, CDN/network, +OPFS, mobile, or end-to-end latency claim. App integration and release remain +root-owned follow-up work. + +Official raw evidence: + +- `browser-official-adjacent-baseline.json` SHA-256 + `514844c7c52396fa94f861f0a9b4ca27fc0feba5bb1d7ca7c477dd1dfa6bc9df` +- `browser-official-candidate.json` SHA-256 + `44d1c75c80963317bbe8033f6732ac0770e274fcbf60e23e1e48c3dc09731dbf` +- `representative-bun-official-adjacent-baseline.json` SHA-256 + `8070ac00dc4bfdbcb756c033c3c634a4ef8f20e927bf5ae1b4c645829a5f3809` +- `representative-bun-official-candidate.json` SHA-256 + `e094254f2838e75ff4769f9c6d63b54f9a6b76eac1fc4ae7dd14c6993befe272` + +Exact rerun commands and the parameterized source-root contract remain in +`../harness/README.md`. diff --git a/.github/RELEASE_EVIDENCE/006/browser-official-adjacent-baseline.json b/.github/RELEASE_EVIDENCE/006/browser-official-adjacent-baseline.json new file mode 100644 index 0000000..30408c4 --- /dev/null +++ b/.github/RELEASE_EVIDENCE/006/browser-official-adjacent-baseline.json @@ -0,0 +1,640 @@ +{ + "generatedAt": "2026-09-13T10:02:45.185Z", + "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.0.0 Safari/537.36", + "hardwareConcurrency": 32, + "receipt": { + "path": "/data/sparse-pcm-launch/publication-per-stem-20260911/receipt.json", + "completedAt": "2026-09-11T21:48:24.317111+00:00", + "inputQualificationSha256": "b3e7c511719a01cbb33ef49dfaf06919d5dcafc346c6fa3a08519059b871c7cb" + }, + "totals": { + "containerBytes": 92722644, + "payloadBytes": 92685354, + "chunks": 35, + "activePcmBytes": 249323400, + "omittedPcmBytes": 48656904, + "canonicalPcmBytes": 297980304, + "indexedPcmVerificationBytes": 547303704, + "maximumPcmBlockBytes": 27648 + }, + "source": { + "codecVersion": "0.1.0", + "codecCommit": "12f54c988a2df319064e6ca3885268d976319cc1", + "adapterVersion": "0.4.0", + "adapterCommit": "9b8172fd52746907c113442995dc7538cfe5ad13", + "decoderWasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925" + }, + "correctness": { + "admittedPackages": [ + { + "id": "drums", + "identity": "sha256:03328fc288eda889bb9bb7813a48bf87d3e011b1698778fc456f57c8561b9db2", + "bytes": 16542989, + "payloadBytes": 16538208, + "chunks": 4, + "fetchMs": 88.79999995231628, + "admissionMs": 1.4000000953674316, + "compressedVerificationMs": 38, + "packageSha256": "9e12a781f0596d78f177463570203389999bd6312f1b340506a163b10b370824" + }, + { + "id": "lead-vox", + "identity": "sha256:27c2485abef9b9791cf127b08108e9982383fdbf7736095f8411647e5b82a7ac", + "bytes": 19754378, + "payloadBytes": 19752920, + "chunks": 5, + "fetchMs": 115.10000002384186, + "admissionMs": 0.7000000476837158, + "compressedVerificationMs": 45.299999952316284, + "packageSha256": "8d9595ec06be9422d2a8bd5622790c2e78a03451d92db294ee6c391eba74dbc9" + }, + { + "id": "vocal-fx", + "identity": "sha256:361eb2581ace51a5a34c59d83c06ebe6dad73300115db995e6c0692fb4061ae3", + "bytes": 4223284, + "payloadBytes": 4217158, + "chunks": 4, + "fetchMs": 24, + "admissionMs": 0.6000000238418579, + "compressedVerificationMs": 9.700000047683716, + "packageSha256": "b703951ff75704a35a5c3aa0254da5d8fe10e9d4a0d54efe21732eeee9062f82" + }, + { + "id": "fx", + "identity": "sha256:9184f49ee35fa748ecf4d898eb06058d2f499b8348b80736c5c252a99fe36b98", + "bytes": 8777838, + "payloadBytes": 8766086, + "chunks": 4, + "fetchMs": 44.60000002384186, + "admissionMs": 1.100000023841858, + "compressedVerificationMs": 20.5, + "packageSha256": "e7a2b1ba6519adffc8618c12e9d4331840f7b02b9abda0b7e8e915bd2c2303f3" + }, + { + "id": "synth-6", + "identity": "sha256:9a57207ac802bad426435d920b77048ba9dd391797c6a462444c6e375716d36f", + "bytes": 8486166, + "payloadBytes": 8481847, + "chunks": 4, + "fetchMs": 42.39999997615814, + "admissionMs": 0.5, + "compressedVerificationMs": 19.5, + "packageSha256": "b951265b6d86af8c93148d77e547d36e8015e2d370e5ea58c73937ad1bc9c68a" + }, + { + "id": "bass", + "identity": "sha256:ba8f39a6c7b1f22bded6ce6d97361a01ce751282b3f1ab08f931b876c6734ae1", + "bytes": 4192048, + "payloadBytes": 4186111, + "chunks": 4, + "fetchMs": 21.5, + "admissionMs": 0.5, + "compressedVerificationMs": 9.300000071525574, + "packageSha256": "0724e73b3b3f737deedd3dfe685be7323674596cef963ec5331a1eab19700bd3" + }, + { + "id": "bv_s", + "identity": "sha256:c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f", + "bytes": 22224639, + "payloadBytes": 22223178, + "chunks": 5, + "fetchMs": 65.39999997615814, + "admissionMs": 0.19999992847442627, + "compressedVerificationMs": 51.40000009536743, + "packageSha256": "376641bd8b9d97160d26e9cff6ecce224676f0674d4d5b40e64130cd4200e354" + }, + { + "id": "guitar", + "identity": "sha256:e5c44270be4bd0862850977ef3d8a06f1b3803d75c276bb243139bae1f56db62", + "bytes": 8521302, + "payloadBytes": 8519846, + "chunks": 5, + "fetchMs": 42.699999928474426, + "admissionMs": 0.20000004768371582, + "compressedVerificationMs": 19.799999952316284, + "packageSha256": "bbed614e9d8020e592657fd6e8ce726f89eb1d5a42317bd58c04b0bd7457df97" + } + ], + "decodedPcmBytes": 249323400, + "chunkPcmSha256Checks": 35, + "canonicalPcmSha256Checks": 8, + "compressedChunkSha256Checks": 35, + "packageSha256Checks": 8 + }, + "ioAndSetup": { + "oneWorker": { + "setupWallMs": 672.3999999761581, + "wasmFetchMs": 7, + "compileMs": 2, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "drums", + "identity": "sha256:03328fc288eda889bb9bb7813a48bf87d3e011b1698778fc456f57c8561b9db2", + "bytes": 16542989, + "payloadBytes": 16538208, + "chunks": 4, + "fetchMs": 88.79999995231628, + "admissionMs": 1.4000000953674316, + "compressedVerificationMs": 38, + "packageSha256": "9e12a781f0596d78f177463570203389999bd6312f1b340506a163b10b370824" + }, + { + "id": "lead-vox", + "identity": "sha256:27c2485abef9b9791cf127b08108e9982383fdbf7736095f8411647e5b82a7ac", + "bytes": 19754378, + "payloadBytes": 19752920, + "chunks": 5, + "fetchMs": 115.10000002384186, + "admissionMs": 0.7000000476837158, + "compressedVerificationMs": 45.299999952316284, + "packageSha256": "8d9595ec06be9422d2a8bd5622790c2e78a03451d92db294ee6c391eba74dbc9" + }, + { + "id": "vocal-fx", + "identity": "sha256:361eb2581ace51a5a34c59d83c06ebe6dad73300115db995e6c0692fb4061ae3", + "bytes": 4223284, + "payloadBytes": 4217158, + "chunks": 4, + "fetchMs": 24, + "admissionMs": 0.6000000238418579, + "compressedVerificationMs": 9.700000047683716, + "packageSha256": "b703951ff75704a35a5c3aa0254da5d8fe10e9d4a0d54efe21732eeee9062f82" + }, + { + "id": "fx", + "identity": "sha256:9184f49ee35fa748ecf4d898eb06058d2f499b8348b80736c5c252a99fe36b98", + "bytes": 8777838, + "payloadBytes": 8766086, + "chunks": 4, + "fetchMs": 44.60000002384186, + "admissionMs": 1.100000023841858, + "compressedVerificationMs": 20.5, + "packageSha256": "e7a2b1ba6519adffc8618c12e9d4331840f7b02b9abda0b7e8e915bd2c2303f3" + }, + { + "id": "synth-6", + "identity": "sha256:9a57207ac802bad426435d920b77048ba9dd391797c6a462444c6e375716d36f", + "bytes": 8486166, + "payloadBytes": 8481847, + "chunks": 4, + "fetchMs": 42.39999997615814, + "admissionMs": 0.5, + "compressedVerificationMs": 19.5, + "packageSha256": "b951265b6d86af8c93148d77e547d36e8015e2d370e5ea58c73937ad1bc9c68a" + }, + { + "id": "bass", + "identity": "sha256:ba8f39a6c7b1f22bded6ce6d97361a01ce751282b3f1ab08f931b876c6734ae1", + "bytes": 4192048, + "payloadBytes": 4186111, + "chunks": 4, + "fetchMs": 21.5, + "admissionMs": 0.5, + "compressedVerificationMs": 9.300000071525574, + "packageSha256": "0724e73b3b3f737deedd3dfe685be7323674596cef963ec5331a1eab19700bd3" + }, + { + "id": "bv_s", + "identity": "sha256:c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f", + "bytes": 22224639, + "payloadBytes": 22223178, + "chunks": 5, + "fetchMs": 65.39999997615814, + "admissionMs": 0.19999992847442627, + "compressedVerificationMs": 51.40000009536743, + "packageSha256": "376641bd8b9d97160d26e9cff6ecce224676f0674d4d5b40e64130cd4200e354" + }, + { + "id": "guitar", + "identity": "sha256:e5c44270be4bd0862850977ef3d8a06f1b3803d75c276bb243139bae1f56db62", + "bytes": 8521302, + "payloadBytes": 8519846, + "chunks": 5, + "fetchMs": 42.699999928474426, + "admissionMs": 0.20000004768371582, + "compressedVerificationMs": 19.799999952316284, + "packageSha256": "bbed614e9d8020e592657fd6e8ce726f89eb1d5a42317bd58c04b0bd7457df97" + } + ] + }, + "eightWorkersWallMs": 937.7999999523163, + "eightWorkers": [ + { + "setupWallMs": 189.5, + "wasmFetchMs": 2.5999999046325684, + "compileMs": 1.5, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "drums", + "identity": "sha256:03328fc288eda889bb9bb7813a48bf87d3e011b1698778fc456f57c8561b9db2", + "bytes": 16542989, + "payloadBytes": 16538208, + "chunks": 4, + "fetchMs": 140.40000009536743, + "admissionMs": 1.5999999046325684, + "compressedVerificationMs": 43.40000009536743, + "packageSha256": "9e12a781f0596d78f177463570203389999bd6312f1b340506a163b10b370824" + } + ] + }, + { + "setupWallMs": 215, + "wasmFetchMs": 4.699999928474426, + "compileMs": 1.5, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "lead-vox", + "identity": "sha256:27c2485abef9b9791cf127b08108e9982383fdbf7736095f8411647e5b82a7ac", + "bytes": 19754378, + "payloadBytes": 19752920, + "chunks": 5, + "fetchMs": 161.70000004768372, + "admissionMs": 0.6999999284744263, + "compressedVerificationMs": 46.300000071525574, + "packageSha256": "8d9595ec06be9422d2a8bd5622790c2e78a03451d92db294ee6c391eba74dbc9" + } + ] + }, + { + "setupWallMs": 77.39999997615814, + "wasmFetchMs": 21, + "compileMs": 2.0999999046325684, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "vocal-fx", + "identity": "sha256:361eb2581ace51a5a34c59d83c06ebe6dad73300115db995e6c0692fb4061ae3", + "bytes": 4223284, + "payloadBytes": 4217158, + "chunks": 4, + "fetchMs": 43.39999997615814, + "admissionMs": 1.3000000715255737, + "compressedVerificationMs": 9.600000023841858, + "packageSha256": "b703951ff75704a35a5c3aa0254da5d8fe10e9d4a0d54efe21732eeee9062f82" + } + ] + }, + { + "setupWallMs": 134.39999997615814, + "wasmFetchMs": 2.4000000953674316, + "compileMs": 1.6999999284744263, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "fx", + "identity": "sha256:9184f49ee35fa748ecf4d898eb06058d2f499b8348b80736c5c252a99fe36b98", + "bytes": 8777838, + "payloadBytes": 8766086, + "chunks": 4, + "fetchMs": 99.70000004768372, + "admissionMs": 3.5, + "compressedVerificationMs": 27.09999990463257, + "packageSha256": "e7a2b1ba6519adffc8618c12e9d4331840f7b02b9abda0b7e8e915bd2c2303f3" + } + ] + }, + { + "setupWallMs": 118.70000004768372, + "wasmFetchMs": 3.5, + "compileMs": 1.7999999523162842, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "synth-6", + "identity": "sha256:9a57207ac802bad426435d920b77048ba9dd391797c6a462444c6e375716d36f", + "bytes": 8486166, + "payloadBytes": 8481847, + "chunks": 4, + "fetchMs": 87.10000002384186, + "admissionMs": 1, + "compressedVerificationMs": 25.200000047683716, + "packageSha256": "b951265b6d86af8c93148d77e547d36e8015e2d370e5ea58c73937ad1bc9c68a" + } + ] + }, + { + "setupWallMs": 80.80000007152557, + "wasmFetchMs": 5.600000023841858, + "compileMs": 1.600000023841858, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "bass", + "identity": "sha256:ba8f39a6c7b1f22bded6ce6d97361a01ce751282b3f1ab08f931b876c6734ae1", + "bytes": 4192048, + "payloadBytes": 4186111, + "chunks": 4, + "fetchMs": 60.5, + "admissionMs": 1.4000000953674316, + "compressedVerificationMs": 11.699999928474426, + "packageSha256": "0724e73b3b3f737deedd3dfe685be7323674596cef963ec5331a1eab19700bd3" + } + ] + }, + { + "setupWallMs": 156.60000002384186, + "wasmFetchMs": 3.100000023841858, + "compileMs": 1.7000000476837158, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "bv_s", + "identity": "sha256:c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f", + "bytes": 22224639, + "payloadBytes": 22223178, + "chunks": 5, + "fetchMs": 97.39999997615814, + "admissionMs": 1.100000023841858, + "compressedVerificationMs": 53.299999952316284, + "packageSha256": "376641bd8b9d97160d26e9cff6ecce224676f0674d4d5b40e64130cd4200e354" + } + ] + }, + { + "setupWallMs": 69, + "wasmFetchMs": 2.3000000715255737, + "compileMs": 1.600000023841858, + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "stems": [ + { + "id": "guitar", + "identity": "sha256:e5c44270be4bd0862850977ef3d8a06f1b3803d75c276bb243139bae1f56db62", + "bytes": 8521302, + "payloadBytes": 8519846, + "chunks": 5, + "fetchMs": 43.90000009536743, + "admissionMs": 1, + "compressedVerificationMs": 20.09999990463257, + "packageSha256": "bbed614e9d8020e592657fd6e8ce726f89eb1d5a42317bd58c04b0bd7457df97" + } + ] + } + ] + }, + "measurements": { + "oneWorkerDecodeMs": { + "values": [ + 2197.1999999284744, + 2232.899999976158, + 2268.6999999284744, + 2243.600000023842, + 2226.3000000715256 + ], + "min": 2197.1999999284744, + "median": 2232.899999976158, + "max": 2268.6999999284744, + "mean": 2233.739999985695, + "coefficientOfVariation": 0.010423636530554482 + }, + "browserMainThreadIndexedPcmSha256Ms": { + "values": [ + 11589.799999952316, + 11568, + 11550.900000095367 + ], + "min": 11550.900000095367, + "median": 11568, + "max": 11589.799999952316, + "mean": 11569.566666682562, + "coefficientOfVariation": 0.001375976336848006 + }, + "eightWorkerDecodeWallMs": { + "values": [ + 399.89999997615814, + 404.89999997615814, + 399.89999997615814, + 391.7000000476837, + 416.2999999523163 + ], + "min": 391.7000000476837, + "median": 399.89999997615814, + "max": 416.2999999523163, + "mean": 402.53999998569486, + "coefficientOfVariation": 0.020070079528227324 + }, + "eightWorkerPerStem": [ + [ + { + "id": "drums", + "elapsedMs": 344.5, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 399.60000002384186, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 347.90000009536743, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 321.90000009536743, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 280.10000002384186, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 265.10000002384186, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 397, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 384, + "pcmBytes": 37247538 + } + ], + [ + { + "id": "drums", + "elapsedMs": 325.2999999523163, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 404.1999999284744, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 313.89999997615814, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 285.59999990463257, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 263, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 243.79999995231628, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 404.6999999284744, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 362.6999999284744, + "pcmBytes": 37247538 + } + ], + [ + { + "id": "drums", + "elapsedMs": 338.39999997615814, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 395.89999997615814, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 321.7999999523163, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 270.7000000476837, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 245.10000002384186, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 229.10000002384186, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 399.7000000476837, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 385.6999999284744, + "pcmBytes": 37247538 + } + ], + [ + { + "id": "drums", + "elapsedMs": 324, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 391.7000000476837, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 308.2000000476837, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 274.5, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 254.20000004768372, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 225.5, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 383.5, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 371.60000002384186, + "pcmBytes": 37247538 + } + ], + [ + { + "id": "drums", + "elapsedMs": 373, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 414.60000002384186, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 367.7999999523163, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 314.2999999523163, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 313.2999999523163, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 294.7999999523163, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 416.1999999284744, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 405, + "pcmBytes": 37247538 + } + ] + ] + }, + "browserVersion": "153.0.8010.12", + "runner": { + "node": "v22.23.2", + "chrome": "/home/bl/.cache/ms-playwright/chromium-1243/chrome-linux64/chrome", + "codecRoot": "/tmp/miso-simd-study/worktrees/codec", + "adapterRoot": "/tmp/miso-simd-study/worktrees/adapter", + "decodeRounds": 5, + "shaRounds": 3 + } +} diff --git a/.github/RELEASE_EVIDENCE/006/browser-official-candidate.json b/.github/RELEASE_EVIDENCE/006/browser-official-candidate.json new file mode 100644 index 0000000..b7d24d5 --- /dev/null +++ b/.github/RELEASE_EVIDENCE/006/browser-official-candidate.json @@ -0,0 +1,640 @@ +{ + "generatedAt": "2026-09-13T10:03:22.676Z", + "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.0.0 Safari/537.36", + "hardwareConcurrency": 32, + "receipt": { + "path": "/data/sparse-pcm-launch/publication-per-stem-20260911/receipt.json", + "completedAt": "2026-09-11T21:48:24.317111+00:00", + "inputQualificationSha256": "b3e7c511719a01cbb33ef49dfaf06919d5dcafc346c6fa3a08519059b871c7cb" + }, + "totals": { + "containerBytes": 92722644, + "payloadBytes": 92685354, + "chunks": 35, + "activePcmBytes": 249323400, + "omittedPcmBytes": 48656904, + "canonicalPcmBytes": 297980304, + "indexedPcmVerificationBytes": 547303704, + "maximumPcmBlockBytes": 27648 + }, + "source": { + "codecVersion": "0.1.0", + "codecCommit": "8c2823b041594a38284b01b5a39d77a6b515716e", + "adapterVersion": "0.4.0", + "adapterCommit": "088a14f57a945e6feb93145f3338943276a335dc", + "decoderWasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd" + }, + "correctness": { + "admittedPackages": [ + { + "id": "drums", + "identity": "sha256:03328fc288eda889bb9bb7813a48bf87d3e011b1698778fc456f57c8561b9db2", + "bytes": 16542989, + "payloadBytes": 16538208, + "chunks": 4, + "fetchMs": 86, + "admissionMs": 1.5, + "compressedVerificationMs": 37.40000009536743, + "packageSha256": "9e12a781f0596d78f177463570203389999bd6312f1b340506a163b10b370824" + }, + { + "id": "lead-vox", + "identity": "sha256:27c2485abef9b9791cf127b08108e9982383fdbf7736095f8411647e5b82a7ac", + "bytes": 19754378, + "payloadBytes": 19752920, + "chunks": 5, + "fetchMs": 112.90000009536743, + "admissionMs": 1.1999999284744263, + "compressedVerificationMs": 44.700000047683716, + "packageSha256": "8d9595ec06be9422d2a8bd5622790c2e78a03451d92db294ee6c391eba74dbc9" + }, + { + "id": "vocal-fx", + "identity": "sha256:361eb2581ace51a5a34c59d83c06ebe6dad73300115db995e6c0692fb4061ae3", + "bytes": 4223284, + "payloadBytes": 4217158, + "chunks": 4, + "fetchMs": 25.399999976158142, + "admissionMs": 0.6000000238418579, + "compressedVerificationMs": 9.299999952316284, + "packageSha256": "b703951ff75704a35a5c3aa0254da5d8fe10e9d4a0d54efe21732eeee9062f82" + }, + { + "id": "fx", + "identity": "sha256:9184f49ee35fa748ecf4d898eb06058d2f499b8348b80736c5c252a99fe36b98", + "bytes": 8777838, + "payloadBytes": 8766086, + "chunks": 4, + "fetchMs": 50, + "admissionMs": 1.2000000476837158, + "compressedVerificationMs": 19.699999928474426, + "packageSha256": "e7a2b1ba6519adffc8618c12e9d4331840f7b02b9abda0b7e8e915bd2c2303f3" + }, + { + "id": "synth-6", + "identity": "sha256:9a57207ac802bad426435d920b77048ba9dd391797c6a462444c6e375716d36f", + "bytes": 8486166, + "payloadBytes": 8481847, + "chunks": 4, + "fetchMs": 54.40000009536743, + "admissionMs": 0.2999999523162842, + "compressedVerificationMs": 19.100000023841858, + "packageSha256": "b951265b6d86af8c93148d77e547d36e8015e2d370e5ea58c73937ad1bc9c68a" + }, + { + "id": "bass", + "identity": "sha256:ba8f39a6c7b1f22bded6ce6d97361a01ce751282b3f1ab08f931b876c6734ae1", + "bytes": 4192048, + "payloadBytes": 4186111, + "chunks": 4, + "fetchMs": 25.600000023841858, + "admissionMs": 0.3999999761581421, + "compressedVerificationMs": 9.100000023841858, + "packageSha256": "0724e73b3b3f737deedd3dfe685be7323674596cef963ec5331a1eab19700bd3" + }, + { + "id": "bv_s", + "identity": "sha256:c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f", + "bytes": 22224639, + "payloadBytes": 22223178, + "chunks": 5, + "fetchMs": 78.69999992847443, + "admissionMs": 0.20000004768371582, + "compressedVerificationMs": 50.199999928474426, + "packageSha256": "376641bd8b9d97160d26e9cff6ecce224676f0674d4d5b40e64130cd4200e354" + }, + { + "id": "guitar", + "identity": "sha256:e5c44270be4bd0862850977ef3d8a06f1b3803d75c276bb243139bae1f56db62", + "bytes": 8521302, + "payloadBytes": 8519846, + "chunks": 5, + "fetchMs": 42.200000047683716, + "admissionMs": 0.20000004768371582, + "compressedVerificationMs": 19.299999952316284, + "packageSha256": "bbed614e9d8020e592657fd6e8ce726f89eb1d5a42317bd58c04b0bd7457df97" + } + ], + "decodedPcmBytes": 249323400, + "chunkPcmSha256Checks": 35, + "canonicalPcmSha256Checks": 8, + "compressedChunkSha256Checks": 35, + "packageSha256Checks": 8 + }, + "ioAndSetup": { + "oneWorker": { + "setupWallMs": 695.8000000715256, + "wasmFetchMs": 2.799999952316284, + "compileMs": 3.3000000715255737, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "drums", + "identity": "sha256:03328fc288eda889bb9bb7813a48bf87d3e011b1698778fc456f57c8561b9db2", + "bytes": 16542989, + "payloadBytes": 16538208, + "chunks": 4, + "fetchMs": 86, + "admissionMs": 1.5, + "compressedVerificationMs": 37.40000009536743, + "packageSha256": "9e12a781f0596d78f177463570203389999bd6312f1b340506a163b10b370824" + }, + { + "id": "lead-vox", + "identity": "sha256:27c2485abef9b9791cf127b08108e9982383fdbf7736095f8411647e5b82a7ac", + "bytes": 19754378, + "payloadBytes": 19752920, + "chunks": 5, + "fetchMs": 112.90000009536743, + "admissionMs": 1.1999999284744263, + "compressedVerificationMs": 44.700000047683716, + "packageSha256": "8d9595ec06be9422d2a8bd5622790c2e78a03451d92db294ee6c391eba74dbc9" + }, + { + "id": "vocal-fx", + "identity": "sha256:361eb2581ace51a5a34c59d83c06ebe6dad73300115db995e6c0692fb4061ae3", + "bytes": 4223284, + "payloadBytes": 4217158, + "chunks": 4, + "fetchMs": 25.399999976158142, + "admissionMs": 0.6000000238418579, + "compressedVerificationMs": 9.299999952316284, + "packageSha256": "b703951ff75704a35a5c3aa0254da5d8fe10e9d4a0d54efe21732eeee9062f82" + }, + { + "id": "fx", + "identity": "sha256:9184f49ee35fa748ecf4d898eb06058d2f499b8348b80736c5c252a99fe36b98", + "bytes": 8777838, + "payloadBytes": 8766086, + "chunks": 4, + "fetchMs": 50, + "admissionMs": 1.2000000476837158, + "compressedVerificationMs": 19.699999928474426, + "packageSha256": "e7a2b1ba6519adffc8618c12e9d4331840f7b02b9abda0b7e8e915bd2c2303f3" + }, + { + "id": "synth-6", + "identity": "sha256:9a57207ac802bad426435d920b77048ba9dd391797c6a462444c6e375716d36f", + "bytes": 8486166, + "payloadBytes": 8481847, + "chunks": 4, + "fetchMs": 54.40000009536743, + "admissionMs": 0.2999999523162842, + "compressedVerificationMs": 19.100000023841858, + "packageSha256": "b951265b6d86af8c93148d77e547d36e8015e2d370e5ea58c73937ad1bc9c68a" + }, + { + "id": "bass", + "identity": "sha256:ba8f39a6c7b1f22bded6ce6d97361a01ce751282b3f1ab08f931b876c6734ae1", + "bytes": 4192048, + "payloadBytes": 4186111, + "chunks": 4, + "fetchMs": 25.600000023841858, + "admissionMs": 0.3999999761581421, + "compressedVerificationMs": 9.100000023841858, + "packageSha256": "0724e73b3b3f737deedd3dfe685be7323674596cef963ec5331a1eab19700bd3" + }, + { + "id": "bv_s", + "identity": "sha256:c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f", + "bytes": 22224639, + "payloadBytes": 22223178, + "chunks": 5, + "fetchMs": 78.69999992847443, + "admissionMs": 0.20000004768371582, + "compressedVerificationMs": 50.199999928474426, + "packageSha256": "376641bd8b9d97160d26e9cff6ecce224676f0674d4d5b40e64130cd4200e354" + }, + { + "id": "guitar", + "identity": "sha256:e5c44270be4bd0862850977ef3d8a06f1b3803d75c276bb243139bae1f56db62", + "bytes": 8521302, + "payloadBytes": 8519846, + "chunks": 5, + "fetchMs": 42.200000047683716, + "admissionMs": 0.20000004768371582, + "compressedVerificationMs": 19.299999952316284, + "packageSha256": "bbed614e9d8020e592657fd6e8ce726f89eb1d5a42317bd58c04b0bd7457df97" + } + ] + }, + "eightWorkersWallMs": 918.2999999523163, + "eightWorkers": [ + { + "setupWallMs": 213.20000004768372, + "wasmFetchMs": 2.5, + "compileMs": 1.399999976158142, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "drums", + "identity": "sha256:03328fc288eda889bb9bb7813a48bf87d3e011b1698778fc456f57c8561b9db2", + "bytes": 16542989, + "payloadBytes": 16538208, + "chunks": 4, + "fetchMs": 168.40000009536743, + "admissionMs": 1.2999999523162842, + "compressedVerificationMs": 39.60000002384186, + "packageSha256": "9e12a781f0596d78f177463570203389999bd6312f1b340506a163b10b370824" + } + ] + }, + { + "setupWallMs": 248, + "wasmFetchMs": 2.700000047683716, + "compileMs": 1.399999976158142, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "lead-vox", + "identity": "sha256:27c2485abef9b9791cf127b08108e9982383fdbf7736095f8411647e5b82a7ac", + "bytes": 19754378, + "payloadBytes": 19752920, + "chunks": 5, + "fetchMs": 198, + "admissionMs": 0.7999999523162842, + "compressedVerificationMs": 45, + "packageSha256": "8d9595ec06be9422d2a8bd5622790c2e78a03451d92db294ee6c391eba74dbc9" + } + ] + }, + { + "setupWallMs": 51.299999952316284, + "wasmFetchMs": 5.399999976158142, + "compileMs": 1.899999976158142, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "vocal-fx", + "identity": "sha256:361eb2581ace51a5a34c59d83c06ebe6dad73300115db995e6c0692fb4061ae3", + "bytes": 4223284, + "payloadBytes": 4217158, + "chunks": 4, + "fetchMs": 31.5, + "admissionMs": 1.399999976158142, + "compressedVerificationMs": 11, + "packageSha256": "b703951ff75704a35a5c3aa0254da5d8fe10e9d4a0d54efe21732eeee9062f82" + } + ] + }, + { + "setupWallMs": 148.70000004768372, + "wasmFetchMs": 7, + "compileMs": 2, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "fx", + "identity": "sha256:9184f49ee35fa748ecf4d898eb06058d2f499b8348b80736c5c252a99fe36b98", + "bytes": 8777838, + "payloadBytes": 8766086, + "chunks": 4, + "fetchMs": 108.90000009536743, + "admissionMs": 2.6999999284744263, + "compressedVerificationMs": 28.100000023841858, + "packageSha256": "e7a2b1ba6519adffc8618c12e9d4331840f7b02b9abda0b7e8e915bd2c2303f3" + } + ] + }, + { + "setupWallMs": 125.09999990463257, + "wasmFetchMs": 2.5, + "compileMs": 1.6999999284744263, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "synth-6", + "identity": "sha256:9a57207ac802bad426435d920b77048ba9dd391797c6a462444c6e375716d36f", + "bytes": 8486166, + "payloadBytes": 8481847, + "chunks": 4, + "fetchMs": 95.09999990463257, + "admissionMs": 1.3000000715255737, + "compressedVerificationMs": 24.5, + "packageSha256": "b951265b6d86af8c93148d77e547d36e8015e2d370e5ea58c73937ad1bc9c68a" + } + ] + }, + { + "setupWallMs": 92.70000004768372, + "wasmFetchMs": 13.399999976158142, + "compileMs": 1.5, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "bass", + "identity": "sha256:ba8f39a6c7b1f22bded6ce6d97361a01ce751282b3f1ab08f931b876c6734ae1", + "bytes": 4192048, + "payloadBytes": 4186111, + "chunks": 4, + "fetchMs": 62.60000002384186, + "admissionMs": 3.100000023841858, + "compressedVerificationMs": 12, + "packageSha256": "0724e73b3b3f737deedd3dfe685be7323674596cef963ec5331a1eab19700bd3" + } + ] + }, + { + "setupWallMs": 199.70000004768372, + "wasmFetchMs": 3.4000000953674316, + "compileMs": 1.5, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "bv_s", + "identity": "sha256:c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f", + "bytes": 22224639, + "payloadBytes": 22223178, + "chunks": 5, + "fetchMs": 135.20000004768372, + "admissionMs": 1, + "compressedVerificationMs": 58.59999990463257, + "packageSha256": "376641bd8b9d97160d26e9cff6ecce224676f0674d4d5b40e64130cd4200e354" + } + ] + }, + { + "setupWallMs": 134.60000002384186, + "wasmFetchMs": 2.600000023841858, + "compileMs": 1.7000000476837158, + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "stems": [ + { + "id": "guitar", + "identity": "sha256:e5c44270be4bd0862850977ef3d8a06f1b3803d75c276bb243139bae1f56db62", + "bytes": 8521302, + "payloadBytes": 8519846, + "chunks": 5, + "fetchMs": 99.5, + "admissionMs": 0.8999999761581421, + "compressedVerificationMs": 29.899999976158142, + "packageSha256": "bbed614e9d8020e592657fd6e8ce726f89eb1d5a42317bd58c04b0bd7457df97" + } + ] + } + ] + }, + "measurements": { + "oneWorkerDecodeMs": { + "values": [ + 2155.399999976158, + 2175.5, + 2187.5, + 2167.5, + 2199.7000000476837 + ], + "min": 2155.399999976158, + "median": 2175.5, + "max": 2199.7000000476837, + "mean": 2177.1200000047684, + "coefficientOfVariation": 0.007069770184553304 + }, + "browserMainThreadIndexedPcmSha256Ms": { + "values": [ + 2184.2999999523163, + 2201.600000023842, + 2193.2000000476837 + ], + "min": 2184.2999999523163, + "median": 2193.2000000476837, + "max": 2201.600000023842, + "mean": 2193.0333333412805, + "coefficientOfVariation": 0.0032209627349599084 + }, + "eightWorkerDecodeWallMs": { + "values": [ + 371.3000000715256, + 404.2999999523163, + 379.2999999523163, + 382.7000000476837, + 394.60000002384186 + ], + "min": 371.3000000715256, + "median": 382.7000000476837, + "max": 404.2999999523163, + "mean": 386.44000000953673, + "coefficientOfVariation": 0.030172282853619007 + }, + "eightWorkerPerStem": [ + [ + { + "id": "drums", + "elapsedMs": 312.60000002384186, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 371.10000002384186, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 304.1999999284744, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 270.2999999523163, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 245.39999997615814, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 226.39999997615814, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 366.5, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 355.60000002384186, + "pcmBytes": 37247538 + } + ], + [ + { + "id": "drums", + "elapsedMs": 309.8000000715256, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 404, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 349.5, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 284.60000002384186, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 264.39999997615814, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 231.70000004768372, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 359.8000000715256, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 365, + "pcmBytes": 37247538 + } + ], + [ + { + "id": "drums", + "elapsedMs": 315.1999999284744, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 378.90000009536743, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 303.89999997615814, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 285.2999999523163, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 241, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 219.19999992847443, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 365.39999997615814, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 363.89999997615814, + "pcmBytes": 37247538 + } + ], + [ + { + "id": "drums", + "elapsedMs": 313.8000000715256, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 382.5, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 310.89999997615814, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 257.39999997615814, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 236.5, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 215.89999997615814, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 378.2000000476837, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 357.7000000476837, + "pcmBytes": 37247538 + } + ], + [ + { + "id": "drums", + "elapsedMs": 327.5, + "pcmBytes": 30791214 + }, + { + "id": "lead-vox", + "elapsedMs": 394.5, + "pcmBytes": 37247538 + }, + { + "id": "vocal-fx", + "elapsedMs": 332.2999999523163, + "pcmBytes": 30161286 + }, + { + "id": "fx", + "elapsedMs": 303.6999999284744, + "pcmBytes": 26982702 + }, + { + "id": "synth-6", + "elapsedMs": 291, + "pcmBytes": 24399084 + }, + { + "id": "bass", + "elapsedMs": 237.60000002384186, + "pcmBytes": 25258248 + }, + { + "id": "bv_s", + "elapsedMs": 381.7999999523163, + "pcmBytes": 37235790 + }, + { + "id": "guitar", + "elapsedMs": 375.1999999284744, + "pcmBytes": 37247538 + } + ] + ] + }, + "browserVersion": "153.0.8010.12", + "runner": { + "node": "v22.23.2", + "chrome": "/home/bl/.cache/ms-playwright/chromium-1243/chrome-linux64/chrome", + "codecRoot": "/tmp/miso-simd-study/candidates/codec", + "adapterRoot": "/tmp/miso-simd-study/candidates/adapter", + "decodeRounds": 5, + "shaRounds": 3 + } +} diff --git a/.github/RELEASE_EVIDENCE/006/representative-bun-official-adjacent-baseline.json b/.github/RELEASE_EVIDENCE/006/representative-bun-official-adjacent-baseline.json new file mode 100644 index 0000000..0bc82db --- /dev/null +++ b/.github/RELEASE_EVIDENCE/006/representative-bun-official-adjacent-baseline.json @@ -0,0 +1,52 @@ +{ + "runtime": { + "bun": "1.4.2", + "processVersionCompatibility": "v26.3.0", + "platform": "linux", + "arch": "x64" + }, + "source": { + "codecCommit": "12f54c988a2df319064e6ca3885268d976319cc1", + "adapterCommit": "9b8172fd52746907c113442995dc7538cfe5ad13", + "wasmSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "shaVariant": "js" + }, + "selection": { + "path": "/data/sparse-pcm-launch/final-per-stem/r1/c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f.mspcm", + "identity": "sha256:c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f", + "chunkIndex": 3, + "compressedBytes": 5124876, + "pcmBytes": 7938000, + "frames": 1323000, + "maximumPcmBlockBytes": 27648, + "expectedCompressedSha256": "ab35d73ddbfb7cbeb9384a34c585edc0141e88bb812d047caad4969a4abe884b", + "compressedSha256": "ab35d73ddbfb7cbeb9384a34c585edc0141e88bb812d047caad4969a4abe884b", + "expectedPcmSha256": "649b462aa016a111211498488ffca8da24e16f1a9b594f58bf38fb03933bb4f5", + "nodePcmSha256": "649b462aa016a111211498488ffca8da24e16f1a9b594f58bf38fb03933bb4f5", + "adapterPcmSha256": "649b462aa016a111211498488ffca8da24e16f1a9b594f58bf38fb03933bb4f5", + "md5Checked": true, + "md5Verified": true + }, + "compileMs": 4.675515999999988, + "shaColdInit16KiBMs": 6.720191, + "shaWarm16KiBMs": 2.259253000000001, + "rounds": 7, + "decodeMs": [ + 62.73593500000004, + 63.47894099999996, + 61.545367000000056, + 58.001526999999896, + 57.11715200000003, + 60.116514999999936, + 58.16211300000009 + ], + "shaMs": [ + 385.286429, + 390.2649530000001, + 389.3823309999998, + 387.09250900000006, + 390.3272310000002, + 386.59131400000024, + 391.51541499999985 + ] +} diff --git a/.github/RELEASE_EVIDENCE/006/representative-bun-official-candidate.json b/.github/RELEASE_EVIDENCE/006/representative-bun-official-candidate.json new file mode 100644 index 0000000..825c0fa --- /dev/null +++ b/.github/RELEASE_EVIDENCE/006/representative-bun-official-candidate.json @@ -0,0 +1,52 @@ +{ + "runtime": { + "bun": "1.4.2", + "processVersionCompatibility": "v26.3.0", + "platform": "linux", + "arch": "x64" + }, + "source": { + "codecCommit": "8c2823b041594a38284b01b5a39d77a6b515716e", + "adapterCommit": "088a14f57a945e6feb93145f3338943276a335dc", + "wasmSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", + "shaVariant": "simd" + }, + "selection": { + "path": "/data/sparse-pcm-launch/final-per-stem/r1/c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f.mspcm", + "identity": "sha256:c48e9a6b5621bb213de9d6c0c016c557a4516ba0e02de06deb1141fe7946332f", + "chunkIndex": 3, + "compressedBytes": 5124876, + "pcmBytes": 7938000, + "frames": 1323000, + "maximumPcmBlockBytes": 27648, + "expectedCompressedSha256": "ab35d73ddbfb7cbeb9384a34c585edc0141e88bb812d047caad4969a4abe884b", + "compressedSha256": "ab35d73ddbfb7cbeb9384a34c585edc0141e88bb812d047caad4969a4abe884b", + "expectedPcmSha256": "649b462aa016a111211498488ffca8da24e16f1a9b594f58bf38fb03933bb4f5", + "nodePcmSha256": "649b462aa016a111211498488ffca8da24e16f1a9b594f58bf38fb03933bb4f5", + "adapterPcmSha256": "649b462aa016a111211498488ffca8da24e16f1a9b594f58bf38fb03933bb4f5", + "md5Checked": true, + "md5Verified": true + }, + "compileMs": 4.332292999999993, + "shaColdInit16KiBMs": 1.0941039999999589, + "shaWarm16KiBMs": 0.28046399999999494, + "rounds": 7, + "decodeMs": [ + 62.19507500000003, + 54.903835999999956, + 55.460425999999984, + 52.37742299999991, + 55.628777000000014, + 51.869777, + 56.829834000000005 + ], + "shaMs": [ + 33.836445000000026, + 33.51659600000005, + 33.29868099999999, + 33.199231000000054, + 33.24026900000001, + 33.18149799999992, + 33.24723300000005 + ] +} diff --git a/.github/RELEASE_EVIDENCE/006/verification.md b/.github/RELEASE_EVIDENCE/006/verification.md new file mode 100644 index 0000000..9f59759 --- /dev/null +++ b/.github/RELEASE_EVIDENCE/006/verification.md @@ -0,0 +1,45 @@ +# Independent verification — 2026-09-13 + +Updated verdict: implementation and targeted CI repair pass independent review; no remaining implementation blocker found. The original CI finding below is resolved by the addendum. No production/spec edits, pushes, publication or performance campaign by this reviewer. + +Reviewed frozen identities: + +- Codec HEAD `8c2823b041594a38284b01b5a39d77a6b515716e`, tree `0028688d80b1baf794508340bc477da590be4b38`; implementation `6265973b730230009b6d07705f1641a948120105`, base `970119ce723666267aa28856f315d7b702945a93`. +- Adapter HEAD `41fb6cd6f1c87d69e68717be18ab64ba18a5e1a1`, tree `296474913d9bded5fcc59780cd66388593a8dc20`; implementation `faf88955fd5c35282c0123554a475bed853014e6`, base `9b8172fd52746907c113442995dc7538cfe5ad13`. + +## Required repair + +Adapter package.json makes `build:sha256:wasm` mandatory in `npm run check`. Its npm-publish workflow runs that check after installing only Node/npm. It does not install Emscripten or set CODEC_EMSCRIPTEN_ROOT; the SHA build script defaults to `/data/codec-tooling/emsdk/upstream/emscripten`. Both hosted publish and verify dispatches therefore fail before qualification. Independently reproduced missing-toolchain `spawn .../emcc ENOENT` with a nonexistent toolchain override. Provision the pinned toolchain in that workflow and retain reproducibility verification. This is the sole implementation blocker found. + +## Correctness and bounds + +Decoder changes are compiler flags, feature/provenance metadata, generated asset/hash and documentation. Decoder source/control flow and encoder source remain unchanged. Disassembly confirms 222 SIMD instruction lines, only codec.read import, unchanged exports and fixed 32-page (2 MiB) memory. Asset: 75,923 bytes, SHA-256 `70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd`. Existing input/output caps, stacks and ABI remain intact. + +SHA C preserves the existing constants, unsigned 32-bit schedule/round arithmetic and ordered chaining. SIMD reverses bytes within four independent big-endian words. Selected module: 957 bytes, SHA-256 `4435c2078c2783a77c06532e480d195ce314f500b849688d89d494432789fc28`. It contains 12 SIMD instruction lines (the spec's 13 appears to include the v128 local declaration), no imports, only memory/compression exports, fixed 64 KiB memory, 4 KiB stack and 256-byte schedule. State at 0 and input at 16 KiB do not overlap emitted stack/schedule/constants. Input batches stay within 16 KiB/256 blocks. Independent memory growth attempt throws RangeError. + +Each hasher retains JS-owned state, tail, length and finished flag. Synchronous bridge copies state in/out and retains no caller view; no callbacks/await while scratch is borrowed. Initialization selects once and capability failure uses JS; runtime compression failures propagate. Padding/finalization are unchanged. The 131,072-byte accounting addition retains 8 MiB reservations. Resolver/store/worker readiness, integrity, cancellation and backpressure pipelines have no production edits. Existing NOTICE identifies the authorized SHA source; this C port introduces no separately borrowed algorithm/license dependency. + +## Independently executed checks + +- Adapter `npm run check`: passed SHA reproducibility, formatting, types/source policy, decoder audit, all 329 tests, build and package policy (208 files, 352,214 bytes). Log: verification-adapter-check.log. +- Codec `bun run check`: 40 passed, 5 expected native-only skips. Log: verification-codec-check.log. +- Codec `CODEC_NATIVE_FLAC=/data/codec-tooling/flac-scalar/src/flac/flac bun run test:integration`: 5 passed. Log: verification-codec-native.log. +- Codec `bun run build:wasm:verify`: encoder and decoder reproduced exactly. Log: verification-codec-rebuild.log. +- Independent Node crypto checks at lengths 0/3/55/56/63/64/65/16320/16383/16384/16385/16448/32768/49153/1000001, with offset DataViews and 113-byte streaming partitions. Fresh-module scenarios: WebAssembly absent; Module throws CompileError; normal accelerated backend. All passed. Instrumented normal path created one module/instance and performed 18,297 compression calls; capability failure attempted compilation once. An injected compression trap propagated without JS retry. Existing tests cover independent interleaved states, input mutation and finalization. Initial review instrumentation needed correction to preserve nonenumerable WebAssembly properties; these are the corrected results with explicit backend call counts. +- Packed rebuilt adapter with `npm pack --ignore-scripts`. Archive `/tmp/miso-simd-study/misofm-engine-web-adapter-0.4.0.tgz`, SHA-256 `df522f6e9d408f255d03e35c764f2da61680b911c693cfb180ab9b2284f851f1`. Extracted main dist/stems/sha256-wasm.js and bundled dist/internal/engine-web-flac-worker.js each contain exactly one payload with the selected SHA hash. No external SHA fetch is needed. This archive retains declared published codec 0.1.0; joint codec dependency/version qualification remains root-owned. + +Implementation-reported gates, not redundantly rerun: codec packed Bun/Node and Chromium/Firefox/WebKit consumers with both Effect peers; adapter ordinary/indexed sparse packed browser profiles and Chromium OPFS. Root independently reports actual macOS Chromium/WebKit OPFS passing frozen adapter HEAD: https://github.com/misofm/engine-web-adapter/actions/runs/34750387870 . This resolves the Linux WebKit capability limitation for that revision. + +## Measurement and release limits + +Reviewed baseline/scalar/SIMD/adjacent/final evidence with matching totals: 35 chunks and 547,303,704 indexed PCM hash bytes including canonical zero gaps. Final record identifies frozen implementation commits and selected decoder hash. Preliminary evidence uses precommit HEADs with working changes; final postcommit evidence is the provenance anchor. Approximately 80% hash reduction is predominantly JS-to-Wasm; SIMD-versus-scalar adds approximately 1.5%. Decoder improvement is modest. These are isolated compute results, not app-open/network/OPFS speedups. Official post-verification comparison remains pending and determines which candidates ship. + +After CI repair, perform targeted verification and record its revision. Root owns official measurements, version/dependency changes, publication and registry/app qualification. Tracked frozen source stayed unchanged; transient adapter SHA build cache created by verification was removed afterward. + +## Targeted CI repair recheck — 2026-09-13 + +Reviewed adapter `088a14f57a945e6feb93145f3338943276a335dc`, tree `d453f0937c99954bd7a8917cec06ce2682f77ee5`; working tree clean. Diff from frozen `41fb6cd` contains only npm-publish workflow provisioning and issue-spec evidence. Runtime source and generated bytes are unchanged. + +The workflow now clones Emscripten SDK tag 6.0.9, asserts SDK commit `5eb0bde7585670252e8ba05e9d361627bffd08b5`, installs/activates 6.0.9 and writes CODEC_EMSCRIPTEN_ROOT to GITHUB_ENV before the subsequent npm run check step. Its path resolves to the SDK root expected by the SHA build script, including sibling wasm-ld/wasm-opt and SDK release mapping. Provisioning is unconditional for both publish and verify modes. It matches the codec's existing pinned provisioning recipe. The build script continues verifying compiler commit, SDK commit/release mapping and Binaryen version; no gate was weakened. + +Original CI blocker is resolved by inspection. Luna reports npm run check passing again (329 tests); full suites were not repeated because this repair changes no runtime/build-script bytes. Hosted execution of the repaired release workflow is still a release gate, not claimed as performed here. Independent verification is complete; hand off to the official after measurements and root-owned release qualification. diff --git a/README.md b/README.md index eca8c91..0129fce 100644 --- a/README.md +++ b/README.md @@ -144,6 +144,11 @@ round trips, cancellation, and typed truncation failures on Bun 1.4.2, Node 22.23.2, and Chromium, Firefox, and WebKit workers. Consumer examples are compiled from an isolated installed tarball, without workspace aliases. +The decoder asset uses standard WebAssembly SIMD (`simd128`). The advertised +Bun, Node, Chromium, Firefox, and WebKit worker matrix is qualified with that +feature enabled; environments that cannot compile standard Wasm SIMD should +retain a scalar decoder asset supplied by the caller. + Rebuilding Wasm requires the pinned Emscripten 6.0.9 toolchain. Set `CODEC_EMSCRIPTEN_ROOT` to its `upstream/emscripten` directory, then run: diff --git a/package.json b/package.json index 6936f3a..b159eb2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@misofm/codec", - "version": "0.1.0", + "version": "0.1.1", "description": "Effect-based audio codec primitives backed by pinned libFLAC WebAssembly", "license": "Apache-2.0", "repository": { diff --git a/scripts/build-decoder-wasm.ts b/scripts/build-decoder-wasm.ts index 1fef7e8..3370c41 100644 --- a/scripts/build-decoder-wasm.ts +++ b/scripts/build-decoder-wasm.ts @@ -39,6 +39,7 @@ const WASM_OPT_VERSION = "wasm-opt version 132 (version_132-49-gd03c25ea4)"; const MEMORY_BYTES = 2 * 1024 * 1024; const STACK_BYTES = 64 * 1024; const ASYNCIFY_STACK_BYTES = 64 * 1024; +const SIMD_COMPILER_FLAG = "-msimd128"; const sha256 = (bytes: Uint8Array): string => createHash("sha256").update(bytes).digest("hex"); @@ -113,7 +114,7 @@ const main = async (): Promise => { const reproducibleEnv = { SOURCE_DATE_EPOCH: "1735689600", ZERO_AR_DATE: "1", - CFLAGS: "-O3 -DNDEBUG", + CFLAGS: `-O3 -DNDEBUG ${SIMD_COMPILER_FLAG}`, }; await run( emconfigure, @@ -139,6 +140,7 @@ const main = async (): Promise => { ); const commonCompile = [ "-O3", + SIMD_COMPILER_FLAG, "-ffreestanding", "-fno-builtin", "-DFLAC__NO_DLL", @@ -264,6 +266,7 @@ const main = async (): Promise => { "--asyncify", "--pass-arg=asyncify-imports@codec.read", "--enable-bulk-memory", + "--enable-simd", "-O3", "--strip-debug", "-o", @@ -342,6 +345,7 @@ const main = async (): Promise => { libflacUnits: units, compilerFlags: [ "-O3", + SIMD_COMPILER_FLAG, "-ffreestanding", "-fno-builtin", "-DFLAC__NO_DLL", @@ -353,6 +357,7 @@ const main = async (): Promise => { stripAll: true, }, asyncifyImports: ["codec.read"], + wasmFeatures: ["bulk-memory", "simd128"], }, } as const; const serializedManifest = `${JSON.stringify(manifest, null, 2)}\n`; diff --git a/src/decoder-wasm.ts b/src/decoder-wasm.ts index 815fdfd..7aba53f 100644 --- a/src/decoder-wasm.ts +++ b/src/decoder-wasm.ts @@ -11,7 +11,7 @@ export const FLAC_DECODER_WASM_URL = new URL( // Updated only by the explicit reproducible Wasm build command. export const FLAC_DECODER_WASM_SHA256 = - "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925"; + "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd"; export const FLAC_DECODER_LIMITS = { maxInputChunkBytes: 256 * 1024, diff --git a/wasm/flac-decoder.manifest.json b/wasm/flac-decoder.manifest.json index ecca467..8139de3 100644 --- a/wasm/flac-decoder.manifest.json +++ b/wasm/flac-decoder.manifest.json @@ -1,6 +1,6 @@ { "asset": "flac-decoder.wasm", - "assetSha256": "5e282f9874ecb3f49b8ee8437efc318ec14ef5cff5b7580da9d875f94e5c5925", + "assetSha256": "70caf38185675dff89498e89f98171d49ec6f143a56c6895088d93c35e2018cd", "libflac": { "version": "1.5.0", "archive": "vendor/libflac-1.5.0/flac-1.5.0.tar.xz", @@ -88,6 +88,7 @@ ], "compilerFlags": [ "-O3", + "-msimd128", "-ffreestanding", "-fno-builtin", "-DFLAC__NO_DLL", @@ -102,6 +103,10 @@ }, "asyncifyImports": [ "codec.read" + ], + "wasmFeatures": [ + "bulk-memory", + "simd128" ] } } diff --git a/wasm/flac-decoder.wasm b/wasm/flac-decoder.wasm index 62abfe6..9327b84 100644 Binary files a/wasm/flac-decoder.wasm and b/wasm/flac-decoder.wasm differ