ADR-005: Rollback i failure semantics

Decyzja

  1. Deploy release-based — nie destrukcyjny sync do aktywnego /httpdocs; aktywacja atomowa (current / previous) — CURRENT (PR7).
  2. Recipe policy (on_fail): halt (domyślne, legacy) \| continue \| ticket \| rollback.
  3. Dwa osobne procesy rollbacku:
  4. Stany planu bogatsze niż boolean: m.in. applied_unverified, rolled_back, rollback_failed, needs_human, ticket_failed.

CURRENT (orchestrator PR7)

plesk://host/site/command/release-rollback (lub compensationRunner / compensation_uri).

rollback_failed

Gdy compensation niedostępna, connector niedostępny, lub verify po rollbacku fail:

  1. Ustaw rollback_failed (plan nie completed, nie ciche ok: true).
  2. Retry content rollback: max 2 dodatkowe próby activate(previous) z backoff (1s / 3s) — tylko gdy release API dostępne.
  3. Po wyczerpaniu → critical ticket (needs_human, label rollback_failed) z release_id / previous_release / ostatnim błędem — bez sekretów.
  4. DNS rollback nie jest automatyczną konsekwencją rollback_failed treści.

GitHub Pages vs last_known_good

GitHub Pages nie jest healthy last_known_good dla treści wdrożonej na Plesk:

Konsekwencje