TL;DR: `mock_outputs` only rescues you when the state OBJECT is missing (`NoSuchKey`). When the whole state BUCKET doesn't exist yet (`NoSuchBucket`), Terragrunt fails instead of using the mock. Bootstrap the bucket first (or drop the fetch-from-state flag for that run).

```text
resolving dependency "network" outputs: fetching dependency state from s3://my-not-yet-created-bucket/network/terraform.tfstate: operation error S3: GetObject,
... NoSuchBucket: The specified bucket does not exist
```

## Steps

1. Read the error: `NoSuchBucket` means the bucket is missing, not just the key.
   Expected: you know bootstrapping is the gap.
2. Bootstrap the backend: `terragrunt backend bootstrap` (or create the bucket out of band).
   Expected: the bucket exists.
3. Re-run your original command.
   Expected: dependency outputs resolve, or `mock_outputs` kick in for genuinely unapplied units.

## When this applies

- `validate`/`plan` with `--dependency-fetch-output-from-state` (now the default read path in recent 1.x) fails with `NoSuchBucket` on a dependency.
- The environment was never bootstrapped.

## When it doesn't apply

- `NoSuchKey` (bucket exists, key missing): mocks DO apply there; if they don't, the mock block itself is misconfigured.
- AccessDenied on the bucket: that's permissions, not bootstrapping.

## Tool versions

Terragrunt 1.x with dependency outputs read from state (default since the experiment graduated).

## Why it happens

The mock fallback was implemented for the "not applied yet" signal, which the code recognized as a missing key. A missing bucket is a different S3 error code, so it falls through to a hard failure instead of the mock path. From the dependent unit's perspective both mean the same thing, but the code doesn't treat them the same.

## Edge cases

- Bootstrapping creates the bucket with Terragrunt's expected config (versioning etc.); hand-creating it works but skips that reconciliation.
- In CI for a brand-new environment, run `backend bootstrap` as an explicit first step rather than relying on per-run flags.