Skip to content

Commit 1b7cf18

Browse files
committed
docs: address Helm lifecycle review feedback
1 parent 02b9846 commit 1b7cf18

1 file changed

Lines changed: 22 additions & 13 deletions

File tree

docs/prd/native-helm-release-lifecycle.md

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**Status:** Draft
44

5-
**Last Updated:** 2026-08-01
5+
**Last Updated:** 2026-07-31
66

77
**Related:** [DAG-Based Concurrent Execution](./dag-concurrent-execution.md), [Component Dependencies](./component-dependencies.md), [PR #2667](https://github.com/cloudposse/atmos/pull/2667)
88

@@ -345,7 +345,7 @@ helm/foundation-release
345345
└── success ───────────────────────▶ dependent nodes become ready
346346
347347
348-
helm/dependent-release
348+
helm/dependent-release
349349
```
350350

351351
The following rules apply:
@@ -384,7 +384,7 @@ Required propagation includes:
384384
- Graph-backed bulk execution.
385385
- Release-history lookup where supported by the SDK.
386386
- 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.
388388
- External delivery and rendering call sites, without changing their timeout configuration in this PRD.
389389

390390
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
419419

420420
```go
421421
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
430430
}
431431
432432
type releaseLifecycleResolution struct {
433-
Policy releaseLifecycle
434-
TimeoutExplicit bool
433+
Policy releaseLifecycle
434+
TimeoutExplicit bool
435435
}
436436
```
437437

@@ -479,6 +479,15 @@ During the timeout migration release, schema generation and stack processing MUS
479479
| `DisableChartHooks` | `DisableHooks` | `DisableHooks` | `DisableHooks` |
480480
| `SkipCRDs` | Set | — | — |
481481

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+
482491
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.
483492

484493
### Command Flags

0 commit comments

Comments
 (0)