docs(config): atualiza design log com Frente D

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-27 19:55:28 +00:00
parent fdbf40cd1a
commit 70ecfdc927

View File

@@ -343,6 +343,32 @@
3. **Master-login stub + WorkspacePrismaPool** (frente arquitetural — depende do PRD).
4. **OpenTelemetry SDK** plugar quando entrar no catálogo.
### 2026-05-27 — Frente D (ESLint boundaries + Husky + commitlint + gitleaks) CONCLUÍDA ✅
- **Escopo da sessão:** Higiene de PR — guardrails de qualidade antes da primeira feature de domínio.
- **D1 — Tags Nx + depConstraints:**
- Tags `scope:api|web|shared`, `type:app|e2e|util`, `domain:shared` adicionadas em todos os 5 projetos (e2e estavam vazios).
- `eslint.config.mjs` depConstraints substituído por regras explícitas em 3 eixos:
- `scope`: api só usa api+shared; web só usa web+shared; shared não importa código de app-scope.
- `type`: apps dependem só de libs (feature/util/data); e2e só do seu app-par + utils; utils são folha.
- `nx run-many --skip-nx-cache` verde em todos os 3 projetos com as novas regras.
- **D2 — Husky + lint-staged:**
- `husky 9` + `lint-staged 17` instalados. `prepare: "husky"` no `package.json`.
- `pre-commit`: `eslint --max-warnings=0` + `prettier --check` só nos arquivos staged (rápido, sem varrer repo inteiro).
- **D3 — commitlint:**
- `@commitlint/cli` + `@commitlint/config-conventional` instalados.
- `commitlint.config.js`: tipo obrigatório, subject lowercase, scope enum como `warn` (não `error` — permite escopos novos sem bloquear), body/footer ilimitados.
- Hook `commit-msg` ativo. Smoke test: mensagem inválida → 2 erros; mensagem válida → pass.
- **D4 — gitleaks via Docker:**
- `.gitleaks.toml` criado com `useDefault = true` + allowlist para `.agents/`, `.claude/`, `tmp/`, `.env.example`, `pnpm-lock.yaml`.
- Iteração em 3 rodadas para zerar falsos positivos: (1) JWTs de exemplo em BMad skills → excluir `.agents/` e `.claude/`; (2) `tmp/gitleaks-report.json` autopoluindo scan → excluir `tmp/` + adicionar ao `.gitignore`; (3) zero leaks no tree completo.
- Pre-commit roda via `docker run --rm -v ... zricethezav/gitleaks:latest`; fallback silencioso se Docker indisponível (socket sem permissão no contexto do hook — comportamento correto; CI usa binário nativo).
- **Pegadinha do commit-msg:** subject-case do commitlint rejeita "F" maiúsculo em "Frente D" — subject deve ser lowercase. Corrigido na mensagem de commit.
- **Pegadinha Docker no hook:** `sg docker` não funciona em hooks não-interativos. Solução: fallback com `echo` + warning, e usar `sudo usermod -aG docker $USER` + logout/login para resolver permanentemente no desktop dev.
- **Pendente próxima sessão (ordem atualizada):**
1. **PRD WDS** via `/bmad-prd create` antes de modelar qualquer domínio. Desbloqueia master-login + WorkspacePrismaPool.
2. **Master-login stub + WorkspacePrismaPool** (frente arquitetural pesada — depende do PRD).
3. **OpenTelemetry SDK** plugar quando entrar no catálogo.
---
## About This Folder