Skip to content

feat: add Helm lifecycle reporting and integration coverage - #2849

Open
Mikhail Shirkov (shirkevich) wants to merge 62 commits into
codex/helm-lifecycle-contextfrom
codex/helm-lifecycle-k3s
Open

feat: add Helm lifecycle reporting and integration coverage#2849
Mikhail Shirkov (shirkevich) wants to merge 62 commits into
codex/helm-lifecycle-contextfrom
codex/helm-lifecycle-k3s

Conversation

@shirkevich

@shirkevich Mikhail Shirkov (shirkevich) commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

what

  • Add actionable native Helm operation errors and canonical release data to CI job summaries.
  • Report the selected action and effective wait strategy before Helm runs, including recovery-driven hookOnly to watcher promotion.
  • Execute bulk delete in reverse dependency order so dependents are removed before their dependencies.
  • Track resolved native Helm values_files targets in --affected selection, including files outside the chart directory.
  • Document the approved nested release hierarchy, operation-specific flags, external delivery behavior, migration defaults, and dependency completion semantics.
  • Keep the public Helm example as a small happy path and move deterministic lifecycle, DAG, and failure fixtures to tests/fixtures/scenarios/helm-lifecycle.
  • Add release-history regression coverage for bounded and explicitly unlimited retention.

This is 4 of 4 in the native Helm lifecycle stack and is based on #2848:

  1. docs: define native Helm release lifecycle #2846 — approved PRD and public contract
  2. feat: implement native Helm release lifecycle controls #2847 — release model, schema, CLI, and Helm actions
  3. feat: propagate component execution context #2848 — execution context and cancellation propagation
  4. feat: add Helm lifecycle reporting and integration coverage #2849 — operational reporting, documentation, and integration coverage

why

  • Effective lifecycle values must be visible using the same canonical names as stack configuration.
  • Timeout failures must identify the selected operation, release, namespace, wait strategy, effective duration, and the configuration source that supplied it.
  • Cluster integration coverage proves Helm behavior that in-memory action tests cannot establish, especially hooks, recovery, cleanup, readiness, and dependency gating.
  • Bulk --affected execution must react to the files whose values are rendered, not only to changes in the values_files list itself.
  • Teardown must preserve dependency availability until every consuming release has been removed.

validation

  • 660 affected Go tests pass across Helm, Helm CI summaries, CLI, component dispatch, and schemas.
  • Focused post-rebase validation passes 8 masking/CLI tests and 445 Helm execution, context, and cancellation tests.
  • 10 focused native Helm affected tests and 33 changed-file index tests pass, including an aliased component whose values file is outside components/helm and an unrelated-file negative control.
  • 393 complete native Helm and component-graph tests pass after adding effective-policy reporting and reverse-delete regressions.
  • A live ten-release stack was fully deleted and rebuilt from scratch on Helm 4.2.3. Normalized release state, 2,513 rendered manifest lines, Deployments, Services, Ingresses, ServiceAccounts, and 191 environment keys matched the original; nine releases outside the stack were untouched.
  • A forced tier-zero upgrade failure returned non-zero, preserved the running workload, blocked seven direct and two transitive dependents without revision changes, retained both the original timeout and rollback causes, and recovered with a plain bulk apply.
  • Apply dry-run left revisions unchanged. Affected detection passed across five change locations, with the expected transitive closure when dependents were included.
  • Live verification confirms recovery-driven hookOnly to watcher promotion is reported before the action at the default log level with its field path and machine-readable code; Debug output distinguishes derived policy from a directly configured watcher.
  • Live bulk-delete dry-run is the strict reverse of apply order, and pairwise graph checks confirm every direct and transitive dependent precedes each dependency. Both verification dry-runs left all 19 releases deployed and every workload healthy.
  • The restored public example passes validate, template, emulator startup, diff, apply, resource checks, delete, and teardown using the current branch binary.\n- The isolated lifecycle scenario renders with --dependency-update; six objects include both weighted hooks and the preserved inline Helm template expression, and its full k3s workflow passes end to end.
  • describe component confirms deep-merged stack and component release policy.
  • MDX Prettier 3.6.2 and git diff --check pass.

references

Summary by CodeRabbit

  • New Features

    • Added Helm lifecycle controls for waiting, timeouts, rollback, cleanup, history limits, hooks, CRDs, dry runs, and dependency updates.
    • Added aggregate plan/apply CI summaries with component results, diffs, errors, and durations.
    • Added lifecycle details and external-target status to Helm reports.
    • Helm deletions now remove dependent releases before their dependencies.
  • Bug Fixes

    • Improved values-file change detection and release-operation error context.
  • Documentation

    • Expanded Helm lifecycle, configuration, reporting, and migration guidance.

@atmos-pro

atmos-pro Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Tip

Atmos Pro  

No affected stacks workflow was detected for this pull request.
If this is expected, no action is needed.
Learn More. Ask AI.

@github-actions github-actions Bot added the size/m Medium size PR label Jul 31, 2026
@mergify mergify Bot added the stacked Stacked label Jul 31, 2026
@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues found.

Scanned Files

None

@shirkevich Mikhail Shirkov (shirkevich) changed the title codex/helm lifecycle k3s feat: add Helm lifecycle reporting and integration coverage Jul 31, 2026
@shirkevich Mikhail Shirkov (shirkevich) added the patch A minor, backward compatible change label Jul 31, 2026
@github-actions

Copy link
Copy Markdown

Resource Changes Found for bucket in test

Atmos CI

create

Plan: 4 to add, 0 to change, 0 to destroy.
To reproduce this locally, run:

atmos terraform plan bucket -s test

Create

+ aws_s3_bucket.checkov_target
+ aws_s3_bucket.this
+ aws_s3_bucket.trivy_target
+ aws_s3_bucket_public_access_block.trivy_target
Terraform Plan Summary
  # aws_s3_bucket.checkov_target will be created
  + resource "aws_s3_bucket" "checkov_target" {
      + acceleration_status         = (known after apply)
      + acl                         = (known after apply)
      + arn                         = (known after apply)
      + bucket                      = "atmos-native-ci-e2e-checkov-test"
      + bucket_domain_name          = (known after apply)
      + bucket_prefix               = (known after apply)
      + bucket_regional_domain_name = (known after apply)
      + force_destroy               = false
      + hosted_zone_id              = (known after apply)
      + id                          = (known after apply)
      + object_lock_enabled         = (known after apply)
      + policy                      = (known after apply)
      + region                      = (known after apply)
      + request_payer               = (known after apply)
      + tags_all                    = (known after apply)
      + website_domain              = (known after apply)
      + website_endpoint            = (known after apply)

      + cors_rule (known after apply)

      + grant (known after apply)

      + lifecycle_rule (known after apply)

      + logging (known after apply)

      + object_lock_configuration (known after apply)

      + replication_configuration (known after apply)

      + server_side_encryption_configuration (known after apply)

      + versioning (known after apply)

      + website (known after apply)
    }

  # aws_s3_bucket.this will be created
  + resource "aws_s3_bucket" "this" {
      + acceleration_status         = (known after apply)
      + acl                         = (known after apply)
      + arn                         = (known after apply)
      + bucket                      = "atmos-native-ci-e2e-test"
      + bucket_domain_name          = (known after apply)
      + bucket_prefix               = (known after apply)
      + bucket_regional_domain_name = (known after apply)
      + force_destroy               = false
      + hosted_zone_id              = (known after apply)
      + id                          = (known after apply)
      + object_lock_enabled         = (known after apply)
      + policy                      = (known after apply)
      + region                      = (known after apply)
      + request_payer               = (known after apply)
      + tags                        = {
          + "AtmosFixture" = "native-ci-e2e"
          + "Stage"        = "test"
        }
      + tags_all                    = {
          + "AtmosFixture" = "native-ci-e2e"
          + "Stage"        = "test"
        }
      + website_domain              = (known after apply)
      + website_endpoint            = (known after apply)

      + cors_rule (known after apply)

      + grant (known after apply)

      + lifecycle_rule (known after apply)

      + logging (known after apply)

      + object_lock_configuration (known after apply)

      + replication_configuration (known after apply)

      + server_side_encryption_configuration (known after apply)

      + versioning (known after apply)

      + website (known after apply)
    }

  # aws_s3_bucket.trivy_target will be created
  + resource "aws_s3_bucket" "trivy_target" {
      + acceleration_status         = (known after apply)
      + acl                         = (known after apply)
      + arn                         = (known after apply)
      + bucket                      = "atmos-native-ci-e2e-trivy-test"
      + bucket_domain_name          = (known after apply)
      + bucket_prefix               = (known after apply)
      + bucket_regional_domain_name = (known after apply)
      + force_destroy               = false
      + hosted_zone_id              = (known after apply)
      + id                          = (known after apply)
      + object_lock_enabled         = (known after apply)
      + policy                      = (known after apply)
      + region                      = (known after apply)
      + request_payer               = (known after apply)
      + tags_all                    = (known after apply)
      + website_domain              = (known after apply)
      + website_endpoint            = (known after apply)

      + cors_rule (known after apply)

      + grant (known after apply)

      + lifecycle_rule (known after apply)

      + logging (known after apply)

      + object_lock_configuration (known after apply)

      + replication_configuration (known after apply)

      + server_side_encryption_configuration (known after apply)

      + versioning (known after apply)

      + website (known after apply)
    }

  # aws_s3_bucket_public_access_block.trivy_target will be created
  + resource "aws_s3_bucket_public_access_block" "trivy_target" {
      + block_public_acls       = true
      + block_public_policy     = true
      + bucket                  = (known after apply)
      + id                      = (known after apply)
      + ignore_public_acls      = true
      + restrict_public_buckets = true
    }

Plan: 4 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + bucket_name = "atmos-native-ci-e2e-test"

@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) full review

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Native Helm lifecycle support now includes contextual errors, lifecycle reporting, reverse dependency deletion, aggregate CI summaries, affected-file detection, documentation, and expanded end-to-end examples.

Changes

Helm lifecycle support

Layer / File(s) Summary
Lifecycle execution and graph ordering
errors/errors.go, pkg/component/helm/*, pkg/component/graph.go
Added contextual Helm operation errors, post-override lifecycle derivation, release-history coverage, reverse dependency execution, skip observation, and bulk execution wiring.
Bulk Helm CI aggregation
pkg/schema/schema.go, pkg/hooks/event.go, pkg/component/helm/aggregate_ci.go, pkg/ci/plugins/helm/aggregate.go
Collected deterministic per-component results and rendered bounded aggregate plan/apply summaries with statuses, metadata, diffs, errors, and durations.
Lifecycle summary reporting
pkg/ci/plugins/helm/plugin.go, pkg/ci/plugins/helm/templates/*.md
Propagated lifecycle data into summaries and rendered cluster-backed and external-target details.
Native Helm affected-file detection
internal/exec/describe_affected_*.go
Indexed normalized paths and detected changes to configured native Helm values files, including files outside component directories.
Examples, documentation, and validation
examples/helm/**, website/docs/..., docs/..., .github/workflows/test.yml, .pre-commit-config.yaml
Added lifecycle examples and documentation for waiting, hooks, jobs, CRDs, dry runs, rollback, cleanup, dependency ordering, dependency updates, and bounded k3s diagnostics.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Sequence Diagram(s)

sequenceDiagram
  participant HelmBulkExecutor
  participant HelmCollector
  participant HelmProvider
  participant HelmAggregateHook
  HelmBulkExecutor->>HelmCollector: initialize bulk collection
  HelmProvider->>HelmCollector: record component result
  HelmBulkExecutor->>HelmCollector: build sorted HelmCIResultSet
  HelmBulkExecutor->>HelmAggregateHook: emit aggregate plan or apply event
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 13.54% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the primary changes: Helm lifecycle reporting and expanded integration coverage.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/helm-lifecycle-k3s

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pkg/component/helm/client.go (1)

190-199: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Do not claim cancellable delete execution.

client.Run(spec.ReleaseName) does not receive a context.Context, so ctx.Err() after the call cannot stop an in-progress uninstall. Helm 4 only exposes RunWithContext for Install/Upgrade; Uninstall.Run is the available API here.

  • pkg/component/helm/client.go#L190-L199: Document delete cancellation clearly only if it is supported; otherwise do not treat context.Canceled as propagated through Uninstall.Run.
  • docs/fixes/2026-08-01-native-helm-release-lifecycle.md#L5-L9: Limit the cancellation claim to supported operations unless delete cancellation is implemented safely.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/component/helm/client.go` around lines 190 - 199, Remove the post-call
ctx.Err() cancellation handling from the delete path around client.Run in
pkg/component/helm/client.go, since Uninstall.Run is not context-aware; retain
release-not-found handling and releaseOperationError propagation. Update
docs/fixes/2026-08-01-native-helm-release-lifecycle.md to limit cancellation
claims to operations that support context cancellation, without claiming
cancellable delete execution.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/fixes/2026-08-01-native-helm-release-lifecycle.md`:
- Line 3: Update the Date field in the release lifecycle document to use the
current release-note date, July 31, 2026, instead of the future date August 1,
2026.

In `@examples/helm/components/helm/demo/templates/job.yaml`:
- Line 1: Exclude the Helm templates from raw YAML validation, or configure
pre-commit to run check-yaml against manifests rendered by helm template
instead. Apply this to
examples/helm/components/helm/demo/templates/job.yaml#L1-L1,
deployment.yaml#L18-L18, extra-configmap.yaml#L1-L1,
hook-order-configmap.yaml#L1-L1, hook-order-job.yaml#L1-L1, and
failing-hook-job.yaml#L1-L1; each site requires exclusion from raw validation or
coverage through rendered-manifest validation.

In `@examples/helm/components/helm/demo/templates/ready-marker.yaml`:
- Around line 1-13: Exclude the Helm chart template directory containing
ready-marker.yaml from the repo-level pre-commit check-yaml hook, covering
sibling templates with leading Go-template directives as well. Preserve YAML
validation for non-template files and do not modify the rendered ConfigMap
template.

---

Outside diff comments:
In `@pkg/component/helm/client.go`:
- Around line 190-199: Remove the post-call ctx.Err() cancellation handling from
the delete path around client.Run in pkg/component/helm/client.go, since
Uninstall.Run is not context-aware; retain release-not-found handling and
releaseOperationError propagation. Update
docs/fixes/2026-08-01-native-helm-release-lifecycle.md to limit cancellation
claims to operations that support context cancellation, without claiming
cancellable delete execution.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0ca7db25-a005-47d1-8154-f031dbf38c66

📥 Commits

Reviewing files that changed from the base of the PR and between b71f180 and e395efd.

📒 Files selected for processing (27)
  • docs/fixes/2026-08-01-native-helm-release-lifecycle.md
  • errors/errors.go
  • examples/helm/README.md
  • examples/helm/atmos.yaml
  • examples/helm/components/helm/demo/crds/lifecycle.atmos.test_widgets.yaml
  • examples/helm/components/helm/demo/templates/deployment.yaml
  • examples/helm/components/helm/demo/templates/extra-configmap.yaml
  • examples/helm/components/helm/demo/templates/failing-hook-job.yaml
  • examples/helm/components/helm/demo/templates/hook-order-configmap.yaml
  • examples/helm/components/helm/demo/templates/hook-order-job.yaml
  • examples/helm/components/helm/demo/templates/job.yaml
  • examples/helm/components/helm/demo/templates/ready-marker.yaml
  • examples/helm/components/helm/demo/values.yaml
  • examples/helm/stacks/deploy/dev.yaml
  • pkg/ci/plugins/helm/plugin.go
  • pkg/ci/plugins/helm/plugin_test.go
  • pkg/ci/plugins/helm/templates/apply.md
  • pkg/ci/plugins/helm/templates/delete.md
  • pkg/component/helm/client.go
  • pkg/component/helm/client_lifecycle_test.go
  • pkg/component/helm/client_test.go
  • website/docs/ci/job-summaries.mdx
  • website/docs/cli/commands/helm/helm-apply.mdx
  • website/docs/cli/commands/helm/helm-delete.mdx
  • website/docs/cli/commands/helm/usage.mdx
  • website/docs/cli/configuration/components/helm.mdx
  • website/docs/stacks/components/helm.mdx

Comment thread docs/fixes/2026-08-01-native-helm-release-lifecycle.md Outdated
Comment thread examples/helm/components/helm/demo/templates/ready-marker.yaml Outdated
@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) full review

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 33 minutes.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 1, 2026
@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) full review

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (2)
pkg/component/helm/client_test.go (1)

100-120: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Cover release operation error wrapping at each boundary.

Add behavior-focused tests for installRelease and upgradeRelease error paths that assert errUtils.ErrHelmReleaseOperation and the underlying cause. Add explicit errUtils.ErrHelmReleaseOperation coverage for delete operations that fail, including delete not-found when that is not treated as success by the in-memory/stacked contract. Keep the existing applyRelease cancellation coverage, or move the coverage focus to the relevant operation boundary.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/component/helm/client_test.go` around lines 100 - 120, Extend the tests
around installRelease and upgradeRelease to verify operation errors wrap both
errUtils.ErrHelmReleaseOperation and the original cause. Add deleteRelease
failure tests, including the not-found case when the in-memory/stacked contract
treats it as an error, while preserving existing applyRelease cancellation
coverage or moving it to the appropriate operation boundary.

Source: Coding guidelines

pkg/component/helm/client.go (1)

207-221: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use the repository error builder for this contextual error.

releaseOperationError preserves the Helm error cause and marks the operation sentinel, so Build(errUtils.ErrHelmReleaseOperation).WithCause(cause) matches the existing builder contract. Use WithContext for the lifecycle fields, or attach them via the standard message before the cause.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/component/helm/client.go` around lines 207 - 221, Update
releaseOperationError to use the repository error builder: construct the error
with Build(errUtils.ErrHelmReleaseOperation), attach cause via WithCause(cause),
and preserve the operation, release, namespace, wait strategy, timeout, and
component-field context through WithContext or the builder’s standard message
mechanism.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@examples/helm/atmos.yaml`:
- Around line 100-103: Update the lifecycle-DAG verification around the helm
apply command to assert ordering, not just that dag-dependent exists: first wait
for or verify the foundation's post-readiness marker, then verify the dependent
hook or Deployment is created. Use the existing marker and resource checks so
the test fails when the dependent runs before foundation readiness.
- Around line 55-57: Extend the lifecycle assertions in the dry-run apply,
rollback, and dry-run delete scenarios around the existing kubectl checks.
Verify Helm release metadata and enumerate the complete expected Kubernetes
resource set: dry-run apply and dry-run delete must leave the release and
resources unchanged, while rollback must leave only the intentionally retained
hook ConfigMap and no other rendered resources.
- Around line 77-79: Update the Job-wait scenario around the `atmos helm apply`
and subsequent `kubectl wait` commands so it deterministically verifies that
apply waited for completion: configure a fixed Job duration and assert the Job
is already complete immediately after `atmos helm apply` returns, rather than
allowing `kubectl wait` to complete it afterward.
- Around line 80-82: Update the validation command following “Disabling chart
hooks” to check both weighted hook resources, including the hook Job and its
side effects or expected deletion policy, rather than only the
demo-no-hooks-hook-order ConfigMap. Keep the command failing when either hook
executes while preserving the existing Helm apply flow.
- Around line 95-99: Update the failed-upgrade verification around the demo
deployment commands to capture the pre-upgrade workload state before invoking
demo-upgrade-fail, then compare the restored Deployment/demo state against that
captured state after rollback. Preserve the existing assertion that cleanup
removes ConfigMap/demo-upgrade-only.
- Around line 83-86: Replace the one-second rollout timeout assertion in the
demo-hook-only validation with a deterministic lifecycle/readiness marker
configured for this scenario. Update the hookOnly setup and corresponding
kubectl check so the test verifies that the marker is absent before readiness
completes, while preserving the later successful Deployment readiness assertion.

In `@pkg/ci/plugins/helm/templates/apply.md`:
- Around line 28-46: Keep Helm template control directives from being
interpreted as Markdown table rows. In pkg/ci/plugins/helm/templates/apply.md
lines 28-46, restructure the operation-specific conditionals around complete
valid table blocks or apply the repository’s template-lint handling while
preserving rendered output; in pkg/ci/plugins/helm/templates/delete.md line 23,
apply the same handling to the closing conditional action. Ensure markdownlint
passes without disabling rendered-output validation.

---

Nitpick comments:
In `@pkg/component/helm/client_test.go`:
- Around line 100-120: Extend the tests around installRelease and upgradeRelease
to verify operation errors wrap both errUtils.ErrHelmReleaseOperation and the
original cause. Add deleteRelease failure tests, including the not-found case
when the in-memory/stacked contract treats it as an error, while preserving
existing applyRelease cancellation coverage or moving it to the appropriate
operation boundary.

In `@pkg/component/helm/client.go`:
- Around line 207-221: Update releaseOperationError to use the repository error
builder: construct the error with Build(errUtils.ErrHelmReleaseOperation),
attach cause via WithCause(cause), and preserve the operation, release,
namespace, wait strategy, timeout, and component-field context through
WithContext or the builder’s standard message mechanism.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6e6e80cb-6511-4986-a279-4c3f2c49c52a

📥 Commits

Reviewing files that changed from the base of the PR and between 2d1f2df and b980fe4.

📒 Files selected for processing (28)
  • .pre-commit-config.yaml
  • docs/fixes/2026-07-31-native-helm-release-lifecycle.md
  • errors/errors.go
  • examples/helm/README.md
  • examples/helm/atmos.yaml
  • examples/helm/components/helm/demo/crds/lifecycle.atmos.test_widgets.yaml
  • examples/helm/components/helm/demo/templates/deployment.yaml
  • examples/helm/components/helm/demo/templates/extra-configmap.yaml
  • examples/helm/components/helm/demo/templates/failing-hook-job.yaml
  • examples/helm/components/helm/demo/templates/hook-order-configmap.yaml
  • examples/helm/components/helm/demo/templates/hook-order-job.yaml
  • examples/helm/components/helm/demo/templates/job.yaml
  • examples/helm/components/helm/demo/templates/ready-marker.yaml
  • examples/helm/components/helm/demo/values.yaml
  • examples/helm/stacks/deploy/dev.yaml
  • pkg/ci/plugins/helm/plugin.go
  • pkg/ci/plugins/helm/plugin_test.go
  • pkg/ci/plugins/helm/templates/apply.md
  • pkg/ci/plugins/helm/templates/delete.md
  • pkg/component/helm/client.go
  • pkg/component/helm/client_lifecycle_test.go
  • pkg/component/helm/client_test.go
  • website/docs/ci/job-summaries.mdx
  • website/docs/cli/commands/helm/helm-apply.mdx
  • website/docs/cli/commands/helm/helm-delete.mdx
  • website/docs/cli/commands/helm/usage.mdx
  • website/docs/cli/configuration/components/helm.mdx
  • website/docs/stacks/components/helm.mdx

Comment thread examples/helm/atmos.yaml Outdated
Comment thread examples/helm/atmos.yaml Outdated
Comment thread examples/helm/atmos.yaml Outdated
Comment thread examples/helm/atmos.yaml Outdated
Comment thread examples/helm/atmos.yaml Outdated
Comment thread pkg/ci/plugins/helm/templates/apply.md Outdated
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (2)
website/docs/cli/configuration/components/helm.mdx (1)

57-62: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Document the nested release.* lifecycle keys.

The note currently presents wait_strategy, timeout, on_failure, and max_history as configuration fields. The stack schema uses nested release keys such as release.wait.strategy, release.wait.jobs, release.history.max, and operation-specific keys such as release.install.on_failure. Flat names can cause users to configure values that Atmos ignores.

Verify the exact field names against the lifecycle decoder before updating this note.

#!/bin/bash
set -euo pipefail

rg -n -C 4 \
  'wait_strategy|max_history|release\.wait|release\.history|release\.(install|upgrade)\.on_failure' \
  pkg/component/helm website/docs/stacks/components/helm.mdx
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@website/docs/cli/configuration/components/helm.mdx` around lines 57 - 62,
Update the release-policy note in the Helm documentation to use the exact nested
lifecycle keys from the Helm lifecycle decoder, including release.wait.strategy,
release.wait.jobs, release.history.max, and operation-specific
release.install.on_failure or release.upgrade.on_failure fields. Remove or
replace the flat wait_strategy, timeout, on_failure, and max_history names, and
verify the final names against the decoder and stack documentation.
pkg/ci/plugins/helm/templates/apply.md (1)

39-50: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Keep operation-specific rows inside a valid Markdown table.

When operation is install or upgrade, the blank output around Lines 40-49 terminates the table that starts at Line 31. The rendered summary can show Install CRDs, Cleanup on failure, and Maximum history as standalone pipe text. Remove the blank output, or render a complete table for each operation.

Proposed fix
 {{ else }}
 
 | Field | Value |
 | --- | --- |
 | Operation | `{{ index . "operation" }}` |
 | Wait strategy | `{{ index (index . "wait") "strategy" }}` |
 | Timeout | `{{ index . "timeout" }}` |
 | Chart hooks enabled | `{{ index . "chart_hooks" }}` |
 | Wait for Jobs | `{{ index (index . "wait") "jobs" }}` |
 | On failure | `{{ index . "on_failure" }}` |
 
 {{ if eq (index . "operation") "install" }}
+| Field | Value |
+| --- | --- |
 | Install CRDs | `{{ index . "crds" }}` |
-
 {{ end }}
-
 {{ if eq (index . "operation") "upgrade" }}
+| Field | Value |
+| --- | --- |
 | Cleanup on failure | `{{ index . "cleanup_on_failure" }}` |
 | Maximum history | `{{ index (index . "history") "max" }}` |
-
 {{ end }}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/ci/plugins/helm/templates/apply.md` around lines 39 - 50, Update the
operation-specific conditional blocks in the Helm apply template so their rows
remain part of the table started before the `operation` checks. Remove the blank
output introduced around the `install` and `upgrade` branches while preserving
the existing `Install CRDs`, `Cleanup on failure`, and `Maximum history` rows.
🧹 Nitpick comments (1)
internal/exec/describe_affected_components_test.go (1)

615-730: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use one table-driven test for the values-file scenarios.

These tests repeat the same setup and assertion flow. Use named cases for relative list, scalar, absolute, and unrelated paths. Preserve the specific expected affected result in each case.

As per coding guidelines, “Use table-driven tests for testing multiple scenarios in Go.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/exec/describe_affected_components_test.go` around lines 615 - 730,
Consolidate the four repeated tests into one table-driven test for
processHelmComponentsIndexed, using named cases for relative-list, scalar,
absolute, and unrelated values-file paths. Parameterize the values-file
configuration and changed-file input, then preserve each case’s expected
affected result and existing assertions, including the unrelated case remaining
empty.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@pkg/ci/plugins/helm/templates/apply.md`:
- Around line 39-50: Update the operation-specific conditional blocks in the
Helm apply template so their rows remain part of the table started before the
`operation` checks. Remove the blank output introduced around the `install` and
`upgrade` branches while preserving the existing `Install CRDs`, `Cleanup on
failure`, and `Maximum history` rows.

In `@website/docs/cli/configuration/components/helm.mdx`:
- Around line 57-62: Update the release-policy note in the Helm documentation to
use the exact nested lifecycle keys from the Helm lifecycle decoder, including
release.wait.strategy, release.wait.jobs, release.history.max, and
operation-specific release.install.on_failure or release.upgrade.on_failure
fields. Remove or replace the flat wait_strategy, timeout, on_failure, and
max_history names, and verify the final names against the decoder and stack
documentation.

---

Nitpick comments:
In `@internal/exec/describe_affected_components_test.go`:
- Around line 615-730: Consolidate the four repeated tests into one table-driven
test for processHelmComponentsIndexed, using named cases for relative-list,
scalar, absolute, and unrelated values-file paths. Parameterize the values-file
configuration and changed-file input, then preserve each case’s expected
affected result and existing assertions, including the unrelated case remaining
empty.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0a41cf7d-94b2-43f6-9f4d-f5b7f06161ab

📥 Commits

Reviewing files that changed from the base of the PR and between 3804ff1 and fec8503.

⛔ Files ignored due to path filters (1)
  • examples/helm/components/helm/demo/Chart.lock is excluded by !**/*.lock
📒 Files selected for processing (55)
  • .github/workflows/test.yml
  • .pre-commit-config.yaml
  • docs/fixes/2026-07-31-native-helm-release-lifecycle.md
  • docs/prd/native-helm-release-lifecycle.md
  • errors/errors.go
  • examples/helm/README.md
  • examples/helm/atmos.yaml
  • examples/helm/components/helm/demo/.gitignore
  • examples/helm/components/helm/demo/Chart.yaml
  • examples/helm/components/helm/demo/crds/lifecycle.atmos.test_widgets.yaml
  • examples/helm/components/helm/demo/templates/dependency-observed.yaml
  • examples/helm/components/helm/demo/templates/deployment.yaml
  • examples/helm/components/helm/demo/templates/extra-configmap.yaml
  • examples/helm/components/helm/demo/templates/failing-hook-job.yaml
  • examples/helm/components/helm/demo/templates/hook-order-configmap.yaml
  • examples/helm/components/helm/demo/templates/hook-order-job.yaml
  • examples/helm/components/helm/demo/templates/job.yaml
  • examples/helm/components/helm/demo/templates/tpl-configmap.yaml
  • examples/helm/components/helm/demo/values.yaml
  • examples/helm/components/helm/helm-test-library/Chart.yaml
  • examples/helm/components/helm/helm-test-library/templates/_render.tpl
  • examples/helm/stacks/deploy/dev.yaml
  • internal/exec/describe_affected_changed_files_index.go
  • internal/exec/describe_affected_components.go
  • internal/exec/describe_affected_components_test.go
  • internal/exec/describe_affected_optimizations_test.go
  • pkg/ci/plugins/helm/aggregate.go
  • pkg/ci/plugins/helm/aggregate_test.go
  • pkg/ci/plugins/helm/plugin.go
  • pkg/ci/plugins/helm/plugin_test.go
  • pkg/ci/plugins/helm/templates/apply.md
  • pkg/ci/plugins/helm/templates/delete.md
  • pkg/component/graph.go
  • pkg/component/graph_test.go
  • pkg/component/helm/aggregate_ci.go
  • pkg/component/helm/aggregate_ci_test.go
  • pkg/component/helm/client.go
  • pkg/component/helm/client_lifecycle_test.go
  • pkg/component/helm/client_test.go
  • pkg/component/helm/executor.go
  • pkg/component/helm/executor_bulk.go
  • pkg/component/helm/executor_test.go
  • pkg/component/helm/lifecycle.go
  • pkg/component/helm/lifecycle_test.go
  • pkg/component/helm/provision.go
  • pkg/hooks/event.go
  • pkg/schema/schema.go
  • website/docs/ci/job-summaries.mdx
  • website/docs/cli/commands/helm/helm-apply.mdx
  • website/docs/cli/commands/helm/helm-delete.mdx
  • website/docs/cli/commands/helm/helm-deploy.mdx
  • website/docs/cli/commands/helm/helm-plan.mdx
  • website/docs/cli/commands/helm/usage.mdx
  • website/docs/cli/configuration/components/helm.mdx
  • website/docs/stacks/components/helm.mdx
💤 Files with no reviewable changes (1)
  • pkg/component/helm/provision.go

@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) full review

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/ci/plugins/helm/templates/apply.md`:
- Around line 39-45: Update the conditional table markup surrounding the install
and upgrade branches in the Helm template so rendered output has complete,
consistently formatted table rows and passes markdownlint MD055 and MD056.
Preserve the existing operation-specific fields, and run the repository’s
Markdown lint command to verify the template.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ea28b5ec-7e4b-4e47-b46c-b7baa03493c2

📥 Commits

Reviewing files that changed from the base of the PR and between 3804ff1 and 63d870f.

⛔ Files ignored due to path filters (1)
  • examples/helm/components/helm/demo/Chart.lock is excluded by !**/*.lock
📒 Files selected for processing (55)
  • .github/workflows/test.yml
  • .pre-commit-config.yaml
  • docs/fixes/2026-07-31-native-helm-release-lifecycle.md
  • docs/prd/native-helm-release-lifecycle.md
  • errors/errors.go
  • examples/helm/README.md
  • examples/helm/atmos.yaml
  • examples/helm/components/helm/demo/.gitignore
  • examples/helm/components/helm/demo/Chart.yaml
  • examples/helm/components/helm/demo/crds/lifecycle.atmos.test_widgets.yaml
  • examples/helm/components/helm/demo/templates/dependency-observed.yaml
  • examples/helm/components/helm/demo/templates/deployment.yaml
  • examples/helm/components/helm/demo/templates/extra-configmap.yaml
  • examples/helm/components/helm/demo/templates/failing-hook-job.yaml
  • examples/helm/components/helm/demo/templates/hook-order-configmap.yaml
  • examples/helm/components/helm/demo/templates/hook-order-job.yaml
  • examples/helm/components/helm/demo/templates/job.yaml
  • examples/helm/components/helm/demo/templates/tpl-configmap.yaml
  • examples/helm/components/helm/demo/values.yaml
  • examples/helm/components/helm/helm-test-library/Chart.yaml
  • examples/helm/components/helm/helm-test-library/templates/_render.tpl
  • examples/helm/stacks/deploy/dev.yaml
  • internal/exec/describe_affected_changed_files_index.go
  • internal/exec/describe_affected_components.go
  • internal/exec/describe_affected_components_test.go
  • internal/exec/describe_affected_optimizations_test.go
  • pkg/ci/plugins/helm/aggregate.go
  • pkg/ci/plugins/helm/aggregate_test.go
  • pkg/ci/plugins/helm/plugin.go
  • pkg/ci/plugins/helm/plugin_test.go
  • pkg/ci/plugins/helm/templates/apply.md
  • pkg/ci/plugins/helm/templates/delete.md
  • pkg/component/graph.go
  • pkg/component/graph_test.go
  • pkg/component/helm/aggregate_ci.go
  • pkg/component/helm/aggregate_ci_test.go
  • pkg/component/helm/client.go
  • pkg/component/helm/client_lifecycle_test.go
  • pkg/component/helm/client_test.go
  • pkg/component/helm/executor.go
  • pkg/component/helm/executor_bulk.go
  • pkg/component/helm/executor_test.go
  • pkg/component/helm/lifecycle.go
  • pkg/component/helm/lifecycle_test.go
  • pkg/component/helm/provision.go
  • pkg/hooks/event.go
  • pkg/schema/schema.go
  • website/docs/ci/job-summaries.mdx
  • website/docs/cli/commands/helm/helm-apply.mdx
  • website/docs/cli/commands/helm/helm-delete.mdx
  • website/docs/cli/commands/helm/helm-deploy.mdx
  • website/docs/cli/commands/helm/helm-plan.mdx
  • website/docs/cli/commands/helm/usage.mdx
  • website/docs/cli/configuration/components/helm.mdx
  • website/docs/stacks/components/helm.mdx
💤 Files with no reviewable changes (1)
  • pkg/component/helm/provision.go

Comment thread pkg/ci/plugins/helm/templates/apply.md Outdated
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 6, 2026
@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) full review\n\nPlease review current head 8dee762a93ba607be0ecefc977eba404c8e654c9. The prior current-head finding was fixed by keeping Go-template directives outside complete lifecycle Markdown tables.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@shirkevich I will review the current head 8dee762a93ba607be0ecefc977eba404c8e654c9. I will verify the lifecycle Markdown table fix.

⚠️ Action not completed

Review rate limited.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 13 minutes.

@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) full review\n\nPlease perform the previously rate-limited full review of current head 8dee762a93ba607be0ecefc977eba404c8e654c9.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@shirkevich I will perform the full review for current head 8dee762a93ba607be0ecefc977eba404c8e654c9.

✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
internal/exec/describe_affected_components_test.go (1)

632-635: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Cover a matching []string values_files entry.

The only []string case uses an unrelated changed file. A regression that drops or misresolves the []string branch can still pass. Add a matching []string{valuesRef} row and retain the []any row.

As per coding guidelines, “Prefer behavior-focused, table-driven unit tests with mocks; avoid tautological, stub, always-skipped, or coverage-only tests and target at least 85% coverage.”

Proposed test case
 	}{
 		{name: "relative list", valuesFiles: []any{valuesRef}, changedFile: valuesFile, wantAffected: true},
+		{name: "typed relative list", valuesFiles: []string{valuesRef}, changedFile: valuesFile, wantAffected: true},
 		{name: "scalar", valuesFiles: valuesRef, changedFile: valuesFile, wantAffected: true},
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/exec/describe_affected_components_test.go` around lines 632 - 635,
Extend the table-driven cases in the affected-components test to include a
matching []string{valuesRef} valuesFiles entry with changedFile set to
valuesFile and wantAffected true. Retain the existing matching []any{valuesRef}
case and the unrelated []string case.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@internal/exec/describe_affected_components_test.go`:
- Around line 632-635: Extend the table-driven cases in the affected-components
test to include a matching []string{valuesRef} valuesFiles entry with
changedFile set to valuesFile and wantAffected true. Retain the existing
matching []any{valuesRef} case and the unrelated []string case.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 1da0b3da-fbaf-4500-bfa1-8643f8da0c23

📥 Commits

Reviewing files that changed from the base of the PR and between 3804ff1 and 8dee762.

⛔ Files ignored due to path filters (1)
  • examples/helm/components/helm/demo/Chart.lock is excluded by !**/*.lock
📒 Files selected for processing (55)
  • .github/workflows/test.yml
  • .pre-commit-config.yaml
  • docs/fixes/2026-07-31-native-helm-release-lifecycle.md
  • docs/prd/native-helm-release-lifecycle.md
  • errors/errors.go
  • examples/helm/README.md
  • examples/helm/atmos.yaml
  • examples/helm/components/helm/demo/.gitignore
  • examples/helm/components/helm/demo/Chart.yaml
  • examples/helm/components/helm/demo/crds/lifecycle.atmos.test_widgets.yaml
  • examples/helm/components/helm/demo/templates/dependency-observed.yaml
  • examples/helm/components/helm/demo/templates/deployment.yaml
  • examples/helm/components/helm/demo/templates/extra-configmap.yaml
  • examples/helm/components/helm/demo/templates/failing-hook-job.yaml
  • examples/helm/components/helm/demo/templates/hook-order-configmap.yaml
  • examples/helm/components/helm/demo/templates/hook-order-job.yaml
  • examples/helm/components/helm/demo/templates/job.yaml
  • examples/helm/components/helm/demo/templates/tpl-configmap.yaml
  • examples/helm/components/helm/demo/values.yaml
  • examples/helm/components/helm/helm-test-library/Chart.yaml
  • examples/helm/components/helm/helm-test-library/templates/_render.tpl
  • examples/helm/stacks/deploy/dev.yaml
  • internal/exec/describe_affected_changed_files_index.go
  • internal/exec/describe_affected_components.go
  • internal/exec/describe_affected_components_test.go
  • internal/exec/describe_affected_optimizations_test.go
  • pkg/ci/plugins/helm/aggregate.go
  • pkg/ci/plugins/helm/aggregate_test.go
  • pkg/ci/plugins/helm/plugin.go
  • pkg/ci/plugins/helm/plugin_test.go
  • pkg/ci/plugins/helm/templates/apply.md
  • pkg/ci/plugins/helm/templates/delete.md
  • pkg/component/graph.go
  • pkg/component/graph_test.go
  • pkg/component/helm/aggregate_ci.go
  • pkg/component/helm/aggregate_ci_test.go
  • pkg/component/helm/client.go
  • pkg/component/helm/client_lifecycle_test.go
  • pkg/component/helm/client_test.go
  • pkg/component/helm/executor.go
  • pkg/component/helm/executor_bulk.go
  • pkg/component/helm/executor_test.go
  • pkg/component/helm/lifecycle.go
  • pkg/component/helm/lifecycle_test.go
  • pkg/component/helm/provision.go
  • pkg/hooks/event.go
  • pkg/schema/schema.go
  • website/docs/ci/job-summaries.mdx
  • website/docs/cli/commands/helm/helm-apply.mdx
  • website/docs/cli/commands/helm/helm-delete.mdx
  • website/docs/cli/commands/helm/helm-deploy.mdx
  • website/docs/cli/commands/helm/helm-plan.mdx
  • website/docs/cli/commands/helm/usage.mdx
  • website/docs/cli/configuration/components/helm.mdx
  • website/docs/stacks/components/helm.mdx
💤 Files with no reviewable changes (1)
  • pkg/component/helm/provision.go

@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) review\n\nPlease review current head 1c61fdeb80efec410c5c328dd347cc1e8fa38439. This head only adds the matching typed []string values_files regression case requested by the completed full review.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@shirkevich I will review current head 1c61fdeb80efec410c5c328dd347cc1e8fa38439. I will verify the typed []string values_files regression case.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 6, 2026
@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) review\n\nPlease review current head 63ff5bd63461fadb70a3aa8a127200a2d975c3ba. This head only scopes demo-jobs teardown to the legacy wait strategy after repeated Helm watcher timeouts occurred after resources were already deleted; install watcher and other delete watcher coverage remain intact.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@shirkevich I will review current head 63ff5bd63461fadb70a3aa8a127200a2d975c3ba. I will verify that demo-jobs teardown uses the legacy wait strategy and that watcher coverage remains for install and other delete cases.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 6, 2026
@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) review

Please review current head ad465c188d670d6ee5041bd7953e26bc908e0389.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@shirkevich I will review current head ad465c188d670d6ee5041bd7953e26bc908e0389.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 6, 2026
@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) review

Please review current head 784d37a96acfd25202c003c76deb270f429c2b5d.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@shirkevich I will review current head 784d37a96acfd25202c003c76deb270f429c2b5d.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-cloudposse Needs Cloud Posse assistance patch A minor, backward compatible change size/l Large size PR stacked Stacked

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant