Os downloads do Content e as imagens OG podem sobreviver a um runner efémero.
Têm regras de invalidação diferentes e, por isso, usam comandos duxt separados.

## Fontes remotas públicas

```yaml [.github/workflows/deploy.yml]
- id: sources
  run: duxt-cache-key --root . --github >> "$GITHUB_OUTPUT"
- if: steps.sources.outputs.cacheable == 'true'
  uses: actions/cache@v6
  with:
    path: ${{ steps.sources.outputs.paths }}
    key: ${{ steps.sources.outputs.key }}
```

`--root` indica a aplicação Nuxt consumidora. A chave inclui repositórios e
refs já resolvidos; `contents.sqlite*` fica de fora por ser um resultado do
parser. Uma única fonte privada, SSH ou autenticada torna toda a lista
`cacheable=false`. Sem `--github`, o comando mostra entradas ocultadas e a razão.

## Imagens OG renderizadas

```yaml [.github/workflows/deploy.yml]
- id: og
  run: duxt-og-cache --root . --run "$GITHUB_SHA" --github >> "$GITHUB_OUTPUT"
- uses: actions/cache@v6
  with:
    path: ${{ steps.og.outputs.path }}
    key: ${{ steps.og.outputs.key }}
    restore-keys: ${{ steps.og.outputs['restore-keys'] }}
```

A configuração Nuxt consumidora integra também
`@kirchdev/duxt/og-image-cache` e calcula a impressão digital das opções,
fontes e versões do renderer. Uma alteração esvazia a cache restaurada antes de
servir uma imagem antiga. Depois da build, `duxt-og-cache --root . --report
--since "$STARTED_MS" --log build.log` mede a reutilização real.

## Lista de verificação

- [ ] `--root` aponta para a aplicação consumidora.
- [ ] A cache de fontes só é usada com `cacheable == 'true'`.
- [ ] `contents.sqlite*` e fontes privadas ficam excluídos.
- [ ] A cache OG usa as rolling restore keys emitidas.
- [ ] O Nuxt inclui os inputs de renderização do site na impressão digital.