Safari Technology Preview 251 включает custom property в ключ random(). Безопасная локальная диагностика: парный журнал «property name → random key → computed item → reload», одна переменная, отрицательный контроль, rollback и минимизированный пакет для поддержки.
Симптом, который нельзя смешивать с соседним
Запрос «как проверить ключ кэша random() для разных CSS custom properties Safari Technology Preview 251» сводится к одной проверяемой боли: две независимые custom properties получают связанное значение random(), потому что имя свойства не входит в cache key. До опыта фиксируется ожидаемый признак: кэш сохраняет повторяемость там, где она задумана, но не объединяет разные custom property только из-за совпадающего выражения. Нельзя расширять вывод на stable Safari, другой движок, произвольный сайт или массовость симптома. Главная ловушка здесь такова: случайно совпавшие числа возможны; вывод требует наблюдать ключевую зависимость и несколько reload, не один скриншот. Поэтому наблюдение получает статус reproduced только после повторного одинакового результата и успешного возврата; not reproduced относится исключительно к этому стенду, а unsupported, environment-blocked и unknown остаются разными статусами.
Доказательная опора без вывода о массовости
Официальные Release Notes WebKit от 26 августа 2026 года формулируют изменение так: WebKit исправил caching key random(), в котором отсутствовало имя custom property. Пункт связан с первичной записью 319096@main. Release page доказывает наличие изменения в ветке Safari Technology Preview 251, а commit задаёт техническую границу конкретной правки. Ни один из этих источников сам по себе не подтверждает частоту запроса, результат на конкретном устройстве или будущий перенос в стабильный выпуск. Публичная ветка о релизе использована только как свежий community lead; комментарии, реакции и поисковые snippets не превращаются в доказательство причины.
Наблюдаемые величины и чистый fixture
Стенд: локальный элемент с двумя custom properties, одинаковым диапазоном random() и одинаковым явным ключом; значения выводятся только в тестовые размеры. До воздействия запишите: текст обеих деклараций, computed значения, имя элемента, номер повторения и состояние после полного reload fixture. Рабочий артефакт — парный журнал «property name → random key → computed item → reload». У каждого ряда должны быть версия TP 251, время, expected, observed и отметка о валидности контроля. Не сохраняются IP, cookie, токены, Authorization, полные URL с приватными query, локальные пути, имена профилей и содержимое рабочих документов. Случайные или вымышленные данные стенда помечаются как тестовые. Если обязательное поле нельзя получить без доступа к реальным данным, эксперимент останавливается: пробел не заполняют догадкой и не компенсируют дополнительной мутацией.
Пошаговый тест с полным rollback
Canary меняет ровно одну причину: читать пары значений на серии независимых reload, затем поменять только имя одной custom property и повторить серию. Контроль устроен отдельно: одно и то же свойство читается дважды в одном цикле для проверки стабильности кэша, а разные явные ключи дают сравнительный режим. Сначала снимается baseline, затем выполняется единственное воздействие, после него — заранее выбранное измерение, затем полный rollback и повтор baseline. Новый шаг не добавляют, пока предыдущий не получил результат и контроль. Если rollback не вернул исходное состояние, прогон invalid, даже когда картинка кажется убедительной. Тест выполняется только локально или на специально подготовленном безопасном стенде; production, пользовательские сессии и чужие страницы в процедуру не входят.
Как читать результат и когда прекратить
PASS для узкой гипотезы означает: кэш сохраняет повторяемость там, где она задумана, но не объединяет разные custom property только из-за совпадающего выражения. Практический результат оформляется как парный журнал «property name → random key → computed item → reload». Stop-line: маленькая серия не доказывает качество случайности; статья проверяет идентичность ключа и стабильность, а не статистическое распределение. Для передачи разработчику достаточно: stylesheet, журнал пар без пользовательских данных, число повторов, метод reload, контроль ключа и 319096@main. Перед отправкой артефакт ещё раз очищают от идентификаторов и проверяют, что отрицательный контроль действительно отличался только указанной переменной. Материал не обещает исправление на другом сайте, стабильную поддержку функции, индексацию, позиции или универсальное поведение; он даёт воспроизводимый путь, по которому команда может отделить наблюдаемый факт от предположения.
Материал подготовлен редакцией VOne с помощью ИИ; дата, первичный WebKit commit 319096@main, техническая граница, контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 319096@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.