Run / Task lifecycle (контракт на v1)

Центральная машина переходов: iobackup/internal/storage/lifecycle.go (TransitionRun, TransitionTask). Статусы в API/CLI используют те же литералы, что модель хранилища (internal/storage/models.go).

Статусы Run

Разрешённые траектории:

Смысл итоговых статусов (агрегируются после задач):

Статус Когда используется сегодня
success Нет упавших задач, все задачи считаются успешными циклом оператора backup.
partial_success Есть смесь успеха и ошибок задач без fail-fast.
failed По крайней мере одна обязательная задача упала или fail-fast оборвал цепочку.
cancelled Ручной CancelRun; не используется для «мягкой» ошибки задачи.
timeout Зарезервирован доменным значением; фактический таймер job см. дорожную карту docs/operator/timeouts-and-cancellation.md.

Статусы TaskRun

Skipped-задача не производит успешный backup-артефакт при текущих провайдерах backup; поле сохранено для будущего optional профиля.

Связь с операциями

Реализующая логика: internal/agent/service.go: