Safari Technology Preview 251: prototype SharedWorkerGlobalScope можно неожиданно заменить, нарушив защитный инвариант. People-first проверка: протокол инварианта «initial prototype → mutation attempt → exception/result → final prototype»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.
Ответ и граница: Web API
Начните не с переключения настроек, а с проверяемой границы. Запрос «как проверить immutable prototype SharedWorkerGlobalScope в Safari Technology Preview 251» относится только к ситуации: prototype SharedWorkerGlobalScope можно неожиданно заменить, нарушив защитный инвариант. Условие успеха записывается до запуска: замена prototype отклоняется, исходная identity сохраняется, а control показывает работоспособность самой операции. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «обычный non-extensible объект, ошибочно принятый за специальный immutable-prototype инвариант global scope». Похожий внешний эффект не равен той же причине: feature detection, версия и неизменяемые условия фиксируются заранее; отсутствие API означает unsupported, а отсутствие наблюдения — unknown. Производственный сайт, реальный аккаунт и пользовательские данные исключены.
Что подтверждают Release 251 и 318684@main
Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: prototype SharedWorkerGlobalScope сделан immutable prototype exotic object. Строка релиза ведёт к первичной записи 318684@main; её commit title и доступность перепроверены 29 августа. Документы WebKit отвечают на вопрос «что изменено в ветке», но не на вопросы «как часто» и «у кого проявится». Публичные обсуждения используются лишь для обнаружения темы. Технический предел статьи совпадает с формулировкой 318684@main и не расширяется поисковым заголовком.
Стенд и рабочий артефакт 318684
Стенд: same-origin SharedWorker, который отвечает только boolean-полями prototype identity и результатом безопасной попытки mutation. До воздействия без интерпретации запишите: initial prototype tag, Object.getPrototypeOf, mutation operation, returned value, exception.name и final identity. Рабочий артефакт — протокол инварианта «initial prototype → mutation attempt → exception/result → final prototype». Каждая строка должна быть воспроизводима без персональных данных: synthetic values, время, версия, expected и observed. Не расширяйте лог ради заполнения пробела и не сохраняйте сетевые идентификаторы. Наблюдение не интерпретируется до прохождения control и финального cleanup.
Контроль, который может опровергнуть гипотезу
Контроль готовят до canary, иначе он превращается в объяснение задним числом. Для этой боли используется: обычный extensible объект внутри того же worker и повторное чтение исходного prototype без mutation. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «обычный non-extensible объект, ошибочно принятый за специальный immutable-prototype инвариант global scope» получает отдельный признак. Контроль проходит то же settle-событие и те же поля. Его задача — различить механизм, поэтому совпавший сбой закрывает прогон статусом invalid. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.
Одно обратимое воздействие
Разрешён один шаг: один раз попытаться Object.setPrototypeOf на безвредный пустой объект и сразу завершить worker. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «initial prototype tag, Object.getPrototypeOf, mutation operation, returned value, exception.name и final identity». Не добавляйте вторую мутацию. Сначала запишите исходное состояние, затем одну проверку, а в конце докажите возврат тем же набором полей. PASS допустим, когда замена prototype отклоняется, исходная identity сохраняется, а control показывает работоспособность самой операции. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.
Stop-line, решение и минимальный handoff
В отчёт попадает не впечатление, а заранее определённый критерий PASS. Остановитесь, если worker переиспользован чужой вкладкой, CSP блокирует script, wrapper скрывает global scope или тест меняет prototype chain заранее. Финальная запись хранит протокол инварианта «initial prototype → mutation attempt → exception/result → final prototype», результат контроля, отметку rollback и ссылку на 318684@main. Сомнительный прогон остаётся invalid или unknown, а не новой уверенной публикационной формулировкой. Масштаб вывода ограничен паспортом стенда. Разработчику передают минимальный код, обезличенную таблицу, статус control/cleanup и ссылку на commit. Полный профиль браузера или пользовательский контент не нужен. PASS означает только условие «замена prototype отклоняется, исходная identity сохраняется, а control показывает работоспособность самой операции». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318684@main, техническая граница, независимый контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318684@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.