Safari Technology Preview 251: Cache Storage size не уходит в underflow. People-first диагностика: ledger «операция → entries → expected byte delta → observed usage class → reopen»; синтетический fixture, независимый контроль, одно обратимое воздействие, stop-line и обезличенный handoff.
Проблема и соседняя ловушка
Прямой ответ на запрос «как проверить underflow и сохранение повреждённого размера Cache Storage Safari Technology Preview 251» начинается с границы: проверяется только боль «после серии replace/delete учётный размер Cache Storage становится нелогичным и сохраняет повреждённое значение» на локальном fixture. Успех заранее определяется так: usage остаётся неотрицательным и согласуется с направлением операций, а reopen не возвращает повреждённый persisted size. Нельзя подменять его похожей картинкой, общей скоростью браузера или выводом о стабильном Safari. Отдельная ловушка — общий quota estimate origin, ошибочно принятный за точный размер одного cache. Исход получает один из статусов reproduced, not reproduced, unsupported, environment-blocked, invalid или unknown. Первое наблюдение не считается доказательством, пока контроль и возврат к baseline не подтвердили, что изменилась ровно одна причина.
Официальная запись и её ограничения
Официальная страница WebKit от 26 августа 2026 года относит к Safari Technology Preview 251 следующий change item: исправлен underflow учёта размера Cache Storage и сохранение некорректного размера. Техническая ссылка — 318204@main. Release note и commit подтверждают наличие конкретного изменения в ветке, но не частоту жалоб, спрос, причинность для чужой страницы, результат на данном компьютере или перенос в стабильный выпуск. Публичная ветка MacRumors перепроверена только как community lead. Её текст, реакции и поисковые snippets не используются как фактологическое evidence и не дают права писать о массовости.
Минимизированный набор наблюдений
Fixture: локальный origin с отдельным test cache, тремя Response фиксированного размера и гарантированным cleanup. До действия без интерпретации записываются операция put/delete, key, payload bytes, estimate usage до/после, число entries и результат повторного открытия. Рабочий артефакт — ledger «операция → entries → expected byte delta → observed usage class → reopen». У каждой строки есть expected, observed, время, версия TP 251 и флаг валидности. Используются только синтетические данные. Запрещено сохранять cookie, IP, Authorization, токены, реальные URLs с query, имена профилей, пользовательские файлы и полные логи. Если нужное поле нельзя получить без персональных или секретных данных, тест останавливается: пробел не заполняют догадкой и не расширяют сбор.
Отрицательный контроль
Контрольная ветка готовится до canary: второй cache с append-only тремя уникальными keys и теми же суммарными bytes. Она проверяет, не объясняется ли симптом общей средой или тестовой обвязкой. Риск «общий quota estimate origin, ошибочно принятный за точный размер одного cache» получает собственную колонку, потому что совпадение внешнего вида не означает совпадение причины. Если control отклоняется вместе с основной веткой, результат invalid и публикационная формулировка не утверждает воспроизведение. Такой контроль не обещает универсальной корректности; он лишь делает конкретный вывод опровержимым и не позволяет замаскировать соседний сбой вторым изменением.
Обратимый тест
Основной шаг: заменить один key меньшим Response, удалить его и заново открыть cache после settle. Сначала фиксируется baseline, затем выполняется только указанное воздействие, после заранее выбранного settle-события повторно снимаются операция put/delete, key, payload bytes, estimate usage до/после, число entries и результат повторного открытия. Далее состояние полностью возвращается и baseline измеряется ещё раз. PASS возможен, когда usage остаётся неотрицательным и согласуется с направлением операций, а reopen не возвращает повреждённый persisted size. Production, реальные аккаунты, чужие сайты, VPN-конфиги, маршрутизация и пользовательские данные в процедуру не входят. Если rollback не возвращает исходные признаки, весь прогон помечается invalid независимо от привлекательности результата.
Вердикт без расширения вывода
Финальное решение хранится как ledger «операция → entries → expected byte delta → observed usage class → reopen». Reproduced означает только выполнение условия «usage остаётся неотрицательным и согласуется с направлением операций, а reopen не возвращает повреждённый persisted size» на этом стенде; not reproduced не опровергает проблему в других средах. Стоп-линия: остановиться, если origin хранит другие данные, quota estimate слишком груб, cleanup не подтверждён или используется production cache. Для передачи разработчику достаточно минимального fixture, версии, обезличенных значений «операция put/delete, key, payload bytes, estimate usage до/после, число entries и результат повторного открытия», результата контрольной ветки, отметки rollback и ссылки на 318204@main. Статья не обещает индексацию, позиции, спрос, стабильную поддержку или автоматическое исправление; сомнительный либо неполный прогон не должен становиться новым URL.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318204@main, техническая граница, контроль, rollback, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318204@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.