К обсуждениям

Safari Technology Preview 251: quota после positioned write в OPFS

Редакция VOne Технологии

Safari Technology Preview 251: positioned write в OPFS завышает usage и создаёт ложное ощущение исчерпанной quota. People-first проверка: журнал high-water mark «offset → bytes written → logical size → usage direction»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.

Ответ и граница: Web API

Этот запрос решается сравнением двух воспроизводимых веток на синтетическом стенде. Запрос «как проверить учёт quota после positioned write через FileSystemWritableFileStream в Safari Technology Preview 251» относится только к ситуации: positioned write в OPFS завышает usage и создаёт ложное ощущение исчерпанной quota. Условие успеха записывается до запуска: внутренняя перезапись не учитывается как новый полный файл, а после cleanup usage не сохраняет искусственный рост. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «гранулярность StorageManager.estimate, ошибочно интерпретированная как точный бухгалтерский счётчик байтов». Граница намеренно узкая: один механизм, один synthetic fixture и одна версия. Любой соседний сбой получает отдельную гипотезу, а не подгоняется под этот commit. Производственный сайт, реальный аккаунт и пользовательские данные исключены.

Что подтверждают Release 251 и 318130@main

Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: исправлен завышенный учёт quota для positioned writes через FileSystemWritableFileStream. Строка релиза ведёт к первичной записи 318130@main; её commit title и доступность перепроверены 29 августа. Факт релиза отделён от спроса: прямые страницы подтверждают формулировку change item, тогда как реакции форума и поисковые snippets не подтверждают причину либо популярность. Технический предел статьи совпадает с формулировкой 318130@main и не расширяется поисковым заголовком.

Стенд и рабочий артефакт 318130

Стенд: изолированный test origin, один OPFS-файл и три синтетических byte arrays с обязательным удалением. До воздействия без интерпретации запишите: offset, payload bytes, file size, estimate usage до и после, операция truncate и cleanup status. Рабочий артефакт — журнал high-water mark «offset → bytes written → logical size → usage direction». Каждая строка должна быть воспроизводима без персональных данных: synthetic values, время, версия, expected и observed. Не расширяйте лог ради заполнения пробела и не сохраняйте сетевые идентификаторы. Наблюдение не интерпретируется до прохождения control и финального cleanup.

Контроль, который может опровергнуть гипотезу

Отрицательная ветка нужна, чтобы одинаковый внешний результат не подменил одинаковую причину. Для этой боли используется: последовательный append того же числа байтов в отдельный файл и измерение только направления usage. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «гранулярность StorageManager.estimate, ошибочно интерпретированная как точный бухгалтерский счётчик байтов» получает отдельный признак. Обе ветки получают одинаковый порядок запуска и сбор. Если отклоняется control, итог invalid; если control недоступен, environment-blocked — выбирать удобную интерпретацию нельзя. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.

Одно обратимое воздействие

Разрешён один шаг: перезаписать короткий диапазон внутри файла через positioned write, закрыть stream и затем удалить файл. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «offset, payload bytes, file size, estimate usage до и после, операция truncate и cleanup status». Операция выполняется один раз на synthetic fixture. Повторный baseline после cleanup важнее впечатления от промежуточного кадра и является обязательным условием валидности. PASS допустим, когда внутренняя перезапись не учитывается как новый полный файл, а после cleanup usage не сохраняет искусственный рост. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.

Stop-line, решение и минимальный handoff

Любое расхождение сначала проверяют повтором baseline после rollback. Остановитесь, если origin хранит другие данные, estimate слишком груб для вывода, stream не закрыт или cleanup не подтверждён. Финальная запись хранит журнал high-water mark «offset → bytes written → logical size → usage direction», результат контроля, отметку rollback и ссылку на 318130@main. Допустимые итоги: reproduced, not reproduced, unsupported, environment-blocked, invalid и unknown; каждый относится только к этому fixture. Handoff должен позволять повтор без исходных данных пользователя: одна страница/extension fixture, измерения, control, cleanup и точная ссылка на изменение. PASS означает только условие «внутренняя перезапись не учитывается как новый полный файл, а после cleanup usage не сохраняет искусственный рост». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.

Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318130@main, техническая граница, независимый контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.