#37 Генеральная уборка в ReadySet, плюс обновления gitoskop 1.7.0 и zoryn 0.53.0

12 сентября 2026 г. • 3 Записи • Курировал Олег Щавелев

Обновление о том, что произошло вокруг Альта на неделе с 6 по 12 сентября 2026 года.

ALT Linux Team

Международная, в основном русскоговорящая, команда разработчиков свободного программного обеспечения. Основное направление деятельности ALT Linux Team — проект Sisyphus.

Gitoskop

Быстрый просмотрщик деревьев bare-git-репозиториев на Rust (замена gitweb.cgi)

rider сообщает:

gitoskop 1.7.0

gitoskop — быстрый просмотрщик деревьев bare-git-репозиториев на Rust (замена gitweb.cgi). Что нового.

🛡 Устойчивость под нагрузкой

Четыре места, где недоверенный клиент мог отъесть больше, чем ему положено: медленные читатели /archive держали весь пул потоков, всплеск MCP-вызовов выедал десятки гигабайт, ?reread_data=1 заставлял пересобирать индекс на каждый запрос, оборванный blame крутился до конца. Теперь архивы и blame ограничены по числу одновременных сборок (лишним — 503 + Retry-After), капельные читатели отрезаются, MCP получил свой лимит (mcp_max_concurrency), reread_data — не чаще раза в 3 с.

📦 Recipe: дерево знает свои исходники

Если дерево — сборочный рецепт (gear rules или спек рядом с сорцами), gitoskop разбирает его как gear: макросы спека для @version@, базовое дерево по коммиту, ref или тегу, аннотированный тег через объект. Ничего не настраивается, определяется по дереву. Verb recipe/<ref>, спек-«пилюля» в шапке репозитория.

🤖 MCP для агентов

  • Новые инструменты: tree, refs (с признаком «ветка влита в upstream»), find по имени файла, recipe.
  • Дерево-рецепт само говорит, где его исходники — в листинге, в repo_info, при промахе find/grep/read_file.
  • git_show и git_diff режутся по path, blame берёт lines; ответы стали короче, каждый вызов пишется в лог.

🔎 Поиск

  • find — пути по подстроке имени, с бюджетом и пагинацией как у grep.
  • grep ?path= ищет только в поддереве; обрезанный бюджетом обход об этом говорит (X-Gitoskop-Partial).
  • diff и patch понимают a...b — от merge base.

📝 Спек и коммиты

  • В changelog спека номера багов ведут в bugzilla, CVE/BDU/GHSA — в реестры; при наведении карточка: severity, score, дата, заголовок.
  • Если в тексте коммита упомянут sha другого коммита («fixes 3f2a1b7c…»), он стал ссылкой на тот коммит.
  • Fenced-код в markdown подсвечивается.

🔧 Исправления

  • Ref, который и ветка, и тег (sisyphus в vim.git), теперь ветка, а не древний тег.
  • Страница grep и карточка последнего коммита следуют за выбором ревизии.
  • Номера строк — настоящие ссылки, «копировать ссылку» работает.
  • Страница ошибки фронтового прокси отвечает своим статусом, а не 400 unknown root label.
  • Список файлов: имени — место, длинное переносится; на телефоне без колонки размера.

Спасибо Денису Растёгину за анализ безопасности и всем участникам ALT Linux Team за багрепорты и фичреквесты.

Пакет уже в Сизифе.

Прод | Проект | Полный changelog

Zoryn

Ассистент ментейнера ALT Linux

rider сообщает:

🚀 zoryn 0.53.0

zoryn — помощник мейнтейнера ALT Linux: обновляет версию пакета из upstream, собирает его в hasher локально или на удалённых сборщиках, отправляет сборочные задания в Sisyphus и ветки, поднимает изолированные окружения разработки (devenv) и умеет работать в связке с ИИ-агентом.

Небольшой релиз: доработки devenv и связки с ИИ-агентом, плюс восемь исправлений — в zoryn up, gen version-up, task manage и task test-rebuild.

Сборка в devenv. Из контейнера видны сборщики хоста — конфиг ведь смонтирован, — но добраться до них нельзя. Раньше zoryn build и сборочный шаг zoryn up всё равно пытались и падали не сразу. Теперь в devenv без фичи hasher сборка останавливается на старте и подсказывает команду: gear-rpm -ba --commit. Это же правило вынесено в начало Agent Skill: BuildRequires в контейнере уже установлены, агент собирает через gear-rpm, а не через hasher.

devenv. У фич claude и GLM-claude-code появилась опция installer: native (по умолчанию, официальный install.sh) или npm — на случай, если родной установщик качается медленно. Флаг --outbound-interface / -I переопределяет [devenv].outbound_interface на один запуск. Смена интерфейса больше не пересобирает образ — он тут ни при чём, контейнер просто пересоздаётся из кэша. Каталог Agent Skill теперь смонтирован в контейнер (только чтение), так что скилл-указатель из zoryn agent skill install работает и внутри.

ИИ-агент. zoryn agent mcp install --token TOKEN записывает для сервера заголовок Authorization: Bearer TOKEN. В отличие от --api-key ему не нужен api-key-header в каталоге — подходит любому серверу, в том числе заданному через --url; --token '' убирает токен. В Agent Skill добавлен references/repair.md — как чинить упавшую сборку: что читать, что можно трогать, чем проверять, когда остановиться. Шаг agent в zoryn flow теперь ссылается на него.

zoryn flow и подпись тегов. Если во flow есть submit или batch, пароль ключа спрашивается до первого шага, а не после сборки, когда терминал уже никто не смотрит. При gpg.format = ssh ничего не меняется.

Исправления.

  • zoryn up --continue после ручного git merge --continue не запускал хуки .gear/merge-up.d/ — считал, что слияние уже было
  • zoryn gen version-up для тега вида v1.5.0-stable писал паттерн, который ничего не находил (#145)
  • отмена параллельной сборки по Ctrl+C могла зависнуть
  • task manage: зависимость с удалённым заданием теперь видна на экране deps и снимается клавишей d, а не блокирует задание сообщением «fetch failed»
  • task test-rebuild без зависимых пакетов завершается сразу после запроса к RDB: репозиторий не генерируется, RPMS.hasher не чистится, пустой rebuild-stats.json сохраняется; --local-rpms проверяется вместе с остальными флагами

📋 Полный список изменений | 📖 Руководство | 💬 Обсуждение

📦 apt-get install zoryn

ALT Gnome

ReadySet

Владимир Романов пишет:

ReadySet 0.14

  • Добавлен механизм блокировки переменных в Context. Переменные с setting=true задаются только из конфига или аргументов CLI, после чего блокируются.
  • init_once заменена на init_context и init:
  • init_context вызывается после установки контекста. Метод для назначения коллбэков на изменение переменных.
  • init вызывается после установки начальных значений (конфиг/CLI). Переменные setting здесь уже установлены.
  • Новые интерфейсы плагинов:
  • ApplyAfter — задает зависимости этапа apply. Например, software отображается по steps, но применяется после user;
  • ExistingUser — гибкие статусы для отображения страницы в режиме existing-user и повторной проверки требований;
  • HasStringRepr / HasWidgetRepr — для сводки;
  • Welcome — позволяет использовать плагин вместо стандартной страницы приветствия.
  • Удален отдельный плагин welcome (перенесен в ядро приложения). Добавлена встроенная SummaryPage для режима установщика.
  • Реализован CommandHandler: добавлена подкоманда nothing-to-do, выводящая в stderr 0, если действий не требуется, и 1 в противном случае.
  • Удалена CLI-опция detailed; рефакторинг логики боковой панели и индикаторов шагов. Сайдбар теперь отображается только в installer.
  • Рефакторинг кода.

Плагины

  • Network:
  • Интегрирован connection-editor (порт GTK4/Adwaita из GNOME Control Center). Добавлен диалог управления адаптерами и подключениями Ethernet.
  • Улучшен виджет подключений Ethernet.
  • User:
  • Удален плагин привилегированного D-Bus сервиса user-root. Хеширование паролей теперь выполняется напрямую в плагине.
  • License Agreement:
  • Добавлена проверка хеша лицензии (хранится в gsettings). При изменении текста в режиме existing-user пользователю предлагается принять новые условия.
  • Добавлена контекстная переменная installer. Если истинна, хеш сохраняется на этапе initial-setup, но соглашение не показывается (считается принятым при настройке). Для existing-user выполняется повторная проверка.
  • Language:
  • Реализует интерфейс Welcome.
  • Software: Добавлена зависимость применения от плагина user через ApplyAfter.

На этом всё!

Спасибо всем участникам сообщества за новости!

Заходите в наш чат: https://t.me/ThisWeekInALT, присылайте новости в @ThisWeekInALT_bot и не забывайте ознакомиться с инструкцией по отправке новостей на странице О Нас.

До следующей недели!