Repository: gruntwork-io/terragrunt

Issue:
`-detailed-exitcode` causes a wrong exit code to be emitted when there was a retry
## Describe the bug

When using `-detailed-exitcode` this causes a wrong exit code to be emitted when there was a retry according to the terragrunt config. It should show the exit code 0 if the retry was successful.

## Steps To Reproduce

Configure some testing suitable retry values:

```hcl
# File: terragrunt.hcl
retry_max_attempts       = 2
retry_sleep_interval_sec = 1
retryable_errors         = ["(?s).*marker.*"]
```

Put a dummy resource which executes the script and prints the script name on failure (i.e. triggering a retry):

```hcl
# File: main.tf
data "external" "script" {
  program = ["/bin/bash", "-c", "./marker.sh"]
}
```

The script will fail on the first run but succeed on the second:

```bash
# File: marker.sh
#!/usr/bin/env bash
set -euo pipefail

if [[ -f .file ]]; then
  echo "{}"
  rm .file
  exit 0
else
  touch .file
  exit 1
fi
```

## Expected behavior

Works as it should and gives us exit code 0.

```bash
$ terragrunt plan
13:59:05.069 STDOUT terraform: data.external.script: Reading...
13:59:05.099 STDOUT terraform: Planning failed. Terraform encountered an error while generating this plan.
13:59:05.099 STDOUT terraform: 
13:59:05.099 STDERR terraform: ╷
13:59:05.099 STDERR terraform: │ Error: External Program Execution Failed
13:59:05.099 STDERR terraform: │ 
13:59:05.099 STDERR terraform: │   with data.external.script,
13:59:05.099 STDERR terraform: │   on main.tf line 2, in data "external" "script":
13:59:05.099 STDERR terraform: │    2:   program = ["/bin/bash", "-c", "./marker.sh"]
13:59:05.099 STDERR terraform: │ 
13:59:05.099 STDERR terraform: │ The data source received an unexpected error while attempting to execute
13:59:05.099 STDERR terraform: │ the program.
13:59:05.099 STDERR terraform: │ 
13:59:05.099 STDERR terraform: │ The program was executed, however it returned no additional error
13:59:05.099 STDERR terraform: │ messaging.
13:59:05.099 STDERR terraform: │ 
13:59:05.099 STDERR terraform: │ Program: /bin/bash
13:59:05.099 STDERR terraform: │ State: exit status 1
13:59:05.099 STDERR terraform: ╵
13:59:05.101 INFO   Encountered an error eligible for retrying. Sleeping 1s before retrying.

13:59:06.221 STDOUT terraform: data.external.script: Reading...
13:59:06.242 STDOUT terraform: data.external.script: Read complete after 0s [id=-]
13:59:06.243 STDOUT terraform: No changes. Your infrastructure matches the configuration.
13:59:06.243 STDOUT terraform: Terraform has compared your real infrastructure against your configuration
13:59:06.243 STDOUT terraform: and found no differences, so no changes are needed.
$ echo $?
0
```

Will show exit code 1, although the retry was successful. It should be exit code 0. Also visible in the terminal output:

```bash
$ terragrunt plan -detailed-exitcode
13:59:33.243 STDOUT terraform: data.external.script: Reading...
13:59:33.258 STDOUT terraform: Planning failed. Terraform encountered an error while generating this plan.
13:59:33.258 STDOUT terraform: 
13:59:33.258 STDERR terraform: ╷
13:59:33.258 STDERR terraform: │ Error: External Program Execution Failed
13:59:33.258 STDERR terraform: │ 
13:59:33.258 STDERR terraform: │   with data.external.script,
13:59:33.258 STDERR terraform: │   on main.tf line 2, in data "external" "script":
13:59:33.258 STDERR terraform: │    2:   program = ["/bin/bash", "-c", "./marker.sh"]
13:59:33.258 STDERR terraform: │ 
13:59:33.258 STDERR terraform: │ The data source received an unexpected error while attempting to execute
13:59:33.258 STDERR terraform: │ the program.
13:59:33.258 STDERR terraform: │ 
13:59:33.258 STDERR terraform: │ The program was executed, however it returned no additional error
13:59:33.258 STDERR terraform: │ messaging.
13:59:33.258 STDERR terraform: │ 
13:59:33.258 STDERR terraform: │ Program: /bin/bash
13:59:33.258 STDERR terraform: │ State: exit status 1
13:59:33.258 STDERR terraform: ╵
13:59:33.261 INFO   Encountered an error eligible for retrying. Sleeping 1s before retrying.

13:59:34.388 STDOUT terraform: data.external.script: Reading...
13:59:34.404 STDOUT terraform: data.external.script: Read complete after 0s [id=-]
13:59:34.405 STDOUT terraform: No changes. Your infrastructure matches the configuration.
13:59:34.405 STDOUT terraform: Terraform has compared your real infrastructure against your configuration
13:59:34.405 STDOUT terraform: and found no differences, so no changes are needed.
$ echo $?
1
```

## Versions

- Terragrunt version: 0.72.6
- OpenTofu/Terraform version: 1.10.5
- Environment details: MacOS Sonoma 14.7

## PS

Thank you for your great work! 😄 

Hints from issue comments:
@juljaeg: I suspect the error to hide here: https://sourcegraph.com/github.com/gruntwork-io/terragrunt@f9eb618e4a8a41facbee47d3c9b6042752596f0f/-/blob/shell/run_shell_cmd.go?L75-78 as the exit code processing is only done when there was an actual error and the previously set error code probably remains in the context and used once the function exits.@yhakbar: Thanks for reporting this, @juljaeg !

It seems like you're also familiar with the codebase, and have found the source of the bug. Are you interested in contributing a pull request to patch the bug?@juljaeg: I can try, but when I look in the past where I tried to work on the terragrunt code base this was not very successful 😆 I imagine it's mainly rearranging the condition block to look something like this:

```go
	output, err := RunShellCommandWithOutput(ctx, opts, "", false, needsPTY, opts.TerraformPath, args...)

	code, _ := util.GetExitCode(err)
	if exitCode := DetailedExitCodeFromContext(ctx); err != nil && exitCode != nil {
		exitCode.Set(code)
	}

	if util.ListContainsElement(args, terraform.FlagNameDetailedExitCode) && code != 1 {
		return output, nil
	}

	return output, err
```

Does that sound right? But I am definitely not familiar with possible side effects of this, let alone writing a proper unit/integration test for this 😕

I am not sure whether this is the right place to do the evaluation, shouldn't it be somewhere around here:
https://github.com/gruntwork-io/terragrunt/blob/f9eb618e4a8a41facbee47d3c9b6042752596f0f/cli/commands/terraform/action.go#L340

There one can be more certain that all retries have been done and the final result is there. So we don't need to take care of "reverting" the changes from retried run. I imagine in a concurrency scenario this might be unreliable. 

EDIT 6: Also thank you for the (very) fast response 😉 @yhakbar: If you're not comfortable with cutting the pull request, don't worry! We'll mark the pull request as preserved so that it doesn't go stale, and we'll get to it when we have bandwidth.

If you are interested in ramping up for contributing to Terragrunt, join the [Terragrunt Discord](https://discord.gg/YENaT9h8jh) if you haven't already, and read the [Contribution docs](https://terragrunt.gruntwork.io/docs/community/contributing/). Especially when it comes to edge cases like this, it's extremely valuable to the maintainers to have community members contributing to help us cover all our edge cases.

You've already written a viable fixture, which could go [here](https://github.com/gruntwork-io/terragrunt/tree/main/test/fixtures) (though I'd recommend that you try the [retry block](https://terragrunt.gruntwork.io/docs/reference/config-blocks-and-attributes/#errors) instead of the deprecated attributes like `retryable_errors`. These [integration tests](https://github.com/gruntwork-io/terragrunt/tree/main/test) test those fixtures.@titouan-joseph: Hi @yhakbar, 

I'm also having this problem (terragrunt version 0.73.11)  
When is it planned to fix it?  
I'm blocking on my CICD pipeline due to this issue

Solution patch:
diff --git a/docs-starlight/public/d2/docs/02-features/05-run-queue-0.svg b/docs-starlight/public/d2/docs/02-features/05-run-queue-0.svg
index 040ac8e4..2934580b 100644
--- a/docs-starlight/public/d2/docs/02-features/05-run-queue-0.svg
+++ b/docs-starlight/public/d2/docs/02-features/05-run-queue-0.svg
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="0.7.0" preserveAspectRatio="xMinYMin meet" viewBox="0 0 849 394"><svg class="d2-2624522423 d2-svg" width="849" height="394" viewBox="-101 -101 849 394"><rect x="-101.000000" y="-101.000000" width="849.000000" height="394.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
-.d2-2624522423 .text-bold {
-	font-family: "d2-2624522423-font-bold";
+<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="0.7.0" preserveAspectRatio="xMinYMin meet" viewBox="0 0 1055 394"><svg class="d2-1312178538 d2-svg" width="1055" height="394" viewBox="-101 -101 1055 394"><rect x="-101.000000" y="-101.000000" width="1055.000000" height="394.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
+.d2-1312178538 .text-bold {
+	font-family: "d2-1312178538-font-bold";
 }
 @font-face {
-	font-family: d2-2624522423-font-bold;
-	src: url("data:application/font-woff;base64,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");
+	font-family: d2-1312178538-font-bold;
+	src: url("data:application/font-woff;base64,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");
 }
-.d2-2624522423 .text-italic {
-	font-family: "d2-2624522423-font-italic";
+.d2-1312178538 .text-italic {
+	font-family: "d2-1312178538-font-italic";
 }
 @font-face {
-	font-family: d2-2624522423-font-italic;
-	src: url("data:application/font-woff;base64,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");
+	font-family: d2-1312178538-font-italic;
+	src: url("data:application/font-woff;base64,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");
 }]]></style><style type="text/css"><![CDATA[.shape {
   shape-rendering: geometricPrecision;
   stroke-linejoin: round;
@@ -25,155 +25,155 @@
   opacity: 0.5;
 }
 
-		.d2-2624522423 .fill-N1{fill:#0A0F25;}
-		.d2-2624522423 .fill-N2{fill:#676C7E;}
-		.d2-2624522423 .fill-N3{fill:#9499AB;}
-		.d2-2624522423 .fill-N4{fill:#CFD2DD;}
-		.d2-2624522423 .fill-N5{fill:#DEE1EB;}
-		.d2-2624522423 .fill-N6{fill:#EEF1F8;}
-		.d2-2624522423 .fill-N7{fill:#FFFFFF;}
-		.d2-2624522423 .fill-B1{fill:#0D32B2;}
-		.d2-2624522423 .fill-B2{fill:#0D32B2;}
-		.d2-2624522423 .fill-B3{fill:#E3E9FD;}
-		.d2-2624522423 .fill-B4{fill:#E3E9FD;}
-		.d2-2624522423 .fill-B5{fill:#EDF0FD;}
-		.d2-2624522423 .fill-B6{fill:#F7F8FE;}
-		.d2-2624522423 .fill-AA2{fill:#4A6FF3;}
-		.d2-2624522423 .fill-AA4{fill:#EDF0FD;}
-		.d2-2624522423 .fill-AA5{fill:#F7F8FE;}
-		.d2-2624522423 .fill-AB4{fill:#EDF0FD;}
-		.d2-2624522423 .fill-AB5{fill:#F7F8FE;}
-		.d2-2624522423 .stroke-N1{stroke:#0A0F25;}
-		.d2-2624522423 .stroke-N2{stroke:#676C7E;}
-		.d2-2624522423 .stroke-N3{stroke:#9499AB;}
-		.d2-2624522423 .stroke-N4{stroke:#CFD2DD;}
-		.d2-2624522423 .stroke-N5{stroke:#DEE1EB;}
-		.d2-2624522423 .stroke-N6{stroke:#EEF1F8;}
-		.d2-2624522423 .stroke-N7{stroke:#FFFFFF;}
-		.d2-2624522423 .stroke-B1{stroke:#0D32B2;}
-		.d2-2624522423 .stroke-B2{stroke:#0D32B2;}
-		.d2-2624522423 .stroke-B3{stroke:#E3E9FD;}
-		.d2-2624522423 .stroke-B4{stroke:#E3E9FD;}
-		.d2-2624522423 .stroke-B5{stroke:#EDF0FD;}
-		.d2-2624522423 .stroke-B6{stroke:#F7F8FE;}
-		.d2-2624522423 .stroke-AA2{stroke:#4A6FF3;}
-		.d2-2624522423 .stroke-AA4{stroke:#EDF0FD;}
-		.d2-2624522423 .stroke-AA5{stroke:#F7F8FE;}
-		.d2-2624522423 .stroke-AB4{stroke:#EDF0FD;}
-		.d2-2624522423 .stroke-AB5{stroke:#F7F8FE;}
-		.d2-2624522423 .background-color-N1{background-color:#0A0F25;}
-		.d2-2624522423 .background-color-N2{background-color:#676C7E;}
-		.d2-2624522423 .background-color-N3{background-color:#9499AB;}
-		.d2-2624522423 .background-color-N4{background-color:#CFD2DD;}
-		.d2-2624522423 .background-color-N5{background-color:#DEE1EB;}
-		.d2-2624522423 .background-color-N6{background-color:#EEF1F8;}
-		.d2-2624522423 .background-color-N7{background-color:#FFFFFF;}
-		.d2-2624522423 .background-color-B1{background-color:#0D32B2;}
-		.d2-2624522423 .background-color-B2{background-color:#0D32B2;}
-		.d2-2624522423 .background-color-B3{background-color:#E3E9FD;}
-		.d2-2624522423 .background-color-B4{background-color:#E3E9FD;}
-		.d2-2624522423 .background-color-B5{background-color:#EDF0FD;}
-		.d2-2624522423 .background-color-B6{background-color:#F7F8FE;}
-		.d2-2624522423 .background-color-AA2{background-color:#4A6FF3;}
-		.d2-2624522423 .background-color-AA4{background-color:#EDF0FD;}
-		.d2-2624522423 .background-color-AA5{background-color:#F7F8FE;}
-		.d2-2624522423 .background-color-AB4{background-color:#EDF0FD;}
-		.d2-2624522423 .background-color-AB5{background-color:#F7F8FE;}
-		.d2-2624522423 .color-N1{color:#0A0F25;}
-		.d2-2624522423 .color-N2{color:#676C7E;}
-		.d2-2624522423 .color-N3{color:#9499AB;}
-		.d2-2624522423 .color-N4{color:#CFD2DD;}
-		.d2-2624522423 .color-N5{color:#DEE1EB;}
-		.d2-2624522423 .color-N6{color:#EEF1F8;}
-		.d2-2624522423 .color-N7{color:#FFFFFF;}
-		.d2-2624522423 .color-B1{color:#0D32B2;}
-		.d2-2624522423 .color-B2{color:#0D32B2;}
-		.d2-2624522423 .color-B3{color:#E3E9FD;}
-		.d2-2624522423 .color-B4{color:#E3E9FD;}
-		.d2-2624522423 .color-B5{color:#EDF0FD;}
-		.d2-2624522423 .color-B6{color:#F7F8FE;}
-		.d2-2624522423 .color-AA2{color:#4A6FF3;}
-		.d2-2624522423 .color-AA4{color:#EDF0FD;}
-		.d2-2624522423 .color-AA5{color:#F7F8FE;}
-		.d2-2624522423 .color-AB4{color:#EDF0FD;}
-		.d2-2624522423 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}@media screen and (prefers-color-scheme:dark){
-		.d2-2624522423 .fill-N1{fill:#CDD6F4;}
-		.d2-2624522423 .fill-N2{fill:#BAC2DE;}
-		.d2-2624522423 .fill-N3{fill:#A6ADC8;}
-		.d2-2624522423 .fill-N4{fill:#585B70;}
-		.d2-2624522423 .fill-N5{fill:#45475A;}
-		.d2-2624522423 .fill-N6{fill:#313244;}
-		.d2-2624522423 .fill-N7{fill:#1E1E2E;}
-		.d2-2624522423 .fill-B1{fill:#CBA6f7;}
-		.d2-2624522423 .fill-B2{fill:#CBA6f7;}
-		.d2-2624522423 .fill-B3{fill:#6C7086;}
-		.d2-2624522423 .fill-B4{fill:#585B70;}
-		.d2-2624522423 .fill-B5{fill:#45475A;}
-		.d2-2624522423 .fill-B6{fill:#313244;}
-		.d2-2624522423 .fill-AA2{fill:#f38BA8;}
-		.d2-2624522423 .fill-AA4{fill:#45475A;}
-		.d2-2624522423 .fill-AA5{fill:#313244;}
-		.d2-2624522423 .fill-AB4{fill:#45475A;}
-		.d2-2624522423 .fill-AB5{fill:#313244;}
-		.d2-2624522423 .stroke-N1{stroke:#CDD6F4;}
-		.d2-2624522423 .stroke-N2{stroke:#BAC2DE;}
-		.d2-2624522423 .stroke-N3{stroke:#A6ADC8;}
-		.d2-2624522423 .stroke-N4{stroke:#585B70;}
-		.d2-2624522423 .stroke-N5{stroke:#45475A;}
-		.d2-2624522423 .stroke-N6{stroke:#313244;}
-		.d2-2624522423 .stroke-N7{stroke:#1E1E2E;}
-		.d2-2624522423 .stroke-B1{stroke:#CBA6f7;}
-		.d2-2624522423 .stroke-B2{stroke:#CBA6f7;}
-		.d2-2624522423 .stroke-B3{stroke:#6C7086;}
-		.d2-2624522423 .stroke-B4{stroke:#585B70;}
-		.d2-2624522423 .stroke-B5{stroke:#45475A;}
-		.d2-2624522423 .stroke-B6{stroke:#313244;}
-		.d2-2624522423 .stroke-AA2{stroke:#f38BA8;}
-		.d2-2624522423 .stroke-AA4{stroke:#45475A;}
-		.d2-2624522423 .stroke-AA5{stroke:#313244;}
-		.d2-2624522423 .stroke-AB4{stroke:#45475A;}
-		.d2-2624522423 .stroke-AB5{stroke:#313244;}
-		.d2-2624522423 .background-color-N1{background-color:#CDD6F4;}
-		.d2-2624522423 .background-color-N2{background-color:#BAC2DE;}
-		.d2-2624522423 .background-color-N3{background-color:#A6ADC8;}
-		.d2-2624522423 .background-color-N4{background-color:#585B70;}
-		.d2-2624522423 .background-color-N5{background-color:#45475A;}
-		.d2-2624522423 .background-color-N6{background-color:#313244;}
-		.d2-2624522423 .background-color-N7{background-color:#1E1E2E;}
-		.d2-2624522423 .background-color-B1{background-color:#CBA6f7;}
-		.d2-2624522423 .background-color-B2{background-color:#CBA6f7;}
-		.d2-2624522423 .background-color-B3{background-color:#6C7086;}
-		.d2-2624522423 .background-color-B4{background-color:#585B70;}
-		.d2-2624522423 .background-color-B5{background-color:#45475A;}
-		.d2-2624522423 .background-color-B6{background-color:#313244;}
-		.d2-2624522423 .background-color-AA2{background-color:#f38BA8;}
-		.d2-2624522423 .background-color-AA4{background-color:#45475A;}
-		.d2-2624522423 .background-color-AA5{background-color:#313244;}
-		.d2-2624522423 .background-color-AB4{background-color:#45475A;}
-		.d2-2624522423 .background-color-AB5{background-color:#313244;}
-		.d2-2624522423 .color-N1{color:#CDD6F4;}
-		.d2-2624522423 .color-N2{color:#BAC2DE;}
-		.d2-2624522423 .color-N3{color:#A6ADC8;}
-		.d2-2624522423 .color-N4{color:#585B70;}
-		.d2-2624522423 .color-N5{color:#45475A;}
-		.d2-2624522423 .color-N6{color:#313244;}
-		.d2-2624522423 .color-N7{color:#1E1E2E;}
-		.d2-2624522423 .color-B1{color:#CBA6f7;}
-		.d2-2624522423 .color-B2{color:#CBA6f7;}
-		.d2-2624522423 .color-B3{color:#6C7086;}
-		.d2-2624522423 .color-B4{color:#585B70;}
-		.d2-2624522423 .color-B5{color:#45475A;}
-		.d2-2624522423 .color-B6{color:#313244;}
-		.d2-2624522423 .color-AA2{color:#f38BA8;}
-		.d2-2624522423 .color-AA4{color:#45475A;}
-		.d2-2624522423 .color-AA5{color:#313244;}
-		.d2-2624522423 .color-AB4{color:#45475A;}
-		.d2-2624522423 .color-AB5{color:#313244;}.appendix text.text{fill:#CDD6F4}.md{--color-fg-default:#CDD6F4;--color-fg-muted:#BAC2DE;--color-fg-subtle:#A6ADC8;--color-canvas-default:#1E1E2E;--color-canvas-subtle:#313244;--color-border-default:#CBA6f7;--color-border-muted:#CBA6f7;--color-neutral-muted:#313244;--color-accent-fg:#CBA6f7;--color-accent-emphasis:#CBA6f7;--color-attention-subtle:#BAC2DE;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-B2{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-B4{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-B5{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-B6{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-AA2{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-AA4{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-AA5{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-AB4{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-AB5{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-N1{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N2{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-N6{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-N7{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.light-code{display: none}.dark-code{display: block}}]]></style><g class="QQ=="><g class="shape" ><rect x="0.000000" y="0.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="44.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Unit A</text></g><g class="Qg=="><g class="shape" ><rect x="280.000000" y="0.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="324.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Unit B</text></g><g class="Qw=="><g class="shape" ><rect x="560.000000" y="0.000000" width="87.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="603.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Unit C</text></g><g class="RA=="><g class="shape" ><rect x="0.000000" y="126.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="44.000000" y="164.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Unit D</text></g><g class="KEEgLSZndDsgQilbMF0="><marker id="mk-d2-2624522423-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 90.000000 33.000000 C 164.800003 33.000000 203.199997 33.000000 276.000000 33.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2624522423-3488378134)" mask="url(#d2-2624522423)" /><text x="184.000000" y="39.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">depends on</text></g><g class="KEIgLSZndDsgQylbMF0="><path d="M 370.000000 33.000000 C 444.799988 33.000000 483.200012 33.000000 556.000000 33.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2624522423-3488378134)" mask="url(#d2-2624522423)" /><text x="464.000000" y="39.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">depends on</text></g><mask id="d2-2624522423" maskUnits="userSpaceOnUse" x="-101" y="-101" width="849" height="394">
-<rect x="-101" y="-101" width="849" height="394" fill="white"></rect>
-<rect x="20.500000" y="22.500000" width="47" height="21" fill="rgba(0,0,0,0.75)"></rect>
-<rect x="300.500000" y="22.500000" width="47" height="21" fill="rgba(0,0,0,0.75)"></rect>
-<rect x="580.500000" y="22.500000" width="46" height="21" fill="rgba(0,0,0,0.75)"></rect>
-<rect x="20.500000" y="148.500000" width="47" height="21" fill="rgba(0,0,0,0.75)"></rect>
-<rect x="144.000000" y="23.000000" width="80" height="21" fill="black"></rect>
-<rect x="424.000000" y="23.000000" width="80" height="21" fill="black"></rect>
+		.d2-1312178538 .fill-N1{fill:#0A0F25;}
+		.d2-1312178538 .fill-N2{fill:#676C7E;}
+		.d2-1312178538 .fill-N3{fill:#9499AB;}
+		.d2-1312178538 .fill-N4{fill:#CFD2DD;}
+		.d2-1312178538 .fill-N5{fill:#DEE1EB;}
+		.d2-1312178538 .fill-N6{fill:#EEF1F8;}
+		.d2-1312178538 .fill-N7{fill:#FFFFFF;}
+		.d2-1312178538 .fill-B1{fill:#0D32B2;}
+		.d2-1312178538 .fill-B2{fill:#0D32B2;}
+		.d2-1312178538 .fill-B3{fill:#E3E9FD;}
+		.d2-1312178538 .fill-B4{fill:#E3E9FD;}
+		.d2-1312178538 .fill-B5{fill:#EDF0FD;}
+		.d2-1312178538 .fill-B6{fill:#F7F8FE;}
+		.d2-1312178538 .fill-AA2{fill:#4A6FF3;}
+		.d2-1312178538 .fill-AA4{fill:#EDF0FD;}
+		.d2-1312178538 .fill-AA5{fill:#F7F8FE;}
+		.d2-1312178538 .fill-AB4{fill:#EDF0FD;}
+		.d2-1312178538 .fill-AB5{fill:#F7F8FE;}
+		.d2-1312178538 .stroke-N1{stroke:#0A0F25;}
+		.d2-1312178538 .stroke-N2{stroke:#676C7E;}
+		.d2-1312178538 .stroke-N3{stroke:#9499AB;}
+		.d2-1312178538 .stroke-N4{stroke:#CFD2DD;}
+		.d2-1312178538 .stroke-N5{stroke:#DEE1EB;}
+		.d2-1312178538 .stroke-N6{stroke:#EEF1F8;}
+		.d2-1312178538 .stroke-N7{stroke:#FFFFFF;}
+		.d2-1312178538 .stroke-B1{stroke:#0D32B2;}
+		.d2-1312178538 .stroke-B2{stroke:#0D32B2;}
+		.d2-1312178538 .stroke-B3{stroke:#E3E9FD;}
+		.d2-1312178538 .stroke-B4{stroke:#E3E9FD;}
+		.d2-1312178538 .stroke-B5{stroke:#EDF0FD;}
+		.d2-1312178538 .stroke-B6{stroke:#F7F8FE;}
+		.d2-1312178538 .stroke-AA2{stroke:#4A6FF3;}
+		.d2-1312178538 .stroke-AA4{stroke:#EDF0FD;}
+		.d2-1312178538 .stroke-AA5{stroke:#F7F8FE;}
+		.d2-1312178538 .stroke-AB4{stroke:#EDF0FD;}
+		.d2-1312178538 .stroke-AB5{stroke:#F7F8FE;}
+		.d2-1312178538 .background-color-N1{background-color:#0A0F25;}
+		.d2-1312178538 .background-color-N2{background-color:#676C7E;}
+		.d2-1312178538 .background-color-N3{background-color:#9499AB;}
+		.d2-1312178538 .background-color-N4{background-color:#CFD2DD;}
+		.d2-1312178538 .background-color-N5{background-color:#DEE1EB;}
+		.d2-1312178538 .background-color-N6{background-color:#EEF1F8;}
+		.d2-1312178538 .background-color-N7{background-color:#FFFFFF;}
+		.d2-1312178538 .background-color-B1{background-color:#0D32B2;}
+		.d2-1312178538 .background-color-B2{background-color:#0D32B2;}
+		.d2-1312178538 .background-color-B3{background-color:#E3E9FD;}
+		.d2-1312178538 .background-color-B4{background-color:#E3E9FD;}
+		.d2-1312178538 .background-color-B5{background-color:#EDF0FD;}
+		.d2-1312178538 .background-color-B6{background-color:#F7F8FE;}
+		.d2-1312178538 .background-color-AA2{background-color:#4A6FF3;}
+		.d2-1312178538 .background-color-AA4{background-color:#EDF0FD;}
+		.d2-1312178538 .background-color-AA5{background-color:#F7F8FE;}
+		.d2-1312178538 .background-color-AB4{background-color:#EDF0FD;}
+		.d2-1312178538 .background-color-AB5{background-color:#F7F8FE;}
+		.d2-1312178538 .color-N1{color:#0A0F25;}
+		.d2-1312178538 .color-N2{color:#676C7E;}
+		.d2-1312178538 .color-N3{color:#9499AB;}
+		.d2-1312178538 .color-N4{color:#CFD2DD;}
+		.d2-1312178538 .color-N5{color:#DEE1EB;}
+		.d2-1312178538 .color-N6{color:#EEF1F8;}
+		.d2-1312178538 .color-N7{color:#FFFFFF;}
+		.d2-1312178538 .color-B1{color:#0D32B2;}
+		.d2-1312178538 .color-B2{color:#0D32B2;}
+		.d2-1312178538 .color-B3{color:#E3E9FD;}
+		.d2-1312178538 .color-B4{color:#E3E9FD;}
+		.d2-1312178538 .color-B5{color:#EDF0FD;}
+		.d2-1312178538 .color-B6{color:#F7F8FE;}
+		.d2-1312178538 .color-AA2{color:#4A6FF3;}
+		.d2-1312178538 .color-AA4{color:#EDF0FD;}
+		.d2-1312178538 .color-AA5{color:#F7F8FE;}
+		.d2-1312178538 .color-AB4{color:#EDF0FD;}
+		.d2-1312178538 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}@media screen and (prefers-color-scheme:dark){
+		.d2-1312178538 .fill-N1{fill:#CDD6F4;}
+		.d2-1312178538 .fill-N2{fill:#BAC2DE;}
+		.d2-1312178538 .fill-N3{fill:#A6ADC8;}
+		.d2-1312178538 .fill-N4{fill:#585B70;}
+		.d2-1312178538 .fill-N5{fill:#45475A;}
+		.d2-1312178538 .fill-N6{fill:#313244;}
+		.d2-1312178538 .fill-N7{fill:#1E1E2E;}
+		.d2-1312178538 .fill-B1{fill:#CBA6f7;}
+		.d2-1312178538 .fill-B2{fill:#CBA6f7;}
+		.d2-1312178538 .fill-B3{fill:#6C7086;}
+		.d2-1312178538 .fill-B4{fill:#585B70;}
+		.d2-1312178538 .fill-B5{fill:#45475A;}
+		.d2-1312178538 .fill-B6{fill:#313244;}
+		.d2-1312178538 .fill-AA2{fill:#f38BA8;}
+		.d2-1312178538 .fill-AA4{fill:#45475A;}
+		.d2-1312178538 .fill-AA5{fill:#313244;}
+		.d2-1312178538 .fill-AB4{fill:#45475A;}
+		.d2-1312178538 .fill-AB5{fill:#313244;}
+		.d2-1312178538 .stroke-N1{stroke:#CDD6F4;}
+		.d2-1312178538 .stroke-N2{stroke:#BAC2DE;}
+		.d2-1312178538 .stroke-N3{stroke:#A6ADC8;}
+		.d2-1312178538 .stroke-N4{stroke:#585B70;}
+		.d2-1312178538 .stroke-N5{stroke:#45475A;}
+		.d2-1312178538 .stroke-N6{stroke:#313244;}
+		.d2-1312178538 .stroke-N7{stroke:#1E1E2E;}
+		.d2-1312178538 .stroke-B1{stroke:#CBA6f7;}
+		.d2-1312178538 .stroke-B2{stroke:#CBA6f7;}
+		.d2-1312178538 .stroke-B3{stroke:#6C7086;}
+		.d2-1312178538 .stroke-B4{stroke:#585B70;}
+		.d2-1312178538 .stroke-B5{stroke:#45475A;}
+		.d2-1312178538 .stroke-B6{stroke:#313244;}
+		.d2-1312178538 .stroke-AA2{stroke:#f38BA8;}
+		.d2-1312178538 .stroke-AA4{stroke:#45475A;}
+		.d2-1312178538 .stroke-AA5{stroke:#313244;}
+		.d2-1312178538 .stroke-AB4{stroke:#45475A;}
+		.d2-1312178538 .stroke-AB5{stroke:#313244;}
+		.d2-1312178538 .background-color-N1{background-color:#CDD6F4;}
+		.d2-1312178538 .background-color-N2{background-color:#BAC2DE;}
+		.d2-1312178538 .background-color-N3{background-color:#A6ADC8;}
+		.d2-1312178538 .background-color-N4{background-color:#585B70;}
+		.d2-1312178538 .background-color-N5{background-color:#45475A;}
+		.d2-1312178538 .background-color-N6{background-color:#313244;}
+		.d2-1312178538 .background-color-N7{background-color:#1E1E2E;}
+		.d2-1312178538 .background-color-B1{background-color:#CBA6f7;}
+		.d2-1312178538 .background-color-B2{background-color:#CBA6f7;}
+		.d2-1312178538 .background-color-B3{background-color:#6C7086;}
+		.d2-1312178538 .background-color-B4{background-color:#585B70;}
+		.d2-1312178538 .background-color-B5{background-color:#45475A;}
+		.d2-1312178538 .background-color-B6{background-color:#313244;}
+		.d2-1312178538 .background-color-AA2{background-color:#f38BA8;}
+		.d2-1312178538 .background-color-AA4{background-color:#45475A;}
+		.d2-1312178538 .background-color-AA5{background-color:#313244;}
+		.d2-1312178538 .background-color-AB4{background-color:#45475A;}
+		.d2-1312178538 .background-color-AB5{background-color:#313244;}
+		.d2-1312178538 .color-N1{color:#CDD6F4;}
+		.d2-1312178538 .color-N2{color:#BAC2DE;}
+		.d2-1312178538 .color-N3{color:#A6ADC8;}
+		.d2-1312178538 .color-N4{color:#585B70;}
+		.d2-1312178538 .color-N5{color:#45475A;}
+		.d2-1312178538 .color-N6{color:#313244;}
+		.d2-1312178538 .color-N7{color:#1E1E2E;}
+		.d2-1312178538 .color-B1{color:#CBA6f7;}
+		.d2-1312178538 .color-B2{color:#CBA6f7;}
+		.d2-1312178538 .color-B3{color:#6C7086;}
+		.d2-1312178538 .color-B4{color:#585B70;}
+		.d2-1312178538 .color-B5{color:#45475A;}
+		.d2-1312178538 .color-B6{color:#313244;}
+		.d2-1312178538 .color-AA2{color:#f38BA8;}
+		.d2-1312178538 .color-AA4{color:#45475A;}
+		.d2-1312178538 .color-AA5{color:#313244;}
+		.d2-1312178538 .color-AB4{color:#45475A;}
+		.d2-1312178538 .color-AB5{color:#313244;}.appendix text.text{fill:#CDD6F4}.md{--color-fg-default:#CDD6F4;--color-fg-muted:#BAC2DE;--color-fg-subtle:#A6ADC8;--color-canvas-default:#1E1E2E;--color-canvas-subtle:#313244;--color-border-default:#CBA6f7;--color-border-muted:#CBA6f7;--color-neutral-muted:#313244;--color-accent-fg:#CBA6f7;--color-accent-emphasis:#CBA6f7;--color-attention-subtle:#BAC2DE;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-B2{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-B4{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-B5{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-B6{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-AA2{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-AA4{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-AA5{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-AB4{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-AB5{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-N1{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N2{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-N6{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-N7{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.light-code{display: none}.dark-code{display: block}}]]></style><g class="ZGVwZW5kZW50"><g class="shape" ><rect x="7.000000" y="0.000000" width="122.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="68.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">dependent</text></g><g class="ZGVwZW5kZW5jeQ=="><g class="shape" ><rect x="328.000000" y="0.000000" width="133.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="394.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">dependency</text></g><g class="YW5jZXN0b3ItZGVwZW5kZW5jeQ=="><g class="shape" ><rect x="653.000000" y="0.000000" width="200.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="753.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">ancestor-dependency</text></g><g class="aW5kZXBlbmRlbnQ="><g class="shape" ><rect x="0.000000" y="126.000000" width="136.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="68.000000" y="164.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">independent</text></g><g class="KGRlcGVuZGVudCAtJmd0OyBkZXBlbmRlbmN5KVswXQ=="><marker id="mk-d2-1312178538-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 131.000000 33.000000 C 211.399994 33.000000 251.199997 33.000000 324.000000 33.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-1312178538-3488378134)" mask="url(#d2-1312178538)" /><text x="229.000000" y="39.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">depends on</text></g><g class="KGRlcGVuZGVuY3kgLSZndDsgYW5jZXN0b3ItZGVwZW5kZW5jeSlbMF0="><path d="M 463.000000 33.000000 C 537.799988 33.000000 576.200012 33.000000 649.000000 33.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-1312178538-3488378134)" mask="url(#d2-1312178538)" /><text x="557.000000" y="39.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">depends on</text></g><mask id="d2-1312178538" maskUnits="userSpaceOnUse" x="-101" y="-101" width="1055" height="394">
+<rect x="-101" y="-101" width="1055" height="394" fill="white"></rect>
+<rect x="27.500000" y="22.500000" width="81" height="21" fill="rgba(0,0,0,0.75)"></rect>
+<rect x="348.500000" y="22.500000" width="92" height="21" fill="rgba(0,0,0,0.75)"></rect>
+<rect x="673.500000" y="22.500000" width="159" height="21" fill="rgba(0,0,0,0.75)"></rect>
+<rect x="20.500000" y="148.500000" width="95" height="21" fill="rgba(0,0,0,0.75)"></rect>
+<rect x="189.000000" y="23.000000" width="80" height="21" fill="black"></rect>
+<rect x="517.000000" y="23.000000" width="80" height="21" fill="black"></rect>
 </mask></svg></svg>
diff --git a/docs-starlight/src/content/docs/02-features/05-run-queue.mdx b/docs-starlight/src/content/docs/02-features/05-run-queue.mdx
index fed419db..339afe53 100644
--- a/docs-starlight/src/content/docs/02-features/05-run-queue.mdx
+++ b/docs-starlight/src/content/docs/02-features/05-run-queue.mdx
@@ -6,7 +6,7 @@ sidebar:
   order: 5
 ---
 
-import { Aside } from '@astrojs/starlight/components';
+import { Aside, FileTree, Tabs, TabItem } from '@astrojs/starlight/components';
 
 Terragrunt's "Run Queue" is the mechanism it uses to manage the run order and concurrency when running OpenTofu/Terraform commands across multiple Terragrunt [units](/docs/features/units). This is particularly relevant when using the [`run --all`](/docs/reference/cli/commands/run#all) or [`run --graph`](/docs/reference/cli/commands/run#graph) commands.
 
@@ -24,57 +24,247 @@ Terragrunt analyzes these dependencies to determine the correct order of operati
 
 ### Example DAG
 
-Consider a setup where Unit B depends on Unit A, and Unit C depends on Unit B. Unit D has no dependencies.
+Consider a setup where:
+
+- Unit "dependent" depends on unit "dependency".
+- Unit "dependency" depends on unit "ancestor-dependency".
+- Unit "independent" has no dependencies nor dependents.
+
+<FileTree>
+
+- root
+  - subtree
+    - dependent
+      - terragrunt.hcl
+    - dependency
+      - terragrunt.hcl
+  - ancestor-dependency
+    - terragrunt.hcl
+  - independent
+    - terragrunt.hcl
+
+</FileTree>
+
 
 ```d2
 direction: right
 
 # Define the nodes
-A: Unit A {
+dependent: dependent {
   shape: rectangle
 }
 
-B: Unit B {
+dependency: dependency {
   shape: rectangle
 }
 
-C: Unit C {
+ancestor-dependency: ancestor-dependency {
   shape: rectangle
 }
 
-D: Unit D {
+independent: independent {
   shape: rectangle
 }
 
 # Define the connections
-A -> B: depends on
-B -> C: depends on
+dependent -> dependency: depends on
+dependency -> ancestor-dependency: depends on
 ```
 
--   **`run --all plan` Order:** Terragrunt would run C and D concurrently. Once C finishes, B would run. Once B finishes, A would run.
--   **`run --all destroy` Order:** Terragrunt would run A and D concurrently. Once A finishes, B would run. Once B finishes, C would run.
+Assuming a current working directory of the `root` directory, Terragrunt would run units in the following order:
+
+-   **`run --all plan` Order:** Terragrunt would run `independent` and `ancestor-dependency` concurrently. Once `ancestor-dependency` finishes, `dependency` would run. Once `dependency` finishes, `dependent` would run.
+-   **`run --all destroy` Order:** Terragrunt would run `dependent` and `independent` concurrently. Once `dependent` finishes, `dependency` would run. Once `dependency` finishes, `ancestor-dependency` would run.
 
 ## Controlling the Queue
 
-Several flags allow you to customize how Terragrunt builds and executes the run queue:
+Several flags allow you to customize how Terragrunt builds and executes the run queue. By default, Terragrunt will include all units that are in the current working directory.
+
+### Include by default
+
+By default, when using the `--all` flag, Terragrunt will include all units that are in the current working directory, and any external dependencies.
+
+Certain flags trigger "Exclude by default" behavior, meaning that Terragrunt will no longer automatically include all units in the current working directory, and will instead rely on discovering configurations based on the provided queue control flags.
+
+Those flags will be discussed in the next section.
 
 ### Filtering Units
 
 You can control which units are included or excluded from the queue:
 
--   [`--queue-include-dir`](/docs/reference/cli/commands/run#queue-include-dir): Specify glob patterns for directories to *include*. Can be used multiple times.
--   [`--queue-exclude-dir`](/docs/reference/cli/commands/run#queue-exclude-dir): Specify glob patterns for directories to *exclude*. Can be used multiple times. Note that dependencies of excluded units might be included unless they are also explicitly excluded.
--   [`--queue-excludes-file`](/docs/reference/cli/commands/run#queue-excludes-file): Provide a file containing a list of directories to exclude.
--   [`--queue-strict-include`](/docs/reference/cli/commands/run#queue-strict-include): Only include units matching `--queue-include-dir`. Excludes everything else by default.
--   [`--queue-include-external`](/docs/reference/cli/commands/run#queue-include-external): Include external dependencies (those outside the main working directory or included directories).
--   [`--queue-exclude-external`](/docs/reference/cli/commands/run#queue-exclude-external): Exclude external dependencies.
--   [`--queue-include-units-reading`](/docs/reference/cli/commands/run#queue-include-units-reading): Include units that read a specific file (via [includes](/docs/reference/hcl/blocks#include) or HCL functions like [`mark_as_read`](/docs/reference/hcl/functions#mark_as_read)).
+- [`--queue-include-dir`](/docs/reference/cli/commands/run#queue-include-dir): Specify glob patterns for directories to *include*. Can be used multiple times.
+
+  e.g. `terragrunt run --all plan --queue-include-dir "subtree/*"`
+
+  Include units within the `subtree` directory (along with their dependencies), i.e., `subtree/dependent`, `subtree/dependency` and `ancestor-dependency`.
+
+  <Aside type="note">
+  Using the `--queue-include-dir` automatically triggers "Exclude by default" behavior, as mentioned above.
+  </Aside>
+
+  <Aside type="note">
+  `ancestor-dependency` is still included by default here because it's a dependency of `dependency`.
+
+  Using [`--queue-strict-include`](/docs/reference/cli/commands/run#queue-strict-include) would prevent that.
+  </Aside>
+
+- [`--queue-exclude-dir`](/docs/reference/cli/commands/run#queue-exclude-dir): Specify glob patterns for directories to *exclude*. Can be specified multiple times.
+
+  e.g. `terragrunt run --all plan --queue-exclude-dir "independent"`
+
+  Exclude the `independent` unit. `ancestor-dependency`, `subtree/dependency`, and `subtree/dependent` would still be processed according to their dependencies.
+
+  <Aside type="note">
+    Dependencies of excluded units will still be included unless they are also explicitly excluded.
+
+    In this example, excluding `subtree/dependency` would not automatically exclude `ancestor-dependency`.
+  </Aside>
+
+- [`--queue-excludes-file`](/docs/reference/cli/commands/run#queue-excludes-file): Provide a file containing a list of directories to exclude.
+
+  e.g. `terragrunt run --all plan --queue-excludes-file ".tg-excludes"`
+
+  ```text
+  # .tg-excludes
+
+  independent
+  subtree/dependency
+  ```
+
+  Exclude `independent` and `subtree/dependency` from the run, only running `subtree/dependent` and `ancestor-dependency`.
+
+  <Aside type="tip">
+  The default value for this flag is `.terragrunt-excludes`.
+
+  Populate a file named this in your project root to exclude units from being run by default, without using the `--queue-excludes-file` flag.
+  </Aside>
+
+- [`--queue-strict-include`](/docs/reference/cli/commands/run#queue-strict-include): Only include units matching `--queue-include-dir`.
+
+  e.g. `terragrunt run --all plan --queue-include-dir "subtree/dependency" --queue-strict-include`
+
+  Only include the `subtree/dependency` unit. Its dependency, `ancestor-dependency`, will be excluded because it does not match the include and strict mode is enabled.
+
+- [`--queue-include-external`](/docs/reference/cli/commands/run#queue-include-external): Include external dependencies (those outside the current working directory) by default.
+
+  e.g. `terragrunt run --all plan --working-dir subtree --queue-include-external`
+
+  Include `ancestor-dependency` in addition to the `subtree/dependent` and `subtree/dependency` units.
+
+  <Aside type="note">
+  The `--queue-include-external` flag is simply a convenience flag to avoid the interactive prompt to request inclusion of external dependencies.
+
+  By default, Terragrunt will wait for user input to determine whether or not external dependencies should be included.
+  </Aside>
+
+- [`--queue-exclude-external`](/docs/reference/cli/commands/run#queue-exclude-external): Exclude external dependencies.
+
+  e.g. `terragrunt run --all plan --working-dir subtree --queue-exclude-external`
+
+  Exclude `ancestor-dependency` from the run. Only run `subtree/dependent` and `subtree/dependency`.
+
+  <Aside type="note">
+  This flag is simply a convenience flag to avoid the interactive prompt to request exclusion of external dependencies.
+
+  By default, Terragrunt will wait for user input to determine whether or not external dependencies should be excluded.
+  </Aside>
+
+- [`--queue-include-units-reading`](/docs/reference/cli/commands/run#queue-include-units-reading): Include units that read a specific file (via [includes](/docs/reference/hcl/blocks#include) or HCL functions like [`mark_as_read`](/docs/reference/hcl/functions#mark_as_read)).
+
+  e.g. `terragrunt run --all plan --queue-include-units-reading "subtree/common.hcl"`
+
+  <Tabs>
+    <TabItem label="subtree/dependent/terragrunt.hcl">
+
+    ```hcl
+    dependency "dep" {
+      config_path  = "../dependency"
+      skip_outputs = true
+    }
+
+    include "common" {
+      path = find_in_parent_folders("common.hcl")
+    }
+    ```
+    </TabItem>
+    <TabItem label="subtree/dependency/terragrunt.hcl">
+
+    ```hcl
+    dependency "dep" {
+      config_path  = "../../ancestor-dependency"
+      skip_outputs = true
+    }
+
+    include "common" {
+      path = find_in_parent_folders("common.hcl")
+    }
+    ```
+    </TabItem>
+    <TabItem label="subtree/common.hcl">
+
+    ```hcl
+    # Intentionally empty
+    ```
+    </TabItem>
+  </Tabs>
+
+  Include `subtree/dependent` and `subtree/dependency` (the units that read `subtree/common.hcl`) in the run.
+
+  <Aside type="tip">
+  Sometimes, it can be impossible for Terragrunt to know that certain files are read by a unit (e.g. if the file is read in the OpenTofu/Terraform module, not in Terragrunt configuration).
+
+  In cases like this, you can use the [`mark_as_read`](/docs/reference/hcl/functions#mark_as_read) HCL function to explicitly tell Terragrunt that a unit reads a file.
+  </Aside>
 
 ### Modifying Order and Error Handling
 
--   [`--queue-construct-as`](/docs/reference/cli/commands/list#queue-construct-as) (`--as`): Build the dependency queue *as if* running a particular command. Useful for performing dry-runs of [`run`](/docs/reference/cli/commands/run) using discovery commands, like [`find`](/docs/reference/cli/commands/find) and [`list`](/docs/reference/cli/commands/list).
--   [`--queue-ignore-dag-order`](/docs/reference/cli/commands/run#queue-ignore-dag-order): Execute units concurrently without respecting the dependency order. Useful for read-only commands like `validate` or `plan` across independent units, but **dangerous** for commands that modify state (`apply`, `destroy`).
--   [`--queue-ignore-errors`](/docs/reference/cli/commands/run#queue-ignore-errors): Continue processing the queue even if some units fail. Useful for identifying all errors at once, but can lead to inconsistent state if used with `apply` or `destroy`.
+- [`--queue-construct-as`](/docs/reference/cli/commands/list#queue-construct-as) (`--as`): Build the run queue *as if* a particular command was run. Useful for performing dry-runs of [`run`](/docs/reference/cli/commands/run) using discovery commands, like [`find`](/docs/reference/cli/commands/find) and [`list`](/docs/reference/cli/commands/list).
+
+  e.g. `terragrunt list --queue-construct-as destroy`
+
+  This lists the units in the order they'd be processed for `run --all destroy`:
+
+  ```bash
+  $ terragrunt list --as destroy -l
+  Type  Path
+  unit  independent
+  unit  subtree/dependent
+  unit  subtree/dependency
+  unit  ancestor-dependency
+  ```
+
+  ```bash
+  $ terragrunt list --as plan -l
+  Type  Path
+  unit  ancestor-dependency
+  unit  independent
+  unit  subtree/dependency
+  unit  subtree/dependent
+  ```
+
+- [`--queue-ignore-dag-order`](/docs/reference/cli/commands/run#queue-ignore-dag-order): Execute units concurrently without respecting the dependency order.
+
+  e.g. `terragrunt run --all plan --queue-ignore-dag-order`
+
+  Run `plan` on `ancestor-dependency`, `subtree/dependency`, `subtree/dependent`, and `independent` all concurrently, without waiting for their defined dependencies. For instance, `subtree/dependent`'s plan would not wait for `subtree/dependency`'s plan to complete).
+
+  <Aside type="caution">
+  This flag is useful for faster runs in stateless commands like `validate` or `plan`, but is **dangerous** for commands that modify state like `apply` or `destroy`.
+
+  You might encounter failed applies if unit dependencies are not applied before dependents, and conversely, failed destroys if unit dependents are not destroyed before dependencies.
+  </Aside>
+
+- [`--queue-ignore-errors`](/docs/reference/cli/commands/run#queue-ignore-errors): Continue processing the queue even if some units fail.
+
+  e.g. `terragrunt run --all plan --queue-ignore-errors`
+
+  If `ancestor-dependency`'s plan fails, Terragrunt will still attempt to run `plan` for `subtree/dependency`, then `subtree/dependent`, and also for `independent`.
+
+  <Aside type="caution">
+  This flag is useful for identifying all errors at once, but can lead to inconsistent state if used with `apply` or `destroy`.
+
+  You might encounter failed applies if unit dependencies are not applied successfully before dependents, and conversely, failed destroys if unit dependents are not destroyed successfully before dependencies.
+  </Aside>
 
 ## Important Considerations
 
diff --git a/docs/_docs/02_features/05-run-queue.md b/docs/_docs/02_features/05-run-queue.md
index 88d463da..7790183e 100644
--- a/docs/_docs/02_features/05-run-queue.md
+++ b/docs/_docs/02_features/05-run-queue.md
@@ -27,43 +27,185 @@ Terragrunt analyzes these dependencies to determine the correct order of operati
 
 ### Example DAG
 
-Consider a setup where Unit B depends on Unit A, and Unit C depends on Unit B. Unit D has no dependencies.
+Consider a setup where:
+
+- Unit "dependent" depends on unit "dependency".
+- Unit "dependency" depends on unit "ancestor-dependency".
+- Unit "independent" has no dependencies nor dependents.
+
+Represented textually, the file structure might look like:
+
+```tree
+root
+├── ancestor-dependency
+│   └── terragrunt.hcl
+├── independent
+│   └── terragrunt.hcl
+└── subtree
+    ├── dependency
+    │   └── terragrunt.hcl
+    └── dependent
+        └── terragrunt.hcl
+```
 
 ![Example DAG](/assets/img/05-run-queue-0.svg)
 
-- **`run --all plan` Order:** Terragrunt would run C and D concurrently. Once C finishes, B would run. Once B finishes, A would run.
-- **`run --all destroy` Order:** Terragrunt would run A and D concurrently. Once A finishes, B would run. Once B finishes, C would run.
+Assuming a current working directory of the `root` directory, Terragrunt would run units in the following order:
+
+- **`run --all plan` Order:** Terragrunt would run `independent` and `ancestor-dependency` concurrently. Once `ancestor-dependency` finishes, `dependency` would run. Once `dependency` finishes, `dependent` would run.
+- **`run --all destroy` Order:** Terragrunt would run `dependent` and `independent` concurrently. Once `dependent` finishes, `dependency` would run. Once `dependency` finishes, `ancestor-dependency` would run.
 
 ## Controlling the Queue
 
-Several flags allow you to customize how Terragrunt builds and executes the run queue:
+Several flags allow you to customize how Terragrunt builds and executes the run queue. By default, Terragrunt will include all units that are in the current working directory.
+
+### Include by default
+
+By default, when using the `--all` flag, Terragrunt will include all units that are in the current working directory, and any external dependencies.
+
+Certain flags trigger "Exclude by default" behavior, meaning that Terragrunt will no longer automatically include all units in the current working directory, and will instead rely on discovering configurations based on the provided queue control flags.
+
+Those flags will be discussed in the next section.
 
 ### Filtering Units
 
 You can control which units are included or excluded from the queue:
 
 - [`--queue-include-dir`](/docs/reference/cli-options#queue-include-dir): Specify glob patterns for directories to *include*. Can be used multiple times.
-- [`--queue-exclude-dir`](/docs/reference/cli-options#queue-exclude-dir): Specify glob patterns for directories to *exclude*. Can be used multiple times. Note that dependencies of excluded units might be included unless they are also explicitly excluded.
+
+  e.g. `terragrunt run --all plan --queue-include-dir "subtree/*"`
+
+  Include units within the `subtree` directory (along with their dependencies), i.e., `subtree/dependent`, `subtree/dependency` and `ancestor-dependency`.
+  > **Note:** Using the `--queue-include-dir` automatically triggers "Exclude by default" behavior, as mentioned above.
+  >
+  > **Note:** `ancestor-dependency` is still included by default here because it's a dependency of `dependency`. Using [`--queue-strict-include`](/docs/reference/cli-options#queue-strict-include) would prevent that.
+
+- [`--queue-exclude-dir`](/docs/reference/cli-options#queue-exclude-dir): Specify glob patterns for directories to *exclude*. Can be specified multiple times.
+
+  e.g. `terragrunt run --all plan --queue-exclude-dir "independent"`
+
+  Exclude the `independent` unit. `ancestor-dependency`, `subtree/dependency`, and `subtree/dependent` would still be processed according to their dependencies.
+  > **Note:** Dependencies of excluded units will still be included unless they are also explicitly excluded. In this example, excluding `subtree/dependency` would not automatically exclude `ancestor-dependency`.
+
 - [`--queue-excludes-file`](/docs/reference/cli-options#queue-excludes-file): Provide a file containing a list of directories to exclude.
-- [`--queue-strict-include`](/docs/reference/cli-options#queue-strict-include): Only include units matching `--queue-include-dir`. Excludes everything else by default.
-- [`--queue-include-external`](/docs/reference/cli-options#queue-include-external): Include external dependencies (those outside the main working directory or included directories).
+
+  e.g. `terragrunt run --all plan --queue-excludes-file ".tg-excludes"`
+
+  ```text
+  # .tg-excludes
+
+  independent
+  subtree/dependency
+  ```
+
+  Exclude `independent` and `subtree/dependency` from the run, only running `subtree/dependent` and `ancestor-dependency`.
+  > **Tip:** The default value for this flag is `.terragrunt-excludes`. Populate a file named this in your project root to exclude units from being run by default, without using the `--queue-excludes-file` flag.
+
+- [`--queue-strict-include`](/docs/reference/cli-options#queue-strict-include): Only include units matching `--queue-include-dir`.
+
+  e.g. `terragrunt run --all plan --queue-include-dir "subtree/dependency" --queue-strict-include`
+
+  Only include the `subtree/dependency` unit. Its dependency, `ancestor-dependency`, will be excluded because it does not match the include and strict mode is enabled.
+
+- [`--queue-include-external`](/docs/reference/cli-options#queue-include-external): Include external dependencies (those outside the current working directory) by default.
+
+  e.g. `terragrunt run --all plan --working-dir subtree --queue-include-external`
+
+  Include `ancestor-dependency` in addition to the `subtree/dependent` and `subtree/dependency` units.
+  > **Note:** The `--queue-include-external` flag is simply a convenience flag to avoid the interactive prompt to request inclusion of external dependencies. By default, Terragrunt will wait for user input to determine whether or not external dependencies should be included.
+
 - [`--queue-exclude-external`](/docs/reference/cli-options#queue-exclude-external): Exclude external dependencies.
+
+  e.g. `terragrunt run --all plan --working-dir subtree --queue-exclude-external`
+
+  Exclude `ancestor-dependency` from the run. Only run `subtree/dependent` and `subtree/dependency`.
+  > **Note:** This flag is simply a convenience flag to avoid the interactive prompt to request exclusion of external dependencies. By default, Terragrunt will wait for user input to determine whether or not external dependencies should be excluded.
+
 - [`--queue-include-units-reading`](/docs/reference/cli-options#queue-include-units-reading): Include units that read a specific file (via [includes](/docs/reference/config-blocks-and-attributes#include) or HCL functions like [`mark_as_read`](/docs/reference/built-in-functions#mark_as_read)).
 
+  e.g. `terragrunt run --all plan --queue-include-units-reading "subtree/common.hcl"`
+
+  Example `subtree/dependent/terragrunt.hcl`:
+
+  ```hcl
+  dependency "dep" {
+    config_path  = "../dependency"
+    skip_outputs = true
+  }
+
+  include "common" {
+    path = find_in_parent_folders("common.hcl")
+  }
+  ```
+
+  Example `subtree/dependency/terragrunt.hcl`:
+
+  ```hcl
+  dependency "dep" {
+    config_path  = "../../ancestor-dependency"
+    skip_outputs = true
+  }
+
+  include "common" {
+    path = find_in_parent_folders("common.hcl")
+  }
+  ```
+
+  Example `subtree/common.hcl`:
+
+  ```hcl
+  # Intentionally empty
+  ```
+
+  Include `subtree/dependent` and `subtree/dependency` (the units that read `subtree/common.hcl`) in the run.
+  > **Tip:** Sometimes, it can be impossible for Terragrunt to know that certain files are read by a unit (e.g. if the file is read in the OpenTofu/Terraform module, not in Terragrunt configuration). In cases like this, you can use the [`mark_as_read`](/docs/reference/built-in-functions#mark_as_read) HCL function to explicitly tell Terragrunt that a unit reads a file.
+
 ### Modifying Order and Error Handling
 
-- [`--queue-construct-as`](/docs/reference/cli-options#find-queue-construct-as) (`--as`): Build the dependency queue *as if* running a particular command. Useful for performing dry-runs of [`run`](/docs/reference/cli-options#run) using discovery commands, like [`find`](/docs/reference/cli-options#find) and [`list`](/docs/reference/cli-options#list).
-- [`--queue-ignore-dag-order`](/docs/reference/cli-options#queue-ignore-dag-order): Execute units concurrently without respecting the dependency order. Useful for read-only commands like `validate` or `plan` across independent units, but **dangerous** for commands that modify state (`apply`, `destroy`).
-- [`--queue-ignore-errors`](/docs/reference/cli-options#queue-ignore-errors): Continue processing the queue even if some units fail. Useful for identifying all errors at once, but can lead to inconsistent state if used with `apply` or `destroy`.
+- [`--queue-construct-as`](/docs/reference/cli-options#queue-construct-as) (`--as`): Build the run queue *as if* a particular command was run. Useful for performing dry-runs of [`run`](/docs/reference/cli-options#run) using discovery commands, like [`find`](/docs/reference/cli-options#find) and [`list`](/docs/reference/cli-options#list).
+  e.g. `terragrunt list --queue-construct-as destroy`
+  This lists the units in the order they'd be processed for `run --all destroy`:
 
-## Important Considerations
+  ```bash
+  $ terragrunt list --as destroy -l
+  Type  Path
+  unit  independent
+  unit  subtree/dependent
+  unit  subtree/dependency
+  unit  ancestor-dependency
+  ```
 
-- When using `run --all plan` with units that have dependencies (e.g. via `dependency` or `dependencies` blocks), the command will fail if those dependencies have never been deployed. This is because Terragrunt cannot resolve dependency outputs without existing state.
+  ```bash
+  $ terragrunt list --as plan -l
+  Type  Path
+  unit  ancestor-dependency
+  unit  independent
+  unit  subtree/dependency
+  unit  subtree/dependent
+  ```
 
-  To work around this issue, use [mock outputs in dependency blocks](/docs/reference/config-blocks-and-attributes#dependency).
+- [`--queue-ignore-dag-order`](/docs/reference/cli-options#queue-ignore-dag-order): Execute units concurrently without respecting the dependency order.
 
-- Do not set `TF_PLUGIN_CACHE_DIR` when using `run --all` (unless using OpenTofu >= 1.10).
+  e.g. `terragrunt run --all plan --queue-ignore-dag-order`
 
-  This can cause concurrent access issues with the provider cache. Instead, use Terragrunt's built-in [Provider Cache Server](/docs/features/provider-cache-server/).
+  Run `plan` on `ancestor-dependency`, `subtree/dependency`, `subtree/dependent`, and `independent` all concurrently, without waiting for their defined dependencies. For instance, `subtree/dependent`'s plan would not wait for `subtree/dependency`'s plan to complete.
+  > **Caution:** This flag is useful for faster runs in stateless commands like `validate` or `plan`, but is **dangerous** for commands that modify state like `apply` or `destroy`. You might encounter failed applies if unit dependencies are not applied before dependents, and conversely, failed destroys if unit dependents are not destroyed before dependencies.
+
+- [`--queue-ignore-errors`](/docs/reference/cli-options#queue-ignore-errors): Continue processing the queue even if some units fail.
+
+  e.g. `terragrunt run --all plan --queue-ignore-errors`
+
+  If `ancestor-dependency`'s plan fails, Terragrunt will still attempt to run `plan` for `subtree/dependency`, then `subtree/dependent`, and also for `independent`.
+  > **Caution:** This flag is useful for identifying all errors at once, but can lead to inconsistent state if used with `apply` or `destroy`. You might encounter failed applies if unit dependencies are not applied successfully before dependents, and conversely, failed destroys if unit dependents are not destroyed successfully before dependencies.
+
+## Important Considerations
 
-- When using `run --all` with `apply` or `destroy`, Terragrunt automatically adds the `-auto-approve` flag due to limitations with shared stdin making individual approvals impossible. Use [`--no-auto-approve`](/docs/reference/cli-options#no-auto-approve) to override this, but be aware you might need alternative approval workflows.
+> **Caution:** When using `run --all plan` with units that have dependencies (e.g. via `dependency` or `dependencies` blocks), the command will fail if those dependencies have never been deployed. This is because Terragrunt cannot resolve dependency outputs without existing state.
+>
+> To work around this issue, use [mock outputs in dependency blocks](/docs/reference/config-blocks-and-attributes#dependency).
+>
+> **Caution:** Do not set `TF_PLUGIN_CACHE_DIR` when using `run --all` (unless using OpenTofu >= 1.10).
+>
+> This can cause concurrent access issues with the provider cache. Instead, use Terragrunt's built-in [Provider Cache Server](/docs/features/provider-cache-server/).
+>
+> **Caution:** When using `run --all` with `apply` or `destroy`, Terragrunt automatically adds the `-auto-approve` flag due to limitations with shared stdin making individual approvals impossible. Use [`--no-auto-approve`](/docs/reference/cli-options#no-auto-approve) to override this, but be aware you might need alternative approval workflows.
diff --git a/docs/assets/img/05-run-queue-0.svg b/docs/assets/img/05-run-queue-0.svg
index 040ac8e4..2934580b 100644
--- a/docs/assets/img/05-run-queue-0.svg
+++ b/docs/assets/img/05-run-queue-0.svg
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="0.7.0" preserveAspectRatio="xMinYMin meet" viewBox="0 0 849 394"><svg class="d2-2624522423 d2-svg" width="849" height="394" viewBox="-101 -101 849 394"><rect x="-101.000000" y="-101.000000" width="849.000000" height="394.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
-.d2-2624522423 .text-bold {
-	font-family: "d2-2624522423-font-bold";
+<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="0.7.0" preserveAspectRatio="xMinYMin meet" viewBox="0 0 1055 394"><svg class="d2-1312178538 d2-svg" width="1055" height="394" viewBox="-101 -101 1055 394"><rect x="-101.000000" y="-101.000000" width="1055.000000" height="394.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
+.d2-1312178538 .text-bold {
+	font-family: "d2-1312178538-font-bold";
 }
 @font-face {
-	font-family: d2-2624522423-font-bold;
-	src: url("data:application/font-woff;base64,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");
+	font-family: d2-1312178538-font-bold;
+	src: url("data:application/font-woff;base64,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");
 }
-.d2-2624522423 .text-italic {
-	font-family: "d2-2624522423-font-italic";
+.d2-1312178538 .text-italic {
+	font-family: "d2-1312178538-font-italic";
 }
 @font-face {
-	font-family: d2-2624522423-font-italic;
-	src: url("data:application/font-woff;base64,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");
+	font-family: d2-1312178538-font-italic;
+	src: url("data:application/font-woff;base64,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");
 }]]></style><style type="text/css"><![CDATA[.shape {
   shape-rendering: geometricPrecision;
   stroke-linejoin: round;
@@ -25,155 +25,155 @@
   opacity: 0.5;
 }
 
-		.d2-2624522423 .fill-N1{fill:#0A0F25;}
-		.d2-2624522423 .fill-N2{fill:#676C7E;}
-		.d2-2624522423 .fill-N3{fill:#9499AB;}
-		.d2-2624522423 .fill-N4{fill:#CFD2DD;}
-		.d2-2624522423 .fill-N5{fill:#DEE1EB;}
-		.d2-2624522423 .fill-N6{fill:#EEF1F8;}
-		.d2-2624522423 .fill-N7{fill:#FFFFFF;}
-		.d2-2624522423 .fill-B1{fill:#0D32B2;}
-		.d2-2624522423 .fill-B2{fill:#0D32B2;}
-		.d2-2624522423 .fill-B3{fill:#E3E9FD;}
-		.d2-2624522423 .fill-B4{fill:#E3E9FD;}
-		.d2-2624522423 .fill-B5{fill:#EDF0FD;}
-		.d2-2624522423 .fill-B6{fill:#F7F8FE;}
-		.d2-2624522423 .fill-AA2{fill:#4A6FF3;}
-		.d2-2624522423 .fill-AA4{fill:#EDF0FD;}
-		.d2-2624522423 .fill-AA5{fill:#F7F8FE;}
-		.d2-2624522423 .fill-AB4{fill:#EDF0FD;}
-		.d2-2624522423 .fill-AB5{fill:#F7F8FE;}
-		.d2-2624522423 .stroke-N1{stroke:#0A0F25;}
-		.d2-2624522423 .stroke-N2{stroke:#676C7E;}
-		.d2-2624522423 .stroke-N3{stroke:#9499AB;}
-		.d2-2624522423 .stroke-N4{stroke:#CFD2DD;}
-		.d2-2624522423 .stroke-N5{stroke:#DEE1EB;}
-		.d2-2624522423 .stroke-N6{stroke:#EEF1F8;}
-		.d2-2624522423 .stroke-N7{stroke:#FFFFFF;}
-		.d2-2624522423 .stroke-B1{stroke:#0D32B2;}
-		.d2-2624522423 .stroke-B2{stroke:#0D32B2;}
-		.d2-2624522423 .stroke-B3{stroke:#E3E9FD;}
-		.d2-2624522423 .stroke-B4{stroke:#E3E9FD;}
-		.d2-2624522423 .stroke-B5{stroke:#EDF0FD;}
-		.d2-2624522423 .stroke-B6{stroke:#F7F8FE;}
-		.d2-2624522423 .stroke-AA2{stroke:#4A6FF3;}
-		.d2-2624522423 .stroke-AA4{stroke:#EDF0FD;}
-		.d2-2624522423 .stroke-AA5{stroke:#F7F8FE;}
-		.d2-2624522423 .stroke-AB4{stroke:#EDF0FD;}
-		.d2-2624522423 .stroke-AB5{stroke:#F7F8FE;}
-		.d2-2624522423 .background-color-N1{background-color:#0A0F25;}
-		.d2-2624522423 .background-color-N2{background-color:#676C7E;}
-		.d2-2624522423 .background-color-N3{background-color:#9499AB;}
-		.d2-2624522423 .background-color-N4{background-color:#CFD2DD;}
-		.d2-2624522423 .background-color-N5{background-color:#DEE1EB;}
-		.d2-2624522423 .background-color-N6{background-color:#EEF1F8;}
-		.d2-2624522423 .background-color-N7{background-color:#FFFFFF;}
-		.d2-2624522423 .background-color-B1{background-color:#0D32B2;}
-		.d2-2624522423 .background-color-B2{background-color:#0D32B2;}
-		.d2-2624522423 .background-color-B3{background-color:#E3E9FD;}
-		.d2-2624522423 .background-color-B4{background-color:#E3E9FD;}
-		.d2-2624522423 .background-color-B5{background-color:#EDF0FD;}
-		.d2-2624522423 .background-color-B6{background-color:#F7F8FE;}
-		.d2-2624522423 .background-color-AA2{background-color:#4A6FF3;}
-		.d2-2624522423 .background-color-AA4{background-color:#EDF0FD;}
-		.d2-2624522423 .background-color-AA5{background-color:#F7F8FE;}
-		.d2-2624522423 .background-color-AB4{background-color:#EDF0FD;}
-		.d2-2624522423 .background-color-AB5{background-color:#F7F8FE;}
-		.d2-2624522423 .color-N1{color:#0A0F25;}
-		.d2-2624522423 .color-N2{color:#676C7E;}
-		.d2-2624522423 .color-N3{color:#9499AB;}
-		.d2-2624522423 .color-N4{color:#CFD2DD;}
-		.d2-2624522423 .color-N5{color:#DEE1EB;}
-		.d2-2624522423 .color-N6{color:#EEF1F8;}
-		.d2-2624522423 .color-N7{color:#FFFFFF;}
-		.d2-2624522423 .color-B1{color:#0D32B2;}
-		.d2-2624522423 .color-B2{color:#0D32B2;}
-		.d2-2624522423 .color-B3{color:#E3E9FD;}
-		.d2-2624522423 .color-B4{color:#E3E9FD;}
-		.d2-2624522423 .color-B5{color:#EDF0FD;}
-		.d2-2624522423 .color-B6{color:#F7F8FE;}
-		.d2-2624522423 .color-AA2{color:#4A6FF3;}
-		.d2-2624522423 .color-AA4{color:#EDF0FD;}
-		.d2-2624522423 .color-AA5{color:#F7F8FE;}
-		.d2-2624522423 .color-AB4{color:#EDF0FD;}
-		.d2-2624522423 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2624522423);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}@media screen and (prefers-color-scheme:dark){
-		.d2-2624522423 .fill-N1{fill:#CDD6F4;}
-		.d2-2624522423 .fill-N2{fill:#BAC2DE;}
-		.d2-2624522423 .fill-N3{fill:#A6ADC8;}
-		.d2-2624522423 .fill-N4{fill:#585B70;}
-		.d2-2624522423 .fill-N5{fill:#45475A;}
-		.d2-2624522423 .fill-N6{fill:#313244;}
-		.d2-2624522423 .fill-N7{fill:#1E1E2E;}
-		.d2-2624522423 .fill-B1{fill:#CBA6f7;}
-		.d2-2624522423 .fill-B2{fill:#CBA6f7;}
-		.d2-2624522423 .fill-B3{fill:#6C7086;}
-		.d2-2624522423 .fill-B4{fill:#585B70;}
-		.d2-2624522423 .fill-B5{fill:#45475A;}
-		.d2-2624522423 .fill-B6{fill:#313244;}
-		.d2-2624522423 .fill-AA2{fill:#f38BA8;}
-		.d2-2624522423 .fill-AA4{fill:#45475A;}
-		.d2-2624522423 .fill-AA5{fill:#313244;}
-		.d2-2624522423 .fill-AB4{fill:#45475A;}
-		.d2-2624522423 .fill-AB5{fill:#313244;}
-		.d2-2624522423 .stroke-N1{stroke:#CDD6F4;}
-		.d2-2624522423 .stroke-N2{stroke:#BAC2DE;}
-		.d2-2624522423 .stroke-N3{stroke:#A6ADC8;}
-		.d2-2624522423 .stroke-N4{stroke:#585B70;}
-		.d2-2624522423 .stroke-N5{stroke:#45475A;}
-		.d2-2624522423 .stroke-N6{stroke:#313244;}
-		.d2-2624522423 .stroke-N7{stroke:#1E1E2E;}
-		.d2-2624522423 .stroke-B1{stroke:#CBA6f7;}
-		.d2-2624522423 .stroke-B2{stroke:#CBA6f7;}
-		.d2-2624522423 .stroke-B3{stroke:#6C7086;}
-		.d2-2624522423 .stroke-B4{stroke:#585B70;}
-		.d2-2624522423 .stroke-B5{stroke:#45475A;}
-		.d2-2624522423 .stroke-B6{stroke:#313244;}
-		.d2-2624522423 .stroke-AA2{stroke:#f38BA8;}
-		.d2-2624522423 .stroke-AA4{stroke:#45475A;}
-		.d2-2624522423 .stroke-AA5{stroke:#313244;}
-		.d2-2624522423 .stroke-AB4{stroke:#45475A;}
-		.d2-2624522423 .stroke-AB5{stroke:#313244;}
-		.d2-2624522423 .background-color-N1{background-color:#CDD6F4;}
-		.d2-2624522423 .background-color-N2{background-color:#BAC2DE;}
-		.d2-2624522423 .background-color-N3{background-color:#A6ADC8;}
-		.d2-2624522423 .background-color-N4{background-color:#585B70;}
-		.d2-2624522423 .background-color-N5{background-color:#45475A;}
-		.d2-2624522423 .background-color-N6{background-color:#313244;}
-		.d2-2624522423 .background-color-N7{background-color:#1E1E2E;}
-		.d2-2624522423 .background-color-B1{background-color:#CBA6f7;}
-		.d2-2624522423 .background-color-B2{background-color:#CBA6f7;}
-		.d2-2624522423 .background-color-B3{background-color:#6C7086;}
-		.d2-2624522423 .background-color-B4{background-color:#585B70;}
-		.d2-2624522423 .background-color-B5{background-color:#45475A;}
-		.d2-2624522423 .background-color-B6{background-color:#313244;}
-		.d2-2624522423 .background-color-AA2{background-color:#f38BA8;}
-		.d2-2624522423 .background-color-AA4{background-color:#45475A;}
-		.d2-2624522423 .background-color-AA5{background-color:#313244;}
-		.d2-2624522423 .background-color-AB4{background-color:#45475A;}
-		.d2-2624522423 .background-color-AB5{background-color:#313244;}
-		.d2-2624522423 .color-N1{color:#CDD6F4;}
-		.d2-2624522423 .color-N2{color:#BAC2DE;}
-		.d2-2624522423 .color-N3{color:#A6ADC8;}
-		.d2-2624522423 .color-N4{color:#585B70;}
-		.d2-2624522423 .color-N5{color:#45475A;}
-		.d2-2624522423 .color-N6{color:#313244;}
-		.d2-2624522423 .color-N7{color:#1E1E2E;}
-		.d2-2624522423 .color-B1{color:#CBA6f7;}
-		.d2-2624522423 .color-B2{color:#CBA6f7;}
-		.d2-2624522423 .color-B3{color:#6C7086;}
-		.d2-2624522423 .color-B4{color:#585B70;}
-		.d2-2624522423 .color-B5{color:#45475A;}
-		.d2-2624522423 .color-B6{color:#313244;}
-		.d2-2624522423 .color-AA2{color:#f38BA8;}
-		.d2-2624522423 .color-AA4{color:#45475A;}
-		.d2-2624522423 .color-AA5{color:#313244;}
-		.d2-2624522423 .color-AB4{color:#45475A;}
-		.d2-2624522423 .color-AB5{color:#313244;}.appendix text.text{fill:#CDD6F4}.md{--color-fg-default:#CDD6F4;--color-fg-muted:#BAC2DE;--color-fg-subtle:#A6ADC8;--color-canvas-default:#1E1E2E;--color-canvas-subtle:#313244;--color-border-default:#CBA6f7;--color-border-muted:#CBA6f7;--color-neutral-muted:#313244;--color-accent-fg:#CBA6f7;--color-accent-emphasis:#CBA6f7;--color-attention-subtle:#BAC2DE;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-B2{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-B4{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-B5{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-B6{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-AA2{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-AA4{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-AA5{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-AB4{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-AB5{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-N1{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N2{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2624522423);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-dark-d2-2624522423);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-N6{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.sketch-overlay-N7{fill:url(#streaks-darker-d2-2624522423);mix-blend-mode:lighten}.light-code{display: none}.dark-code{display: block}}]]></style><g class="QQ=="><g class="shape" ><rect x="0.000000" y="0.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="44.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Unit A</text></g><g class="Qg=="><g class="shape" ><rect x="280.000000" y="0.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="324.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Unit B</text></g><g class="Qw=="><g class="shape" ><rect x="560.000000" y="0.000000" width="87.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="603.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Unit C</text></g><g class="RA=="><g class="shape" ><rect x="0.000000" y="126.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="44.000000" y="164.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Unit D</text></g><g class="KEEgLSZndDsgQilbMF0="><marker id="mk-d2-2624522423-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 90.000000 33.000000 C 164.800003 33.000000 203.199997 33.000000 276.000000 33.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2624522423-3488378134)" mask="url(#d2-2624522423)" /><text x="184.000000" y="39.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">depends on</text></g><g class="KEIgLSZndDsgQylbMF0="><path d="M 370.000000 33.000000 C 444.799988 33.000000 483.200012 33.000000 556.000000 33.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2624522423-3488378134)" mask="url(#d2-2624522423)" /><text x="464.000000" y="39.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">depends on</text></g><mask id="d2-2624522423" maskUnits="userSpaceOnUse" x="-101" y="-101" width="849" height="394">
-<rect x="-101" y="-101" width="849" height="394" fill="white"></rect>
-<rect x="20.500000" y="22.500000" width="47" height="21" fill="rgba(0,0,0,0.75)"></rect>
-<rect x="300.500000" y="22.500000" width="47" height="21" fill="rgba(0,0,0,0.75)"></rect>
-<rect x="580.500000" y="22.500000" width="46" height="21" fill="rgba(0,0,0,0.75)"></rect>
-<rect x="20.500000" y="148.500000" width="47" height="21" fill="rgba(0,0,0,0.75)"></rect>
-<rect x="144.000000" y="23.000000" width="80" height="21" fill="black"></rect>
-<rect x="424.000000" y="23.000000" width="80" height="21" fill="black"></rect>
+		.d2-1312178538 .fill-N1{fill:#0A0F25;}
+		.d2-1312178538 .fill-N2{fill:#676C7E;}
+		.d2-1312178538 .fill-N3{fill:#9499AB;}
+		.d2-1312178538 .fill-N4{fill:#CFD2DD;}
+		.d2-1312178538 .fill-N5{fill:#DEE1EB;}
+		.d2-1312178538 .fill-N6{fill:#EEF1F8;}
+		.d2-1312178538 .fill-N7{fill:#FFFFFF;}
+		.d2-1312178538 .fill-B1{fill:#0D32B2;}
+		.d2-1312178538 .fill-B2{fill:#0D32B2;}
+		.d2-1312178538 .fill-B3{fill:#E3E9FD;}
+		.d2-1312178538 .fill-B4{fill:#E3E9FD;}
+		.d2-1312178538 .fill-B5{fill:#EDF0FD;}
+		.d2-1312178538 .fill-B6{fill:#F7F8FE;}
+		.d2-1312178538 .fill-AA2{fill:#4A6FF3;}
+		.d2-1312178538 .fill-AA4{fill:#EDF0FD;}
+		.d2-1312178538 .fill-AA5{fill:#F7F8FE;}
+		.d2-1312178538 .fill-AB4{fill:#EDF0FD;}
+		.d2-1312178538 .fill-AB5{fill:#F7F8FE;}
+		.d2-1312178538 .stroke-N1{stroke:#0A0F25;}
+		.d2-1312178538 .stroke-N2{stroke:#676C7E;}
+		.d2-1312178538 .stroke-N3{stroke:#9499AB;}
+		.d2-1312178538 .stroke-N4{stroke:#CFD2DD;}
+		.d2-1312178538 .stroke-N5{stroke:#DEE1EB;}
+		.d2-1312178538 .stroke-N6{stroke:#EEF1F8;}
+		.d2-1312178538 .stroke-N7{stroke:#FFFFFF;}
+		.d2-1312178538 .stroke-B1{stroke:#0D32B2;}
+		.d2-1312178538 .stroke-B2{stroke:#0D32B2;}
+		.d2-1312178538 .stroke-B3{stroke:#E3E9FD;}
+		.d2-1312178538 .stroke-B4{stroke:#E3E9FD;}
+		.d2-1312178538 .stroke-B5{stroke:#EDF0FD;}
+		.d2-1312178538 .stroke-B6{stroke:#F7F8FE;}
+		.d2-1312178538 .stroke-AA2{stroke:#4A6FF3;}
+		.d2-1312178538 .stroke-AA4{stroke:#EDF0FD;}
+		.d2-1312178538 .stroke-AA5{stroke:#F7F8FE;}
+		.d2-1312178538 .stroke-AB4{stroke:#EDF0FD;}
+		.d2-1312178538 .stroke-AB5{stroke:#F7F8FE;}
+		.d2-1312178538 .background-color-N1{background-color:#0A0F25;}
+		.d2-1312178538 .background-color-N2{background-color:#676C7E;}
+		.d2-1312178538 .background-color-N3{background-color:#9499AB;}
+		.d2-1312178538 .background-color-N4{background-color:#CFD2DD;}
+		.d2-1312178538 .background-color-N5{background-color:#DEE1EB;}
+		.d2-1312178538 .background-color-N6{background-color:#EEF1F8;}
+		.d2-1312178538 .background-color-N7{background-color:#FFFFFF;}
+		.d2-1312178538 .background-color-B1{background-color:#0D32B2;}
+		.d2-1312178538 .background-color-B2{background-color:#0D32B2;}
+		.d2-1312178538 .background-color-B3{background-color:#E3E9FD;}
+		.d2-1312178538 .background-color-B4{background-color:#E3E9FD;}
+		.d2-1312178538 .background-color-B5{background-color:#EDF0FD;}
+		.d2-1312178538 .background-color-B6{background-color:#F7F8FE;}
+		.d2-1312178538 .background-color-AA2{background-color:#4A6FF3;}
+		.d2-1312178538 .background-color-AA4{background-color:#EDF0FD;}
+		.d2-1312178538 .background-color-AA5{background-color:#F7F8FE;}
+		.d2-1312178538 .background-color-AB4{background-color:#EDF0FD;}
+		.d2-1312178538 .background-color-AB5{background-color:#F7F8FE;}
+		.d2-1312178538 .color-N1{color:#0A0F25;}
+		.d2-1312178538 .color-N2{color:#676C7E;}
+		.d2-1312178538 .color-N3{color:#9499AB;}
+		.d2-1312178538 .color-N4{color:#CFD2DD;}
+		.d2-1312178538 .color-N5{color:#DEE1EB;}
+		.d2-1312178538 .color-N6{color:#EEF1F8;}
+		.d2-1312178538 .color-N7{color:#FFFFFF;}
+		.d2-1312178538 .color-B1{color:#0D32B2;}
+		.d2-1312178538 .color-B2{color:#0D32B2;}
+		.d2-1312178538 .color-B3{color:#E3E9FD;}
+		.d2-1312178538 .color-B4{color:#E3E9FD;}
+		.d2-1312178538 .color-B5{color:#EDF0FD;}
+		.d2-1312178538 .color-B6{color:#F7F8FE;}
+		.d2-1312178538 .color-AA2{color:#4A6FF3;}
+		.d2-1312178538 .color-AA4{color:#EDF0FD;}
+		.d2-1312178538 .color-AA5{color:#F7F8FE;}
+		.d2-1312178538 .color-AB4{color:#EDF0FD;}
+		.d2-1312178538 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1312178538);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}@media screen and (prefers-color-scheme:dark){
+		.d2-1312178538 .fill-N1{fill:#CDD6F4;}
+		.d2-1312178538 .fill-N2{fill:#BAC2DE;}
+		.d2-1312178538 .fill-N3{fill:#A6ADC8;}
+		.d2-1312178538 .fill-N4{fill:#585B70;}
+		.d2-1312178538 .fill-N5{fill:#45475A;}
+		.d2-1312178538 .fill-N6{fill:#313244;}
+		.d2-1312178538 .fill-N7{fill:#1E1E2E;}
+		.d2-1312178538 .fill-B1{fill:#CBA6f7;}
+		.d2-1312178538 .fill-B2{fill:#CBA6f7;}
+		.d2-1312178538 .fill-B3{fill:#6C7086;}
+		.d2-1312178538 .fill-B4{fill:#585B70;}
+		.d2-1312178538 .fill-B5{fill:#45475A;}
+		.d2-1312178538 .fill-B6{fill:#313244;}
+		.d2-1312178538 .fill-AA2{fill:#f38BA8;}
+		.d2-1312178538 .fill-AA4{fill:#45475A;}
+		.d2-1312178538 .fill-AA5{fill:#313244;}
+		.d2-1312178538 .fill-AB4{fill:#45475A;}
+		.d2-1312178538 .fill-AB5{fill:#313244;}
+		.d2-1312178538 .stroke-N1{stroke:#CDD6F4;}
+		.d2-1312178538 .stroke-N2{stroke:#BAC2DE;}
+		.d2-1312178538 .stroke-N3{stroke:#A6ADC8;}
+		.d2-1312178538 .stroke-N4{stroke:#585B70;}
+		.d2-1312178538 .stroke-N5{stroke:#45475A;}
+		.d2-1312178538 .stroke-N6{stroke:#313244;}
+		.d2-1312178538 .stroke-N7{stroke:#1E1E2E;}
+		.d2-1312178538 .stroke-B1{stroke:#CBA6f7;}
+		.d2-1312178538 .stroke-B2{stroke:#CBA6f7;}
+		.d2-1312178538 .stroke-B3{stroke:#6C7086;}
+		.d2-1312178538 .stroke-B4{stroke:#585B70;}
+		.d2-1312178538 .stroke-B5{stroke:#45475A;}
+		.d2-1312178538 .stroke-B6{stroke:#313244;}
+		.d2-1312178538 .stroke-AA2{stroke:#f38BA8;}
+		.d2-1312178538 .stroke-AA4{stroke:#45475A;}
+		.d2-1312178538 .stroke-AA5{stroke:#313244;}
+		.d2-1312178538 .stroke-AB4{stroke:#45475A;}
+		.d2-1312178538 .stroke-AB5{stroke:#313244;}
+		.d2-1312178538 .background-color-N1{background-color:#CDD6F4;}
+		.d2-1312178538 .background-color-N2{background-color:#BAC2DE;}
+		.d2-1312178538 .background-color-N3{background-color:#A6ADC8;}
+		.d2-1312178538 .background-color-N4{background-color:#585B70;}
+		.d2-1312178538 .background-color-N5{background-color:#45475A;}
+		.d2-1312178538 .background-color-N6{background-color:#313244;}
+		.d2-1312178538 .background-color-N7{background-color:#1E1E2E;}
+		.d2-1312178538 .background-color-B1{background-color:#CBA6f7;}
+		.d2-1312178538 .background-color-B2{background-color:#CBA6f7;}
+		.d2-1312178538 .background-color-B3{background-color:#6C7086;}
+		.d2-1312178538 .background-color-B4{background-color:#585B70;}
+		.d2-1312178538 .background-color-B5{background-color:#45475A;}
+		.d2-1312178538 .background-color-B6{background-color:#313244;}
+		.d2-1312178538 .background-color-AA2{background-color:#f38BA8;}
+		.d2-1312178538 .background-color-AA4{background-color:#45475A;}
+		.d2-1312178538 .background-color-AA5{background-color:#313244;}
+		.d2-1312178538 .background-color-AB4{background-color:#45475A;}
+		.d2-1312178538 .background-color-AB5{background-color:#313244;}
+		.d2-1312178538 .color-N1{color:#CDD6F4;}
+		.d2-1312178538 .color-N2{color:#BAC2DE;}
+		.d2-1312178538 .color-N3{color:#A6ADC8;}
+		.d2-1312178538 .color-N4{color:#585B70;}
+		.d2-1312178538 .color-N5{color:#45475A;}
+		.d2-1312178538 .color-N6{color:#313244;}
+		.d2-1312178538 .color-N7{color:#1E1E2E;}
+		.d2-1312178538 .color-B1{color:#CBA6f7;}
+		.d2-1312178538 .color-B2{color:#CBA6f7;}
+		.d2-1312178538 .color-B3{color:#6C7086;}
+		.d2-1312178538 .color-B4{color:#585B70;}
+		.d2-1312178538 .color-B5{color:#45475A;}
+		.d2-1312178538 .color-B6{color:#313244;}
+		.d2-1312178538 .color-AA2{color:#f38BA8;}
+		.d2-1312178538 .color-AA4{color:#45475A;}
+		.d2-1312178538 .color-AA5{color:#313244;}
+		.d2-1312178538 .color-AB4{color:#45475A;}
+		.d2-1312178538 .color-AB5{color:#313244;}.appendix text.text{fill:#CDD6F4}.md{--color-fg-default:#CDD6F4;--color-fg-muted:#BAC2DE;--color-fg-subtle:#A6ADC8;--color-canvas-default:#1E1E2E;--color-canvas-subtle:#313244;--color-border-default:#CBA6f7;--color-border-muted:#CBA6f7;--color-neutral-muted:#313244;--color-accent-fg:#CBA6f7;--color-accent-emphasis:#CBA6f7;--color-attention-subtle:#BAC2DE;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-B2{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-B4{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-B5{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-B6{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-AA2{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-AA4{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-AA5{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-AB4{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-AB5{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-N1{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N2{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1312178538);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-dark-d2-1312178538);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-N6{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.sketch-overlay-N7{fill:url(#streaks-darker-d2-1312178538);mix-blend-mode:lighten}.light-code{display: none}.dark-code{display: block}}]]></style><g class="ZGVwZW5kZW50"><g class="shape" ><rect x="7.000000" y="0.000000" width="122.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="68.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">dependent</text></g><g class="ZGVwZW5kZW5jeQ=="><g class="shape" ><rect x="328.000000" y="0.000000" width="133.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="394.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">dependency</text></g><g class="YW5jZXN0b3ItZGVwZW5kZW5jeQ=="><g class="shape" ><rect x="653.000000" y="0.000000" width="200.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="753.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">ancestor-dependency</text></g><g class="aW5kZXBlbmRlbnQ="><g class="shape" ><rect x="0.000000" y="126.000000" width="136.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="68.000000" y="164.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">independent</text></g><g class="KGRlcGVuZGVudCAtJmd0OyBkZXBlbmRlbmN5KVswXQ=="><marker id="mk-d2-1312178538-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 131.000000 33.000000 C 211.399994 33.000000 251.199997 33.000000 324.000000 33.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-1312178538-3488378134)" mask="url(#d2-1312178538)" /><text x="229.000000" y="39.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">depends on</text></g><g class="KGRlcGVuZGVuY3kgLSZndDsgYW5jZXN0b3ItZGVwZW5kZW5jeSlbMF0="><path d="M 463.000000 33.000000 C 537.799988 33.000000 576.200012 33.000000 649.000000 33.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-1312178538-3488378134)" mask="url(#d2-1312178538)" /><text x="557.000000" y="39.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">depends on</text></g><mask id="d2-1312178538" maskUnits="userSpaceOnUse" x="-101" y="-101" width="1055" height="394">
+<rect x="-101" y="-101" width="1055" height="394" fill="white"></rect>
+<rect x="27.500000" y="22.500000" width="81" height="21" fill="rgba(0,0,0,0.75)"></rect>
+<rect x="348.500000" y="22.500000" width="92" height="21" fill="rgba(0,0,0,0.75)"></rect>
+<rect x="673.500000" y="22.500000" width="159" height="21" fill="rgba(0,0,0,0.75)"></rect>
+<rect x="20.500000" y="148.500000" width="95" height="21" fill="rgba(0,0,0,0.75)"></rect>
+<rect x="189.000000" y="23.000000" width="80" height="21" fill="black"></rect>
+<rect x="517.000000" y="23.000000" width="80" height="21" fill="black"></rect>
 </mask></svg></svg>
diff --git a/tf/detailed_exitcode.go b/tf/detailed_exitcode.go
index 1601cb8c..30513dd0 100644
--- a/tf/detailed_exitcode.go
+++ b/tf/detailed_exitcode.go
@@ -4,10 +4,6 @@ import (
 	"sync"
 )
 
-const (
-	DetailedExitCodeError = 1
-)
-
 // DetailedExitCode is the TF detailed exit code. https://opentofu.org/docs/cli/commands/plan/
 type DetailedExitCode struct {
 	Code int
@@ -26,18 +22,9 @@ func (coder *DetailedExitCode) Get() int {
 // - 0 = Success
 // - 1 = Error
 // - 2 = Success with changes pending
-// The method only updates if:
-// - The current code is not 1 (error state)
-// - The new code is greater than current OR equals 1
 func (coder *DetailedExitCode) Set(newCode int) {
 	coder.mu.Lock()
 	defer coder.mu.Unlock()
 
-	if coder.Code == DetailedExitCodeError {
-		return
-	}
-
-	if coder.Code < newCode || newCode == DetailedExitCodeError {
-		coder.Code = newCode
-	}
+	coder.Code = newCode
 }
diff --git a/tf/run_cmd.go b/tf/run_cmd.go
index 34914e7c..e3e2dbf6 100644
--- a/tf/run_cmd.go
+++ b/tf/run_cmd.go
@@ -74,6 +74,10 @@ func RunCommandWithOutput(ctx context.Context, opts *options.TerragruntOptions,
 		if code != 1 {
 			return output, nil
 		}
+	} else {
+		if exitCode := DetailedExitCodeFromContext(ctx); exitCode != nil {
+			exitCode.Set(0)
+		}
 	}
 
 	return output, err



Test patch:
diff --git a/test/fixtures/detailed-exitcode/error/app2/terragrunt.hcl b/test/fixtures/detailed-exitcode/error/app2/terragrunt.hcl
index bb7b160d..59735f3e 100644
--- a/test/fixtures/detailed-exitcode/error/app2/terragrunt.hcl
+++ b/test/fixtures/detailed-exitcode/error/app2/terragrunt.hcl
@@ -1 +1,11 @@
-# Intentionally empty
+/*
+  Sequential dependency on app1 to ensure proper test execution.
+  This prevents flaky tests since:
+  - Local provider returns exit code 2 for managed resources
+  - Local provider returns exit code 1 for data sources
+  - Only the last exit code in the sequence can be checked
+*/
+
+dependencies {
+  paths = ["../app1"]
+}
diff --git a/test/fixtures/detailed-exitcode/fail-on-first-run/main.tf b/test/fixtures/detailed-exitcode/fail-on-first-run/main.tf
new file mode 100644
index 00000000..c9ac9c0d
--- /dev/null
+++ b/test/fixtures/detailed-exitcode/fail-on-first-run/main.tf
@@ -0,0 +1,16 @@
+data "external" "script" {
+  program = [
+    "/bin/bash",
+    "-c",
+    <<EOT
+      set -euo pipefail
+      if [[ -f .file ]]; then
+        echo '{}'
+        rm .file
+      else
+        touch .file
+        exit 1
+      fi
+    EOT
+  ]
+}
diff --git a/test/fixtures/detailed-exitcode/fail-on-first-run/terragrunt.hcl b/test/fixtures/detailed-exitcode/fail-on-first-run/terragrunt.hcl
new file mode 100644
index 00000000..6bb0c93b
--- /dev/null
+++ b/test/fixtures/detailed-exitcode/fail-on-first-run/terragrunt.hcl
@@ -0,0 +1,3 @@
+retry_max_attempts       = 2
+retry_sleep_interval_sec = 1
+retryable_errors = [".*"]
diff --git a/test/integration_test.go b/test/integration_test.go
index 5228bd38..364aae9e 100644
--- a/test/integration_test.go
+++ b/test/integration_test.go
@@ -233,6 +233,23 @@ func TestDetailedExitCodeChangesPresentAll(t *testing.T) {
 	assert.Equal(t, 2, exitCode.Get())
 }
 
+func TestDetailedExitCodeFailOnFirstRun(t *testing.T) {
+	t.Parallel()
+
+	testFixturePath := filepath.Join(testFixtureDetailedExitCode, "fail-on-first-run")
+
+	helpers.CleanupTerraformFolder(t, testFixturePath)
+	tmpEnvPath := helpers.CopyEnvironment(t, testFixturePath)
+
+	var exitCode tf.DetailedExitCode
+	ctx := context.Background()
+	ctx = tf.ContextWithDetailedExitCode(ctx, &exitCode)
+
+	_, _, err := helpers.RunTerragruntCommandWithOutputWithContext(t, ctx, "terragrunt run-all plan --terragrunt-log-level trace --terragrunt-non-interactive -detailed-exitcode --terragrunt-working-dir "+util.JoinPath(tmpEnvPath, testFixturePath))
+	require.NoError(t, err)
+	assert.Equal(t, 0, exitCode.Get())
+}
+
 func TestDetailedExitCodeChangesPresentOne(t *testing.T) {
 	t.Parallel()