Files
transcriber/tasks/items/rollback-restores-wrong-session-duration.md
T
av f7a8a1df9d tasks: восемь записей интейка получили место в плане стройки
- migrations-step-norm-and-tests, gate-steps-subject-guard и
  review-config-from-go-upgrade уехали в голову: слой проверок, которым верят
  все задачи ниже;
- rollback-restores-wrong-session-duration встал рядом с соседом про откат,
  bot-api-only-through-bot-client — рядом с чисткой транспорта,
  pin-runtime-image-base — перед spa-skeleton, откуда начинаются пересборки;
- pipeline-spec-purpose-drift закрыта реализованной, а
  docs-consistency-2026-08-13 переписана под пять оставшихся находок: шестую
  свело повышение раскладки.
2026-08-13 16:11:58 +03:00

4.3 KiB

🐞 Починить срок сессии, который ставит откат шага входа

  • Тип: fix
  • Категория: Очередь — Оба про откат шага схемы: соседняя строка называет, что откат не отменяет применённое, эта чинит константу, которую он ставит. Порознь их правят дважды в одном файле.
  • Зачем: Константа defaultAuthTokenDuration в шаге 202608120001 названа умолчанием библиотеки, но 1209600 — это 14 суток, а умолчание PocketBase 432000, пять суток: откат объявляет возврат к умолчанию и ставит срок вдвое больше выбранных владельцем семи.

Найдено ревью пачки задач о гейте 2026-08-12, проход разбора кода. Дефект пришёл из задачи oidc-login и её правкой не был замечен; переезд шагов схемы в свой каталог развёл противоречащие комментарии по разным файлам, где раньше они стояли в трёх строках друг от друга: provider.go пишет «умолчание библиотеки в пять суток», шаг — «умолчание библиотеки» о числе в 14 суток.

Оракул сегодняшнего состояния: grep -n "Duration: 432000" ~/go/pkg/mod/github.com/pocketbase/pocketbase@v0.39.10/core/collection_model_auth_options.go отдаёт строку Duration: 432000, // 5days. Числа 1209600 в модуле нет ни разу как длительности токена.

Развилка, которую решает человек: правка меняет поведение применённого шага схемы, а такое спрашивается всегда. Либо константа приводится к 432000 внутри существующего шага (откат ещё не исполнялся ни разу, и переписывание трогает только будущие откаты), либо 14 суток объявляются выбранным числом — и тогда меняется имя константы и её комментарий, а не значение.

Воспроизведение

  1. Подключить откаты (migratecmd) — сегодня их не подключает ничто.
  2. Откатить шаг 202608120001_oidc_login.go.
  3. Прочитать AuthToken.Duration коллекции users: там 1209600 — вдвое больше семи суток, выбранных владельцем, и в 2.8 раза больше умолчания библиотеки, к которому откат обещал вернуть.

Затрагивает

  • internal/adapter/repo/pocketbase/migrations/202608120001_oidc_login.go, константа defaultAuthTokenDuration и комментарий down202608120001;
  • internal/adapter/repo/pocketbase/provider.go, комментарий к SessionDuration — он называет умолчание пятью сутками;
  • поведение откатов, если их подключат.

Критерии приёмки

  • Число в откате и число, названное умолчанием библиотеки, совпадают. Оракул — чтение константы против core/collection_model_auth_options.go версии PocketBase из go.mod.
  • Комментарии шага и provider.go говорят об умолчании одно и то же. Оракул — чтение обоих мест подряд.
  • Гейт зелёный целиком. Оракул — task gate.

Рамки

Правка применённого шага схемы — необратимое: решение принимает человек. Новым шагом это не лечится: новый шаг накатывается вперёд, а исправить нужно ветку отката прежнего.