- в 0.16 расширился набор правил по умолчанию: 29 срабатываний там, где 0.15
давал "All checks passed"
- subprocess.run без явного check (PLW1510) — проставлен check=False там, где
код и так разбирает returncode сам
- слепые except Exception в оркестраторе бэкапов и скриптах помечены
noqa: BLE001 с объяснением, почему перехват намеренно широкий
- EXE001 и TRY004 отключены в pyproject: бит исполняемости в репозитории
ничего не решает, а ValueError при разборе config.toml — про содержимое
конфига, а не про тип аргумента
- ruff format в 0.16 форматирует python внутри markdown, из-за чего
переформатирован пример в docs/drafts/gitea-runner-on-demand.md
- канон ролей лежит в ansible-roles, синхронизация идёт тасками
roles-status / roles-pull / roles-push, подписка — eget и app_image
- драфт переведён в статус «реализовано»: отмечены расхождения с дизайном
(имя канона, состав подписки) и незакрытые пункты плана
- Шесть задач `secrets-file-*` вместо одной: outline, wakapi, authelia,
gramps (средний), gitea, tududi (низкий, выигрыш частичный). Wanderer
отпал — файловых секретов не умеет ни meilisearch, ни pocketbase.
- Матрица механизмов со ссылками на код уехала в
docs/drafts/secrets-file-support.md, родитель — на кладбище.