|
2 | 2 |
|
3 | 3 | **Status:** Draft |
4 | 4 |
|
5 | | -**Last Updated:** 2026-08-01 |
| 5 | +**Last Updated:** 2026-07-31 |
6 | 6 |
|
7 | 7 | **Related:** [DAG-Based Concurrent Execution](./dag-concurrent-execution.md), [Component Dependencies](./component-dependencies.md), [PR #2667](https://github.com/cloudposse/atmos/pull/2667) |
8 | 8 |
|
@@ -345,7 +345,7 @@ helm/foundation-release |
345 | 345 | └── success ───────────────────────▶ dependent nodes become ready |
346 | 346 | │ |
347 | 347 | ▼ |
348 | | - helm/dependent-release |
| 348 | + helm/dependent-release |
349 | 349 | ``` |
350 | 350 |
|
351 | 351 | The following rules apply: |
@@ -384,7 +384,7 @@ Required propagation includes: |
384 | 384 | - Graph-backed bulk execution. |
385 | 385 | - Release-history lookup where supported by the SDK. |
386 | 386 | - Install and upgrade `RunWithContext`. |
387 | | -- Delete when the SDK exposes context-aware behavior; otherwise cancellation is checked before and after the action and bounded by the configured timeout. |
| 387 | +- Delete wait and hook phases through Helm uninstall wait options. Helm 4 does not accept a context for the uninstall request itself, so cancellation is also checked before and after the action and the operation remains bounded by the configured timeout. |
388 | 388 | - External delivery and rendering call sites, without changing their timeout configuration in this PRD. |
389 | 389 |
|
390 | 390 | Scheduler cancellation or an operating-system signal must prevent new dependent nodes from starting and cancel the active Helm action. Atmos must not replace a cancelled context with a fresh background context for rollback. Helm's built-in rollback-on-failure behavior remains responsible for its documented interrupted-release semantics. |
@@ -419,19 +419,19 @@ The processed map and flag inputs normalize into one internal value before actio |
419 | 419 |
|
420 | 420 | ```go |
421 | 421 | type releaseLifecycle struct { |
422 | | - RollbackOnFailure bool |
423 | | - WaitStrategy kube.WaitStrategy |
424 | | - WaitForJobs bool |
425 | | - Timeout time.Duration |
426 | | - CleanupOnFail bool |
427 | | - MaxHistory int |
428 | | - DisableChartHooks bool |
429 | | - SkipCRDs bool |
| 422 | + RollbackOnFailure bool |
| 423 | + WaitStrategy kube.WaitStrategy |
| 424 | + WaitForJobs bool |
| 425 | + Timeout time.Duration |
| 426 | + CleanupOnFail bool |
| 427 | + MaxHistory int |
| 428 | + DisableChartHooks bool |
| 429 | + SkipCRDs bool |
430 | 430 | } |
431 | 431 |
|
432 | 432 | type releaseLifecycleResolution struct { |
433 | | - Policy releaseLifecycle |
434 | | - TimeoutExplicit bool |
| 433 | + Policy releaseLifecycle |
| 434 | + TimeoutExplicit bool |
435 | 435 | } |
436 | 436 | ``` |
437 | 437 |
|
@@ -479,6 +479,15 @@ During the timeout migration release, schema generation and stack processing MUS |
479 | 479 | | `DisableChartHooks` | `DisableHooks` | `DisableHooks` | `DisableHooks` | |
480 | 480 | | `SkipCRDs` | Set | — | — | |
481 | 481 |
|
| 482 | +Dry-run is execution intent, not release lifecycle policy, and therefore remains outside `releaseLifecycle`. The command-to-provider path MUST propagate it independently to `Install.DryRun` or `Upgrade.DryRun` for apply/deploy and `Uninstall.DryRun` for delete. |
| 483 | + |
| 484 | +| Atmos operation | Provider operation | Helm timeout and recovery behavior | |
| 485 | +| --- | --- | --- | |
| 486 | +| apply/deploy, no release history | Install | `Install.Timeout`; on failure, `RollbackOnFailure` performs Helm's internal uninstall recovery using the same action configuration. | |
| 487 | +| apply/deploy, existing release | Upgrade | `Upgrade.Timeout`; on failure, `RollbackOnFailure` performs Helm's internal rollback, with `CleanupOnFail` applied when configured. | |
| 488 | +| Helm internal upgrade recovery | Rollback | Helm propagates the upgrade timeout and wait configuration into its internal rollback action; Atmos returns the original operation as failed even when recovery succeeds. | |
| 489 | +| delete | Uninstall | `Uninstall.Timeout`; no automatic recovery action follows an uninstall failure. | |
| 490 | + |
482 | 491 | Action mapping should live in small, unit-testable helpers. The scheduler and command packages must not import Helm SDK action types merely to configure lifecycle policy. |
483 | 492 |
|
484 | 493 | ### Command Flags |
|
0 commit comments