# 08-memory.md — SDDL-3: Fix correção run SDD validation

**Artefato**: Memória (Etapa 8)
**Card**: SDDL-3
**Data**: 2026-06-24
**Commit**: `636643d`
**Rastreabilidade**: `docs/sddl-3/08-memory.md`

---

## Estado final

Card **concluído e commitado**. Versão do projeto: `0.15.3`.
CI não falhará mais por version drift. Processo de bump agora é atômico e documentado.

---

## Decisões e aprendizados reutilizáveis

### D1 — Nome do pacote Cargo é `sdd-layer`, não `sdd`

`Cargo.toml:2` declara `name = "sdd-layer"`. Comando correto:

```bash
cargo update -p sdd-layer --precise <versão>
```

Usar `-p sdd` falha ou atualiza entrada errada.

### D2 — `$ErrorActionPreference = 'Stop'` não captura executável nativo no PS

`try/catch` não converte exit code de `cargo.exe` em exceção. Sempre verificar `$LASTEXITCODE -ne 0` após chamada a qualquer executável nativo em PowerShell.

### D3 — Substituição de `version` no `Cargo.toml` exige máquina de estado por seção

`Cargo.toml` repete `version` em múltiplas seções. Substituição correta rastreia flag `inpkg` (ativa somente em `[package]`) e aplica na primeira ocorrência. Mesma heurística de `cargo_toml_package_version` em `src/main.rs:9893`.

### D4 — Ordem de escrita: TOML → lock → VERSION

`VERSION` escrito por último, após `cargo update` confirmar sucesso. Backups `.bak` restaurados em falha antes de encerrar.

### D5 — RN-03: bumps manuais proibidos neste repositório

Documentado em `scripts/README.md`. Qualquer edição direta causará FAILURE no CI.

---

## Padrões identificados no projeto

| Ponto | Localização |
|---|---|
| Detecção de source repo | `src/main.rs` — `is_layer_source_repo()`: detecta `src/main.rs` + `plugins/orchestration/` |
| Verificação de versão | `src/main.rs` — `version_alignment_issues()`: compara 3 fontes, FAILURE em strict mode |
| Parse de versão TOML | `src/main.rs:9893` — `cargo_toml_package_version()`: máquina de estado por seção |

---

## Comandos úteis

```bash
# Bump de versão (Linux/CI)
./scripts/bump-version.sh patch
./scripts/bump-version.sh 0.16.0

# Windows PowerShell
.\scripts\bump-version.ps1 patch

# Validar sincronização
sdd doctor && sdd ci
```

---

## Contexto para próximos agentes

- Qualquer bump **deve** usar `scripts/bump-version.sh` ou `.ps1`. Bumps manuais causam FAILURE.
- Nome do pacote Cargo: `sdd-layer` — sempre `-p sdd-layer` em `cargo update`.
- Em PowerShell: checar `$LASTEXITCODE`; `try/catch` não captura nativos.
- Versão atual: `0.15.3`.
- Artifact store: `docs/sddl-3/`.
