Safari Technology Preview 251: Temporal.Duration выбирает соседний результат округления у граничного значения из-за решения на double. People-first проверка: ведомость границ «точный input → режим → ожидаемая сторона → фактический результат»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.
Ответ и граница: JavaScript
Здесь полезен узкий эксперимент, а не догадка по внешнему симптому. Запрос «как проверить округление Temporal Duration на точной целочисленной границе в Safari Technology Preview 251» относится только к ситуации: Temporal.Duration выбирает соседний результат округления у граничного значения из-за решения на double. Условие успеха записывается до запуска: обе стороны границы дают решение, совпадающее с целочисленным контролем и выбранным roundingMode. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «ошибка пересчёта календарной единицы, ошибочно выданная за потерю точности округления». Не делайте вывод по одной картинке. Сначала отделите unsupported от environment-blocked, запишите версию и не меняйте второй параметр ради красивого результата. Производственный сайт, реальный аккаунт и пользовательские данные исключены.
Что подтверждают Release 251 и 318901@main
Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: решения при округлении Temporal.Duration переведены с double на точные целые числа. Строка релиза ведёт к первичной записи 318901@main; её commit title и доступность перепроверены 29 августа. Из release page и commit нельзя выводить массовость, рейтинг или результат на произвольном Mac. MacRumors, Reddit и snippets не повышают уровень evidence технического тезиса. Технический предел статьи совпадает с формулировкой 318901@main и не расширяется поисковым заголовком.
Стенд и рабочий артефакт 318901
Стенд: таблица синтетических Duration около половинной границы с фиксированными smallestUnit, increment и roundingMode. До воздействия без интерпретации запишите: исходные поля Duration, единица, increment, режим, сериализованный результат и знак расстояния до границы. Рабочий артефакт — ведомость границ «точный input → режим → ожидаемая сторона → фактический результат». Каждая строка должна быть воспроизводима без персональных данных: synthetic values, время, версия, expected и observed. Не расширяйте лог ради заполнения пробела и не сохраняйте сетевые идентификаторы. Наблюдение не интерпретируется до прохождения control и финального cleanup.
Контроль, который может опровергнуть гипотезу
Сравнение считается валидным, только если меняется одна переменная и обе ветки проходят одинаковый сбор. Для этой боли используется: эквивалентный расчёт на целых наносекундах без преобразования к floating point. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «ошибка пересчёта календарной единицы, ошибочно выданная за потерю точности округления» получает отдельный признак. Сравнение готовят заранее и не переписывают после результата. Только раздельная реакция canary/control позволяет связать наблюдение с проверяемым условием. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.
Одно обратимое воздействие
Разрешён один шаг: округлить одну пару значений по обе стороны выбранной границы и затем повторить исходный baseline. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «исходные поля Duration, единица, increment, режим, сериализованный результат и знак расстояния до границы». Один шаг отделён от полного cleanup. Если cleanup не подтверждён или settle не определён, результат нельзя повышать выше unknown/invalid. PASS допустим, когда обе стороны границы дают решение, совпадающее с целочисленным контролем и выбранным roundingMode. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.
Stop-line, решение и минимальный handoff
Неполный прогон нельзя превращать в уверенное утверждение или новый соседний URL. Остановитесь, если значение выходит за диапазон Temporal, единицы несоизмеримы без relativeTo или библиотека подменяет native API. Финальная запись хранит ведомость границ «точный input → режим → ожидаемая сторона → фактический результат», результат контроля, отметку rollback и ссылку на 318901@main. Финальный статус не бинарный: отдельно различаются воспроизведение, отсутствие воспроизведения, отсутствие поддержки, блок среды, невалидность и нехватка данных. Пакет поддержки сокращается до версии, шагов, allowlist наблюдений, результата опровержения и stop-line. Никаких дампов аккаунта, cookie либо секретов. PASS означает только условие «обе стороны границы дают решение, совпадающее с целочисленным контролем и выбранным roundingMode». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318901@main, техническая граница, независимый контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318901@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.