{
  "schemaVersion": 1,
  "wave": 3,
  "generatedAt": "2026-07-15T17:38:31.263Z",
  "result": "PASS",
  "benchmarkSourceSha256": "df5d4c6b5200431db3f7447ba2159c7111ee116924d35df53bf6d44d368a0642",
  "license": {
    "id": "CC0-1.0",
    "name": "CC0 1.0 Universal",
    "provenance": "Synthetic, deterministic signals generated from mathematical functions by this benchmark; no recording or copyrighted composition is used."
  },
  "environment": {
    "runner": "Playwright driving public tool pages",
    "browser": "Chromium 149.0.7827.55",
    "server": "local Wrangler Pages"
  },
  "methodology": [
    "Generate deterministic PCM16 WAV fixtures from mathematical sine signals and record SHA-256 provenance.",
    "Load each public tool page through local Wrangler Pages and perform every action through the real file input, controls and buttons.",
    "Download the real WAV, parse RIFF chunks and samples independently in Node, then verify format, duration and authored frequency content.",
    "Capture every request from immediately before file selection through export completion; separately count payload, cross-origin and non-GET traffic.",
    "Keep thresholds fixed before the first run and retain any observed mismatch as FAIL rather than weakening or reclassifying it."
  ],
  "fixtures": [
    {
      "id": "wave3-converter-stereo-48k",
      "file": "assets/benchmark-fixtures/wave3-converter-stereo-48k.wav",
      "bytes": 384044,
      "sha256": "ad606c1d132f38ac61bc8844134603a72da48864ece7c616339ab3ed5646868b",
      "license": "CC0-1.0",
      "synthesis": {
        "kind": "stereo-dual-tone",
        "sampleRate": 48000,
        "channels": 2,
        "durationSeconds": 2,
        "left": {
          "frequencyHz": 440,
          "peakAmplitude": 0.5
        },
        "right": {
          "frequencyHz": 880,
          "peakAmplitude": 0.25
        },
        "formula": "channelAmplitude * sin(2*pi*frequency*t), with 10 ms edge fades"
      }
    },
    {
      "id": "wave3-trimmer-four-tone-48k",
      "file": "assets/benchmark-fixtures/wave3-trimmer-four-tone-48k.wav",
      "bytes": 384044,
      "sha256": "691f42eb97bde26ffed7ea6379ad0b24e127177622b3e5f266c7e73bcc6b2705",
      "license": "CC0-1.0",
      "synthesis": {
        "kind": "four-segment-mono-tone-sequence",
        "sampleRate": 48000,
        "channels": 1,
        "durationSeconds": 4,
        "segmentDurationSeconds": 1,
        "segmentFrequenciesHz": [
          220,
          330,
          440,
          660
        ],
        "peakAmplitude": 0.45,
        "formula": "0.45 * sin(2*pi*segmentFrequency*t), with 10 ms per-segment edge fades"
      }
    },
    {
      "id": "wave3-joiner-a-330hz-48k",
      "file": "assets/benchmark-fixtures/wave3-joiner-a-330hz-48k.wav",
      "bytes": 96044,
      "sha256": "c3f8f928da9f185b8c4c1a1f4a3e40b38490f8de4698d91174a2cd358328cff7",
      "license": "CC0-1.0",
      "synthesis": {
        "kind": "mono-tone",
        "sampleRate": 48000,
        "channels": 1,
        "durationSeconds": 1,
        "frequencyHz": 330,
        "peakAmplitude": 0.45,
        "formula": "0.45 * sin(2*pi*330*t), with 10 ms edge fades"
      }
    },
    {
      "id": "wave3-joiner-b-660hz-24k",
      "file": "assets/benchmark-fixtures/wave3-joiner-b-660hz-24k.wav",
      "bytes": 38444,
      "sha256": "3040c3f5d26ba516dbc0e9eaf239e789c4c2b3c0a4116d90c2428db8043a14cd",
      "license": "CC0-1.0",
      "synthesis": {
        "kind": "mono-tone",
        "sampleRate": 24000,
        "channels": 1,
        "durationSeconds": 0.8,
        "frequencyHz": 660,
        "peakAmplitude": 0.45,
        "formula": "0.45 * sin(2*pi*660*t), with 10 ms edge fades"
      }
    }
  ],
  "tools": [
    {
      "slug": "converter",
      "result": "PASS",
      "summary": "1/1 real UI conversion preserved duration and both authored tones while producing the selected mono 22.05 kHz float32 WAV.",
      "networkDataFlow": {
        "requestsDuringWorkflow": 0,
        "payloadRequests": 0,
        "crossOriginRequests": 0,
        "nonGetRequests": 0,
        "badResponses": 0,
        "failedRequests": 0
      },
      "cases": [
        {
          "id": "converter-stereo-to-mono-float32-resample",
          "result": "PASS",
          "inputFixtures": [
            "assets/benchmark-fixtures/wave3-converter-stereo-48k.wav"
          ],
          "expected": {
            "format": "IEEE-float32 WAV",
            "bitsPerSample": 32,
            "channels": 1,
            "sampleRate": 22050,
            "durationSeconds": 2,
            "toneAmplitudes": {
              "440": 0.25,
              "880": 0.125
            }
          },
          "observed": {
            "downloadedWavBytes": 176444,
            "audioFormat": 3,
            "bitsPerSample": 32,
            "channels": 1,
            "sampleRate": 22050,
            "durationSeconds": 2,
            "toneAmplitudes": {
              "440": 0.249931,
              "880": 0.124862
            },
            "statusText": "✅ Done — 0.17 MB WAV saved to your downloads."
          },
          "tolerance": {
            "durationSeconds": 0.002,
            "toneAmplitude": 0.015,
            "rationale": "Fixed before execution to allow browser OfflineAudioContext resampling while remaining tight enough to detect missing mix channels or wrong gain."
          },
          "assertions": [
            {
              "name": "real UI conversion and WAV download completed",
              "pass": true,
              "evidence": "176444 byte WAV; ✅ Done — 0.17 MB WAV saved to your downloads."
            },
            {
              "name": "download is mono 22.05 kHz IEEE-float32 WAV",
              "pass": true,
              "evidence": "format 3; 32-bit; 1 channel(s); 22050 Hz"
            },
            {
              "name": "duration preserved",
              "pass": true,
              "evidence": "expected 2 s; observed 2 s"
            },
            {
              "name": "stereo tones survived mono mix and resample",
              "pass": true,
              "evidence": "expected amplitudes 440 Hz≈0.25 and 880 Hz≈0.125; observed 0.24993 and 0.12486"
            },
            {
              "name": "no workflow network request",
              "pass": true,
              "evidence": "0 request(s) after file selection"
            },
            {
              "name": "no payload or cross-origin request",
              "pass": true,
              "evidence": "0 payload request(s), 0 cross-origin request(s)"
            },
            {
              "name": "no console or page error",
              "pass": true,
              "evidence": "0 console error(s), 0 page error(s)"
            }
          ],
          "networkDataFlow": {
            "requestsDuringWorkflow": 0,
            "payloadRequests": 0,
            "crossOriginRequests": 0,
            "nonGetRequests": 0,
            "badResponses": 0,
            "failedRequests": 0,
            "requests": []
          },
          "limitations": [
            "This case covers WAV-to-WAV conversion, stereo-to-mono mixing and one output sample rate. MP3 encoding and every browser-decodable source codec are outside this wave."
          ]
        }
      ]
    },
    {
      "slug": "trimmer",
      "result": "PASS",
      "summary": "1/1 real UI trim exported exactly the selected middle two seconds and excluded the authored outer tone segments.",
      "networkDataFlow": {
        "requestsDuringWorkflow": 0,
        "payloadRequests": 0,
        "crossOriginRequests": 0,
        "nonGetRequests": 0,
        "badResponses": 0,
        "failedRequests": 0
      },
      "cases": [
        {
          "id": "trimmer-keep-middle-two-segments",
          "result": "PASS",
          "inputFixtures": [
            "assets/benchmark-fixtures/wave3-trimmer-four-tone-48k.wav"
          ],
          "expected": {
            "selectionStartSeconds": 1,
            "selectionEndSeconds": 3,
            "durationSeconds": 2,
            "firstSegmentFrequencyHz": 330,
            "secondSegmentFrequencyHz": 440,
            "excludedFrequenciesHz": [
              220,
              660
            ]
          },
          "observed": {
            "selectionText": "Start 0:01.00 · End 0:03.00 · Selection 2.00s of 0:04.00",
            "statusText": "✅ Result is 2.00s long — play it or download below.",
            "downloadedWavBytes": 192044,
            "audioFormat": 1,
            "bitsPerSample": 16,
            "channels": 1,
            "sampleRate": 48000,
            "durationSeconds": 2,
            "toneAmplitudes": {
              "first330": 0.449983,
              "first220Leakage": 0,
              "second440": 0.449984,
              "second660Leakage": 0
            }
          },
          "tolerance": {
            "durationSeconds": 0.003,
            "selectedToneMinimumAmplitude": 0.43,
            "excludedToneMaximumAmplitude": 0.01,
            "rationale": "Fixed before execution from the 48 kHz fixture and 1/4-position pointer selection; tone windows stay 200 ms away from cut boundaries."
          },
          "assertions": [
            {
              "name": "real UI handle selection, cut and WAV download completed",
              "pass": true,
              "evidence": "192044 byte WAV; ✅ Result is 2.00s long — play it or download below."
            },
            {
              "name": "visible handles selected 1.00–3.00 seconds",
              "pass": true,
              "evidence": "Start 0:01.00 · End 0:03.00 · Selection 2.00s of 0:04.00"
            },
            {
              "name": "download is mono 48 kHz PCM16 WAV",
              "pass": true,
              "evidence": "format 1; 16-bit; 1 channel(s); 48000 Hz"
            },
            {
              "name": "selected duration is two seconds",
              "pass": true,
              "evidence": "expected 2 s; observed 2 s"
            },
            {
              "name": "download contains only the selected middle tone segments",
              "pass": true,
              "evidence": "330 Hz first=0.44998, 220 Hz leakage=0; 440 Hz second=0.44998, 660 Hz leakage=0"
            },
            {
              "name": "no workflow network request",
              "pass": true,
              "evidence": "0 request(s) after file selection"
            },
            {
              "name": "no payload or cross-origin request",
              "pass": true,
              "evidence": "0 payload request(s), 0 cross-origin request(s)"
            },
            {
              "name": "no console or page error",
              "pass": true,
              "evidence": "0 console error(s), 0 page error(s)"
            }
          ],
          "networkDataFlow": {
            "requestsDuringWorkflow": 0,
            "payloadRequests": 0,
            "crossOriginRequests": 0,
            "nonGetRequests": 0,
            "badResponses": 0,
            "failedRequests": 0,
            "requests": []
          },
          "limitations": [
            "This case covers keep-selection mode with zero fades and pointer-position handles. Remove-selection mode, fades and touch-specific gestures are outside this wave."
          ]
        }
      ]
    },
    {
      "slug": "joiner",
      "result": "PASS",
      "summary": "1/1 real UI join respected the visible reordered sequence and exported the expected 100 ms-crossfaded duration at Chromium's decoded AudioContext rate.",
      "networkDataFlow": {
        "requestsDuringWorkflow": 0,
        "payloadRequests": 0,
        "crossOriginRequests": 0,
        "nonGetRequests": 0,
        "badResponses": 0,
        "failedRequests": 0
      },
      "cases": [
        {
          "id": "joiner-reorder-resample-crossfade",
          "result": "PASS",
          "inputFixtures": [
            "assets/benchmark-fixtures/wave3-joiner-a-330hz-48k.wav",
            "assets/benchmark-fixtures/wave3-joiner-b-660hz-24k.wav"
          ],
          "expected": {
            "order": [
              "wave3-joiner-b-660hz-24k",
              "wave3-joiner-a-330hz-48k"
            ],
            "crossfadeSeconds": 0.1,
            "durationSeconds": 1.7,
            "decodedAudioContextSampleRate": 48000,
            "firstFrequencyHz": 660,
            "lastFrequencyHz": 330
          },
          "observed": {
            "queueText": "Track order\n1\nwave3-joiner-b-660hz-24k.wav\n0:00\n▲\n▼\n✕\n2\nwave3-joiner-a-330hz-48k.wav\n0:01\n▲\n▼\n✕\n2 tracks · 0:01 total (before crossfades)",
            "statusText": "✅ Merged into one 0:01 track at 48000 Hz.",
            "downloadedWavBytes": 163244,
            "audioFormat": 1,
            "bitsPerSample": 16,
            "channels": 1,
            "sampleRate": 48000,
            "durationSeconds": 1.7,
            "toneAmplitudes": {
              "early660": 0.449968,
              "early330": 0,
              "late330": 0.449983,
              "late660": 0.000002
            }
          },
          "tolerance": {
            "durationSeconds": 0.004,
            "selectedToneMinimumAmplitude": 0.43,
            "otherToneMaximumAmplitude": 0.01,
            "rationale": "Fixed before final runs from the explicit 100 ms crossfade and analysis windows outside the overlap; Chromium reports a 48 kHz decoded AudioContext rate."
          },
          "assertions": [
            {
              "name": "real UI multi-file load, reorder, crossfade, merge and WAV download completed",
              "pass": true,
              "evidence": "163244 byte WAV; ✅ Merged into one 0:01 track at 48000 Hz."
            },
            {
              "name": "visible queue reordered 660 Hz fixture before 330 Hz fixture",
              "pass": true,
              "evidence": "Track order\n1\nwave3-joiner-b-660hz-24k.wav\n0:00\n▲\n▼\n✕\n2\nwave3-joiner-a-330hz-48k.wav\n0:01\n▲\n▼\n✕\n2 tracks · 0:01 total (before crossfades)"
            },
            {
              "name": "download follows the first decoded track AudioContext rate",
              "pass": true,
              "evidence": "format 1; 16-bit; 1 channel(s); 48000 Hz"
            },
            {
              "name": "duration includes one 100 ms crossfade",
              "pass": true,
              "evidence": "expected 1.7 s; observed 1.7 s"
            },
            {
              "name": "downloaded signal follows the visible reordered track sequence",
              "pass": true,
              "evidence": "early 660=0.44997, early 330=0; late 330=0.44998, late 660=0"
            },
            {
              "name": "no workflow network request",
              "pass": true,
              "evidence": "0 request(s) after file selection"
            },
            {
              "name": "no payload or cross-origin request",
              "pass": true,
              "evidence": "0 payload request(s), 0 cross-origin request(s)"
            },
            {
              "name": "no console or page error",
              "pass": true,
              "evidence": "0 console error(s), 0 page error(s)"
            }
          ],
          "networkDataFlow": {
            "requestsDuringWorkflow": 0,
            "payloadRequests": 0,
            "crossOriginRequests": 0,
            "nonGetRequests": 0,
            "badResponses": 0,
            "failedRequests": 0,
            "requests": []
          },
          "limitations": [
            "This case covers two mono PCM inputs, one reorder action and one crossfade. Chromium decodes both source rates into its 48 kHz AudioContext before the joiner sees them, so this does not independently exercise the joiner's mixed-decoded-rate branch. Larger queues, stereo channel expansion and peak-normalization behavior are outside this wave."
          ]
        }
      ]
    }
  ],
  "limitations": [
    "Synthetic single-tone fixtures isolate deterministic editing behavior; they do not establish perceptual quality for mastered music, speech or noisy field recordings.",
    "Converter coverage is WAV-to-float32-WAV only; MP3 and every browser-specific decode path remain outside this wave.",
    "Trimmer coverage is keep-selection with zero fades; remove mode, fades and touch gestures remain outside this wave.",
    "Joiner coverage uses two mono inputs and one crossfade. Chromium decodes both input sample rates to its AudioContext rate before the tool receives them; larger queues, stereo expansion, mixed decoded-rate handling and clipping prevention remain outside this wave.",
    "The browser may resample decoded WAV input to its AudioContext rate; this benchmark intentionally measures the public browser workflow and independently parses the exported file."
  ],
  "fatalError": null
}
