github cloudposse/atmos v1.225.0-rc.1

pre-release4 hours ago
Support parent-scoped multi-file stacks @osterman (#2787) ## what
  • Support one logical stack across multiple top-level parent manifests without merging parent scopes.
  • Keep each parent's metadata.inherits graph self-contained while canonicalizing equivalent imported duplicates by lexical parent path.
  • Add the top-level stack composition PRD and regression fixtures for naming, conflicts, isolation, explicit imports, and invalid inheritance.

why

  • Multiple top-level files that represented layers of the same logical stack were previously rejected or treated independently.
  • This enables aggregate component discovery without implicitly making another parent's imports part of a manifest's inheritance dependencies.
  • Shared inheritance bases remain intentional and reviewable through each parent's normal import graph.

references

  • docs/prd/top-level-stack-composition.md

Summary by CodeRabbit

  • New Features

    • Added parent-scoped multi-file stack discovery: multiple top-level parent manifests with the same stack identity are composed into one logical stack.
    • Kept parent-specific imports/globals/locals/component config isolated while aggregating components across parents.
    • Enabled controlled component inheritance within the composed logical stack.
  • Bug Fixes

    • Duplicate component configurations now resolve deterministically.
    • Conflicting duplicates and unsupported peer-only inheritance are rejected with clearer diagnostics.
  • Documentation

    • Added a PRD and published a blog post on parent-scoped multi-file stacks.
    • Updated the public roadmap to mark the feature as shipped.
feat(stacks): support global-scope metadata defaults @osterman (#2808) ## what
  • Adds support for a restricted allowlist of metadata fields (labels, tags, custom, enabled, locked, terraform_workspace_pattern) at the stack-manifest root, deep-merged into every component's own metadata as a stack-wide default.
  • Merge precedence, lowest to highest: global (stack-wide) → the metadata.inherits base-component chain → the component's own local metadata: block, which always wins.
  • Component-identity fields (component, inherits, type, name, terraform_workspace) remain component-only; setting one of these at global scope is now a hard validation error, both at runtime and via the manifest JSON Schema, instead of a silent no-op.
  • Updates metadata.mdx docs and adds a changelog post explaining the new global scope.

why

  • A stack-wide metadata: block (e.g. in _defaults.yaml) was previously accepted by the schema but never applied — metadata.labels/metadata.tags/etc. set there silently did nothing, which is worse than an error, since users had no signal their config wasn't taking effect.
  • Sharing labels, tags, or a stack-wide lock/enable flag across every component in a stack required copy-pasting the same metadata block into each component definition instead of declaring it once.

references

Summary by CodeRabbit

  • New Features

    • Added stack-root metadata: defaults that are deep-merged into each component’s metadata.
    • Enforced 3-tier precedence: stack defaults → metadata.inherits chain (when enabled) → component-local metadata.
  • Validation & Tests

    • Added schema allowlisting for stack-scope metadata (only labels, tags, custom, enabled, locked, terraform_workspace_pattern).
    • Expanded tests to cover precedence, custom component behavior, and new error paths for invalid global/identity fields.
  • Documentation

    • Updated component metadata docs and added a blog post explaining scope, allowed keys, and merge behavior.
Clarify Atmos CI concurrency guidance @osterman (#2798) ## what
  • Add a concise warning about using GitHub Actions concurrency around Atmos/Terraform commands.
  • Fix Markdown indentation in the modernization skill so affected validation passes.

why

  • Concurrency groups are not a FIFO deployment queue, and cancellation can interrupt Terraform work.

references

Summary by CodeRabbit

  • Documentation
    • Clarified GitHub Actions concurrency behavior for Atmos/Terraform runs, including in-progress vs pending handling and pending-run eviction.
    • Added warnings that cancel-in-progress: true can cancel an in-flight Terraform apply and potentially leave remote state locks requiring manual recovery.
    • Documented queue: max limits (up to 100 pending) and noted it can’t be combined with cancel-in-progress.
    • Recommended explicit promotion/deployment workflows for strict execution ordering and updated the modernization checklist wording/formatting.

Don't miss a new atmos release

NewReleases is sending notifications on new releases.