Операция non-ISO календаря у границы поддерживаемого диапазона возвращает невозможный день или падает на значении, которое должно быть насыщено до допустимого. Разбор Safari TP 251: самостоятельный диагностический артефакт, прямые источники, опровержимый контроль, обратимый canary, stop-line и privacy-safe handoff.
Ответ на запрос: Temporal на границе non-ISO календаря: тест Safari TP 251
Эта проверка начинается с измеримого условия. Единственная пользовательская боль: операция non-ISO календаря у границы поддерживаемого диапазона возвращает невозможный день или падает на значении, которое должно быть насыщено до допустимого. Нормализованный intent этой страницы — «как проверить non-ISO календарь Temporal на границе диапазона в Safari Technology Preview 251». Критерий, который можно опровергнуть: результат либо допустим и соблюдает диапазон дня, либо операция явно выбрасывает предусмотренное исключение; невозможной даты нет. Возможная ложная причина сформулирована отдельно: разница ICU или часового пояса, ошибочно принятая за ошибку календарного разрешения. До запуска выбирается такая развилка: невозможное поле — reproduced; явное допустимое исключение — handled; расхождение ISO-control — environment-blocked. Если нужная поверхность отсутствует, ставится `unsupported`; если нет обязательного наблюдения, ставится `unknown`; оба статуса отличаются от `not-reproduced`. Проверка выполняется на изолированном fixture, поэтому не затрагивает production, VPN, маршрутизацию, рабочий профиль, реальные аккаунты или личные данные. Вывод нельзя переносить на stable Safari, другой браузер либо чужой сайт без отдельного опыта.
Доказательная граница 318940@main@main
Две первичные страницы задают предел утверждения. WebKit датирует Safari Technology Preview 251 26 августа 2026 года и перечисляет изменение: исправлено разрешение полей non-ISO даты у краёв диапазона, включая двустороннее ограничение дня и отдельную обработку дальней арифметики. Связанная primary-страница 318940@main@main была открыта 29 августа: identifier совпадает, commit title описывает тот же узкий механизм. Для темы «операция non-ISO календаря у границы поддерживаемого диапазона возвращает невозможный день или падает на значении, которое должно быть насыщено до допустимого» этого достаточно только чтобы подтвердить наличие change item и его инженерную границу. Release Notes и 318940@main@main не измеряют количество затронутых пользователей, не доказывают поисковый спрос, не сообщают результат для произвольного приложения и не гарантируют попадание в стабильную версию. Google News, Reddit и Apple search results были лидами к перепроверке даты; их заголовки и комментарии не использованы как техническое evidence.
Артефакт опыта: реестр `calendar × year/month/day input → ISO result/error × invariant`
Для этой боли нужен отдельный диагностический носитель. Здесь это реестр `calendar × year/month/day input → ISO result/error × invariant`. Локальный стенд: изолированный скрипт с Buddhist, Chinese и Dangi календарями, фиксированными литералами и без текущей даты. Схема записи специфична для задачи: `calendar` — наблюдаемое значение или пусто с причиной; `inputFields` — наблюдаемое значение или пусто с причиной; `operation` — наблюдаемое значение или пусто с причиной; `resultISO` — наблюдаемое значение или пусто с причиной; `resultCalendar` — наблюдаемое значение или пусто с причиной; `errorName` — наблюдаемое значение или пусто с причиной; `dayInvariant` — наблюдаемое значение или пусто с причиной; `rangeClass` — наблюдаемое значение или пусто с причиной. В строке 318940@main добавляются `expected`, `observed`, build, timestamp и единица, если она применима. Формула или источник каждого вычисленного значения указывается рядом; пропуск не превращается в ноль. IP, cookie, Authorization, токены, device labels, внешние URL, пути, сырые media и содержимое файлов исключаются до записи. Test-only идентификаторы разрешены в виде краткого hash внутри запуска и удаляются после cleanup. Именно набор «calendar, inputFields, operation, resultISO, resultCalendar, errorName, dayInvariant, rangeClass» делает материал самостоятельным: он отвечает на боль «операция non-ISO календаря у границы поддерживаемого диапазона возвращает невозможный день или падает на значении, которое должно быть насыщено до допустимого», а не подставляет другое название в универсальный браузерный чек-лист.
Control и решение для 318940@main
Сравнение готовят до canary, а не после результата. Для 318940@main используется: ISO-календарь с теми же числовыми полями и ближайшее обычное значение внутри диапазона. Он получает тот же build, порядок событий и поля «calendar, inputFields, operation, resultISO, resultCalendar, errorName, dayInvariant, rangeClass». Проверяемый confounder — разница ICU или часового пояса, ошибочно принятая за ошибку календарного разрешения. Если основная ветка отклоняется, а control остаётся спокойным, применяется развилка «невозможное поле — reproduced; явное допустимое исключение — handled; расхождение ISO-control — environment-blocked». Если отклоняется control, итог `invalid`; если control технически недоступен, итог `environment-blocked`; если значения неполны, итог `inconclusive`. Нельзя объявлять дефект только потому, что фраза «операция non-ISO календаря у границы поддерживаемого диапазона возвращает невозможный день или падает на значении, которое должно быть насыщено до допустимого» похожа на сообщение форума. Сначала должны совпасть fixture, измеряемая поверхность и ожидаемый ответ «результат либо допустим и соблюдает диапазон дня, либо операция явно выбрасывает предусмотренное исключение; невозможной даты нет». Этот порядок запрещает объяснение задним числом и сохраняет различие между соседними API, layout и media change items.
Обратимый canary и критерий PASS
Основной прогон короткий и возвращает исходное состояние. Для этой статьи действие сформулировано так: создать один PlainYearMonth у выбранной границы, вызвать `toPlainDate`, затем повторить ближайшее обычное значение. Сначала заполняется baseline по полям «calendar, inputFields, operation, resultISO, resultCalendar, errorName, dayInvariant, rangeClass», затем выполняется только указанная операция. После заранее выбранного settle-event те же поля читаются повторно без округления и подмены отсутствующих значений. PASS допустим лишь при условии: результат либо допустим и соблюдает диапазон дня, либо операция явно выбрасывает предусмотренное исключение; невозможной даты нет. Затем действие полностью откатывается, и baseline для артефакта «реестр `calendar × year/month/day input → ISO result/error × invariant`» должен восстановиться. Несовпадение rollback переводит запись в `invalid`, даже если основная ветка выглядела убедительно. Canary не расширяют на production, пользовательский media, рабочие разрешения, продолжительный стресс-тест или внешние страницы. Один run сохраняет свою строку; повтор не перезаписывает редкое отклонение.
Stop-line и privacy-safe handoff
Передача результата не должна раскрывать окружение. Немедленная остановка: сценарий зависит от локального now, часового пояса, непроверенного polyfill или уходит за заявленную commit-границу. Для повторения оставляют build, hash fixture, поля «calendar, inputFields, operation, resultISO, resultCalendar, errorName, dayInvariant, rangeClass», expected/observed, control status, cleanup status и primary link 318940@main@main. Статус выбирается из `reproduced`, `not-reproduced`, `unsupported`, `environment-blocked`, `invalid`, `inconclusive`, `unknown`; отдельной строкой приводится развилка «невозможное поле — reproduced; явное допустимое исключение — handled; расхождение ISO-control — environment-blocked». Перед передачей удаляются пути, имена, адреса, labels и любые значения, способные идентифицировать пользователя либо инфраструктуру. Даже успешный handoff подтверждает только условие «результат либо допустим и соблюдает диапазон дня, либо операция явно выбрасывает предусмотренное исключение; невозможной даты нет» в этом fixture. Он не обещает автоматическое исправление, стабильную поддержку, индексацию, позицию, цитирование ИИ или доказанный спрос.
Материал подготовлен редакцией VOne с помощью ИИ; дата Release 251, primary 318940@main, техническая граница, самостоятельный артефакт, control, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318940@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.