Выпустить проверенную версию OKF

Этот процесс предназначен для сопровождающих репозитория. Нужны доступ к GitHub, Git и Go требуемой версии. Для изменений сначала подготовьте задачу и PR, дождитесь обязательных проверок, затем публикуйте тег и релиз с подтверждающими материалами.

Обязательные проверки

Процесс CI запускается для PR, отправки коммитов в main, тегов версий и вручную. Права репозитория ограничены чтением; сторонние действия закреплены за неизменяемыми SHA.

На Linux выполняются:

go test ./...
go test -race ./...
go vet ./...
go mod verify
go mod tidy -diff
git diff --check
go build ./...

Также проверяются зависимости навыков, lock-файл и автономные пакеты, включая отрицательные случаи отсутствующих инструментов и файлов инструкций. На Darwin выполняются go test ./store/fs и go build ./.... На Windows — сборка и тесты типизированной ошибки неподдерживаемой платформы из Open и OpenContext. Для Android проверяется сборка; проверки выбора исходников Android/iOS защищают от случайного подключения реализации хранилища Darwin/Linux через производные Go-теги.

Для тега CI дополнительно проверяет достижимость коммита из main. При создании тега GitHub передаёт нулевой before SHA, поэтому проверка пробелов сравнивает весь тег с пустым деревом Git. Длительные фаззинг-проверки и профили на 10 000 заметок остаются ручными проверками по материалам о мутациях.

Платформы и граница долговечности

Платформа Контракт store/fs Остальные пакеты
Darwin Долговечное хранилище на одной файловой системе после проверок возможностей Поддерживаются
Linux Долговечное хранилище на одной файловой системе после проверок возможностей Поддерживаются
Windows и другие Компилируются; Open и OpenContext возвращают *fs.UnsupportedPlatformError Собираются

Используйте errors.Is(err, fs.ErrUnsupportedPlatform) для распознавания ошибки и errors.As для чтения GOOS/GOARCH. Неподдерживаемая платформа не начинает частичную инициализацию.

Граница долговечности — одна файловая система. Блокировки рекомендательные: обычные редакторы в них не участвуют, читатели могут увидеть переименование нескольких файлов во время публикации. Восстановление завершает записанную транзакцию; распределённой изоляции здесь нет.

Материалы релиза

Зафиксируйте задачу, PR с доступным diff, коммиты, успешный CI, существующий аннотированный тег, проверки и открытые последующие задачи. Если правила GitHub не могут обеспечить обязательный статус, явно укажите ограничение и ссылку на успешную проверку. Сообщение о завершении должно ссылаться на эти материалы.

Ожидаемый результат — опубликованный релиз, для которого можно проследить изменение до PR и проверки. Если проверка красная, разберите причину до заявления об успешной приёмке; последующую задачу и ограничение отразите в релизе.

Актуальные релизы. Исторические записи v0.2.0 и v0.2.2 описывают свои версии. Карта требований issue #2 сохраняет сведения о той проверке.