Короткий локальный AAC/M4A с допустимым `ftyp`, отличным от `mp4`, завершается `EncodingError` вместо декодирования. Разбор Safari TP 251: самостоятельный диагностический артефакт, прямые источники, опровержимый контроль, обратимый canary, stop-line и privacy-safe handoff.
Ответ на запрос: `decodeAudioData()` отклоняет валидный M4A в Safari TP 251
Эта проверка начинается с измеримого условия. Единственная пользовательская боль: короткий локальный AAC/M4A с допустимым `ftyp`, отличным от `mp4`, завершается `EncodingError` вместо декодирования. Нормализованный intent этой страницы — «как проверить EncodingError decodeAudioData для M4A ftyp в Safari Technology Preview 251». Критерий, который можно опровергнуть: валидный M4A возвращает AudioBuffer с конечной длительностью, а оба контрола подтверждают целостность входа. Возможная ложная причина сформулирована отдельно: битый файл или HTTP Content-Type, ошибочно принятый за отказ декодера контейнера. До запуска выбирается такая развилка: M4A падает при успешном WAV и валидном контейнере — reproduced; оба падают — environment-blocked; hash изменён — invalid. Если нужная поверхность отсутствует, ставится `unsupported`; если нет обязательного наблюдения, ставится `unknown`; оба статуса отличаются от `not-reproduced`. Проверка выполняется на изолированном fixture, поэтому не затрагивает production, VPN, маршрутизацию, рабочий профиль, реальные аккаунты или личные данные. Вывод нельзя переносить на stable Safari, другой браузер либо чужой сайт без отдельного опыта.
Доказательная граница 318005@main@main
Сниппеты оставлены за пределами доказательной части. WebKit датирует Safari Technology Preview 251 26 августа 2026 года и перечисляет изменение: исправлено декодирование допустимых M4A, чей `ftyp` brand не равен `mp4`; primary commit также описывает регрессию с edit list. Связанная primary-страница 318005@main@main была открыта 29 августа: identifier совпадает, commit title описывает тот же узкий механизм. Для темы «короткий локальный AAC/M4A с допустимым `ftyp`, отличным от `mp4`, завершается `EncodingError` вместо декодирования» этого достаточно только чтобы подтвердить наличие change item и его инженерную границу. Release Notes и 318005@main@main не измеряют количество затронутых пользователей, не доказывают поисковый спрос, не сообщают результат для произвольного приложения и не гарантируют попадание в стабильную версию. Google News, Reddit и Apple search results были лидами к перепроверке даты; их заголовки и комментарии не использованы как техническое evidence.
Артефакт опыта: контейнерный паспорт `sha256/ftyp/edit-list → decode result → duration/channels/rate`
Вместо общего чек-листа сохраните предметный артефакт. Здесь это контейнерный паспорт `sha256/ftyp/edit-list → decode result → duration/channels/rate`. Локальный стенд: два маленьких синтетических аудиофайла без речи: проблемный M4A и контрольный WAV с тем же тестовым тоном. Схема записи специфична для задачи: `fileHash` — наблюдаемое значение или пусто с причиной; `mimeHint` — наблюдаемое значение или пусто с причиной; `ftypMajor` — наблюдаемое значение или пусто с причиной; `editListPresent` — наблюдаемое значение или пусто с причиной; `result` — наблюдаемое значение или пусто с причиной; `errorName` — наблюдаемое значение или пусто с причиной; `duration` — наблюдаемое значение или пусто с причиной; `channels` — наблюдаемое значение или пусто с причиной; `sampleRate` — наблюдаемое значение или пусто с причиной. В строке 318005@main добавляются `expected`, `observed`, build, timestamp и единица, если она применима. Формула или источник каждого вычисленного значения указывается рядом; пропуск не превращается в ноль. IP, cookie, Authorization, токены, device labels, внешние URL, пути, сырые media и содержимое файлов исключаются до записи. Test-only идентификаторы разрешены в виде краткого hash внутри запуска и удаляются после cleanup. Именно набор «fileHash, mimeHint, ftypMajor, editListPresent, result, errorName, duration, channels, sampleRate» делает материал самостоятельным: он отвечает на боль «короткий локальный AAC/M4A с допустимым `ftyp`, отличным от `mp4`, завершается `EncodingError` вместо декодирования», а не подставляет другое название в универсальный браузерный чек-лист.
Control и решение для 318005@main
Развилка решения фиксируется ещё на пустом стенде. Для 318005@main используется: WAV через тот же ArrayBuffer pipeline и M4A, предварительно проверенный независимым контейнерным инспектором. Он получает тот же build, порядок событий и поля «fileHash, mimeHint, ftypMajor, editListPresent, result, errorName, duration, channels, sampleRate». Проверяемый confounder — битый файл или HTTP Content-Type, ошибочно принятый за отказ декодера контейнера. Если основная ветка отклоняется, а control остаётся спокойным, применяется развилка «M4A падает при успешном WAV и валидном контейнере — reproduced; оба падают — environment-blocked; hash изменён — invalid». Если отклоняется control, итог `invalid`; если control технически недоступен, итог `environment-blocked`; если значения неполны, итог `inconclusive`. Нельзя объявлять дефект только потому, что фраза «короткий локальный AAC/M4A с допустимым `ftyp`, отличным от `mp4`, завершается `EncodingError` вместо декодирования» похожа на сообщение форума. Сначала должны совпасть fixture, измеряемая поверхность и ожидаемый ответ «валидный M4A возвращает AudioBuffer с конечной длительностью, а оба контрола подтверждают целостность входа». Этот порядок запрещает объяснение задним числом и сохраняет различие между соседними API, layout и media change items.
Обратимый canary и критерий PASS
Сначала baseline, затем одно воздействие, затем cleanup. Для этой статьи действие сформулировано так: декодировать один заранее зафиксированный ArrayBuffer, освободить AudioBuffer и повторить control. Сначала заполняется baseline по полям «fileHash, mimeHint, ftypMajor, editListPresent, result, errorName, duration, channels, sampleRate», затем выполняется только указанная операция. После заранее выбранного settle-event те же поля читаются повторно без округления и подмены отсутствующих значений. PASS допустим лишь при условии: валидный M4A возвращает AudioBuffer с конечной длительностью, а оба контрола подтверждают целостность входа. Затем действие полностью откатывается, и baseline для артефакта «контейнерный паспорт `sha256/ftyp/edit-list → decode result → duration/channels/rate`» должен восстановиться. Несовпадение rollback переводит запись в `invalid`, даже если основная ветка выглядела убедительно. Canary не расширяют на production, пользовательский media, рабочие разрешения, продолжительный стресс-тест или внешние страницы. Один run сохраняет свою строку; повтор не перезаписывает редкое отклонение.
Stop-line и privacy-safe handoff
Handoff оставляет только материал для повторения. Немедленная остановка: файл содержит пользовательскую речь, получен по сети с CORS или его hash не совпал с fixture. Для повторения оставляют build, hash fixture, поля «fileHash, mimeHint, ftypMajor, editListPresent, result, errorName, duration, channels, sampleRate», expected/observed, control status, cleanup status и primary link 318005@main@main. Статус выбирается из `reproduced`, `not-reproduced`, `unsupported`, `environment-blocked`, `invalid`, `inconclusive`, `unknown`; отдельной строкой приводится развилка «M4A падает при успешном WAV и валидном контейнере — reproduced; оба падают — environment-blocked; hash изменён — invalid». Перед передачей удаляются пути, имена, адреса, labels и любые значения, способные идентифицировать пользователя либо инфраструктуру. Даже успешный handoff подтверждает только условие «валидный M4A возвращает AudioBuffer с конечной длительностью, а оба контрола подтверждают целостность входа» в этом fixture. Он не обещает автоматическое исправление, стабильную поддержку, индексацию, позицию, цитирование ИИ или доказанный спрос.
Материал подготовлен редакцией VOne с помощью ИИ; дата Release 251, primary 318005@main, техническая граница, самостоятельный артефакт, control, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318005@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.