Повторяющиеся ошибки: декомпозиция по Ганту

Дата: 2026-02-12
Источник: recurring-errors-priority-2026-02-11.md
Цель: Связные подзадачи с зависимостями для диаграммы Ганта в Redmine (tasks.cdto.group).


1. Иерархия и зависимости (сводка)

  • P1 (OOM) выполняется первым; последняя подзадача P1 предшествует первой подзадаче P2.
  • P2 (Apport) — после завершения P1; последняя подзадача P2 предшествует началу P3.
  • P3 — две ветки (Cockpit и GDM), могут идти параллельно после P2.

Тип связи в Redmine для Ганта: precedes (задача A предшествует задаче B → B не может начаться до завершения A).


2. Дерево подзадач и связи

P1: OOM — лимиты для snapd и LXD (критично)

Код Подзадача Часы Начало Окончание Зависит от
P1.1 Проверить наличие и применить scripts/install-resource-limits.sh 0.5 2026-02-11 2026-02-11
P1.2 Задать MemoryMax/MemoryHigh для snapd.service 0.5 2026-02-11 2026-02-11 P1.1
P1.3 Задать лимиты для snap.lxd.daemon.service 0.5 2026-02-11 2026-02-11 P1.2
P1.4 При необходимости: systemd-oomd (пороги, ManagedOOM для user.slice) 0.5 2026-02-11 2026-02-11 P1.3

Связи по Ганту: P1.1 → P1.2 → P1.3 → P1.4 → (далее P2.1)


P2: Убрать диалог Apport «Обнаружена ошибка в системной программе»

Код Подзадача Часы Начало Окончание Зависит от
P2.1 Удалить старые краш-файлы: sudo rm /var/crash/*.crash (или выборочно) 0.5 2026-02-12 2026-02-12 P1.4
P2.2 При необходимости: отключить Apport (enabled=0 в /etc/default/apport, перезапуск apport) 0.5 2026-02-12 2026-02-12 P2.1

Связи по Ганту: P1.4 → P2.1 → P2.2 → (далее P3.1 и P3.4)


P3a: Падения cockpit-pcp / pmrep и Cockpit session

Код Подзадача Часы Начало Окончание Зависит от
P3.1 Обновить пакеты cockpit-pcp и pcp 0.5 2026-02-13 2026-02-13 P2.2
P3.2 Удалить файлы cockpit-pcp, pmrep из /var/crash/ 0.25 2026-02-13 2026-02-13 P3.1
P3.3 Мониторить логи; при повторении — обновить Cockpit, проверить PAM/systemd 0.5 2026-02-13 2026-02-13 P3.2

Связи по Ганту: P2.2 → P3.1 → P3.2 → P3.3


P3b: GDM / gnome-keyring при входе

Код Подзадача Часы Начало Окончание Зависит от
P3.4 Проверить настройки PAM и сессий по docs/troubleshooting/gdm-gnome-keyring-errors.md 0.5 2026-02-14 2026-02-14 P2.2
P3.5 При необходимости обновить пакеты gdm3 и gnome-keyring 0.5 2026-02-14 2026-02-14 P3.4

Связи по Ганту: P2.2 → P3.4 → P3.5


3. Граф зависимостей (для Ганта)

P1.1 ──► P1.2 ──► P1.3 ──► P1.4 ──┬──► P2.1 ──► P2.2 ──┬──► P3.1 ──► P3.2 ──► P3.3
                                  │                    │
                                  │                    └──► P3.4 ──► P3.5

4. Таблица связей «precedes» (Redmine)

Для диаграммы Ганта в Redmine создаются связи типа precedes: «задача A предшествует задаче B».

Задача A (precedes) Задача B (follows)
P1.1 P1.2
P1.2 P1.3
P1.3 P1.4
P1.4 P2.1
P2.1 P2.2
P2.2 P3.1
P2.2 P3.4
P3.1 P3.2
P3.2 P3.3
P3.4 P3.5

5. Регистрация в Redmine

После создания проекта «Повторяющиеся ошибки» (например, скриптом redmine-register-dialog-tasks.py) подзадачи и связи создаются скриптом:

# Контейнер Redmine должен быть запущен
lxc start redmine

# Режим «что будет сделано»
./scripts/redmine-recurring-errors-gantt.py --dry-run

# Создать подзадачи и связи precedes для Ганта
./scripts/redmine-recurring-errors-gantt.py

Требуется REDMINE_API_KEY. Проект и родительские задачи (P1, P2, P3 cockpit, P3 GDM) должны быть созданы первым запуском redmine-register-dialog-tasks.py. Скрипт Ганта ищет их в проекте по темам и при создании подзадач выставляет parent_issue_id, затем создаёт связи «precedes». Если подзадачи были созданы без родителя, привязать вручную: ./scripts/redmine-update-issue.py ISSUE_ID --parent-id PARENT_ID.

Диаграмма Ганта: https://tasks.cdto.group/projects/recurring-errors-2026-02-11 (вкладка «Диаграмма Ганта»).

5.1 Отражение динамики в трекере

При выполнении задач обновляйте статус и добавляйте заметки в Redmine:

# Перевести задачу в работу (заменить ISSUE_ID на номер, например 20)
./scripts/redmine-update-issue.py ISSUE_ID --status "в работе"

# Закрыть задачу с заметкой
./scripts/redmine-update-issue.py ISSUE_ID --status "решена" --notes "Краткое описание выполненного."

Доступные статусы: новая, в работе, решена, закрыта, нужен отклик, отклонена. Список: при ошибке скрипт выведет доступные имена.


6. Связанные документы


Декомпозиция подготовлена для проекта «Повторяющиеся ошибки» в Redmine (tasks.cdto.group).