---
version: "v1.0.8"
category: "experiments-updated"
---

#### `stack-dependencies`: `autoinclude` merges like a regular include

A generated **unit** autoinclude (`terragrunt.autoinclude.hcl`) now merges into the unit's config using the same default merge as a regular `include`, which is a shallow merge, applied uniformly across generation, full parse, and discovery. Top-level keys from the unit and the autoinclude combine, and on a conflict the autoinclude wins and replaces the unit's value rather than deep-merging nested maps; `locals` stay local in scope.

A generated **stack** autoinclude (`terragrunt.autoinclude.stack.hcl`) injects `unit` and `stack` blocks into the generated `terragrunt.stack.hcl`. An injected block whose name matches an existing `unit` or `stack` now overrides that block wholesale, consistent with unit autoinclude override semantics, and an injected block with a new name is added. This applies uniformly across generation, full parse, and discovery, so a name match no longer produces a duplicate-name error. A stack autoinclude may not declare a top-level `dependency` block (stacks have no dependencies; declare the dependency inside the target unit's own autoinclude).

A `dependency` block injected through an `autoinclude` is now available before a unit's `remote_state` is evaluated, so referencing `dependency.<name>.outputs.<key>` there no longer fails. `remote_state` now behaves the same as `generate` blocks.
