Fase 0 — descoberta e arquitetura:
- Inventário do projeto, glossário de domínio, arquitetura com bounded
contexts e topologia de containers, threat model inicial.
- 12 ADRs cobrindo modular monolith, topologia de containers (Postgres
isolado + eden-core/parceiros/assinante em containers e portas
distintos), auth/sessões, modelo de permissões, criptografia/segredos,
contrato first-class, stock ledger, separação billing/finance/fiscal,
outbox transacional, adapters SaperX e Focus NFe, e identidade
compartilhada entre as 3 apps.
- 14 subagentes e 7 skills especializados por domínio em .claude/.
- Hooks de segurança (PreToolUse/PostToolUse/Stop) testados via pipe.
Fase 1 — plataforma (em andamento):
- Monorepo pnpm workspaces + Turborepo: apps/{api,worker,core-web,
reseller-web,subscriber-web} + 9 packages compartilhados.
- apps/api: NestJS mínimo com /health/live e /health/ready (checando
Postgres real via @eden/database).
- 3 frontends Vite + React + TypeScript + Tailwind, com o favicon
oficial do EDEN.
- packages/database: migration baseline (node-pg-migrate) criando
roles/role_permissions/applications/users/user_applications/sessions/
audit_log — audit log append-only com hash-chain, testado ao vivo
(UPDATE/DELETE bloqueados pelo trigger).
- compose.yaml implementando a topologia da ADR-0002, validada de ponta
a ponta: os 6 containers sobem e ficam saudáveis com um único
`docker compose up`.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
7.6 KiB
EDEN — Progresso
Fase 0 — Descoberta e Arquitetura: CONCLUÍDA
Data: 2026-09-03.
Entregáveis
docs/project-inventory.md,docs/glossary.md,docs/architecture.md,docs/assumptions.md,docs/security/threat-model.md,docs/implementation-plan.md,docs/progress.md(este arquivo).- 12 ADRs em
docs/adr/(0001–0012), cobrindo: modular monolith, topologia de containers (Postgres isolado + eden-core/parceiros/assinante em containers/portas distintas — decisão explícita do operador), auth/sessões, modelo de permissões, criptografia/segredos, contrato first-class, stock ledger, separação billing/finance/fiscal, outbox transacional, adapter SaperX, adapter Focus NFe, três apps com identidade compartilhada. - 14 subagentes em
.claude/agents/: eden-architect, eden-database, eden-security, eden-commercial, eden-finance, eden-fiscal, eden-inventory, eden-telecom, eden-support, eden-hr-timeclock, eden-frontend, eden-api-integrations, eden-qa, eden-code-reviewer. - 7 skills em
.claude/skills/: eden-domain, eden-security, eden-finance, eden-fiscal, eden-inventory, eden-telecom, eden-timeclock — cada uma comSKILL.md+references/. - Hooks em
.claude/settings.json+.claude/hooks/*:PreToolUse(guarda de comandos Bash destrutivos/externos e de acesso a arquivo fora do projeto/.ssh//etc/segredo),PostToolUse(lint/typecheck incremental, fail-open enquanto pnpm não existir),Stop(checagem advisória de segredo/TODO crítico no diff, silenciosa até existir repositório git). Testados via pipe com payloads sintéticos — todos os cenários (allow/ask/deny/fail-open) se comportaram como esperado.
Revisão cruzada (self-review contra os critérios dos agentes eden-architect / eden-security / eden-database, criados nesta mesma fase)
eden-architect: bounded contexts (docs/architecture.md §2) têm direção de dependência consistente (nenhum ciclo); HR/Timeclock corretamente isolado; candidatos a extração futura (Billing, Fiscal) identificados sem extração prematura. Nenhuma feature de negócio foi implementada antes deste gate — consistente com o Master Prompt §18.
eden-security: threat model cobre as superfícies do legado (rotas públicas, auth, autorização, integrações, upload, PDF, auditoria, infraestrutura) mais os invariantes de teste obrigatórios (§15.3). Hooks PreToolUse já impõem, a nível de ferramenta, várias regras de §2.1/§2.2 (fora do projeto, .ssh//etc, impressão de .env, SSH/SCP externo, remoção ampla de volume/prune). Pendência real registrada (não bloqueante): política de retenção/eliminação LGPD ainda não definida pela Handix (docs/assumptions.md #1).
eden-database: princípios de modelagem (§11) já refletidos nas ADRs de contrato/estoque/billing (nunca saldo editável, nunca CASCADE indiscriminado, JSONB só para snapshot/metadata). Nenhum schema físico foi criado ainda nesta fase — corretamente adiado para a Fase 1, quando o Postgres 18 realmente subir.
Nota: esta revisão foi feita pela própria sessão orquestradora aplicando os critérios definidos nos arquivos de agente recém-criados. Os subagentes dedicados (eden-architect, eden-security, eden-database) ficam disponíveis para revisões reais em sessões futuras assim que o Claude Code os carregar como subagent types.
Pendências não bloqueantes (ver docs/assumptions.md)
- Política de retenção/eliminação de dados pessoais (LGPD) — Handix ainda não definiu.
- Docker/Node/pnpm precisam ser provisionados no ambiente antes da Fase 1.
- Portas dos containers definidas via
.env(não fixas) — ver ADR-0002. - Git ainda não iniciado no projeto — planejado para o início da Fase 1.
- Inventário fino do
tema_do_Eden.zip(extração de componentes) adiado para o início deeden-frontend.
Gate de saída da Fase 0: VERDE
Todos os itens do checklist da seção 22 do Master Prompt (“Primeira Execução”) estão completos.
Fase 1 — Plataforma: EM ANDAMENTO
Data de início: 2026-09-03.
Ambiente provisionado
- Docker CE 29.7.2 + Compose v5.5.0 (repositório oficial Docker, não o
docker.iodo Debian) instalados via apt. - Node.js 22.23.2 LTS (NodeSource) + pnpm 11.25.0 (via corepack).
- Git 2.47.3. Repositório inicializado (
main), remotoorigin=https://git.falehandix.com.br/Matheus/eden.git(nenhum push feito ainda).
Monorepo
- pnpm workspaces + Turborepo. 5 apps (
api,worker,core-web,reseller-web,subscriber-web) + 9 packages, todos compackage.json/tsconfig.jsonválidos. pnpm install,pnpm turbo run typecheckepnpm turbo run buildpassam 100% (15/15 e 14/14 tarefas, respectivamente) em todo o monorepo.apps/api: NestJS mínimo com/health/livee/health/ready(este último checando Postgres de verdade via@eden/database).apps/worker: placeholder que confirma conectividade com o banco; sem BullMQ/Redis ainda (conforme ADR-0002 — só entra quando houver job real).apps/core-web,apps/reseller-web,apps/subscriber-web: Vite + React + TS + Tailwind, cada um com favicon oficial do EDEN.packages/database: migrations vianode-pg-migrate(formato.cjs), client de query (pgPool).
Banco de dados
- Migration baseline aplicada com sucesso contra Postgres 18.6 real (container
eden-postgres):roles,role_permissions,applications,users,user_applications,sessions,audit_log— cobrindo Identity & Access (ADR-0003/ADR-0004) e um audit log append-only com hash-chain (testado:UPDATE/DELETEsão efetivamente bloqueados pelo trigger, só liberados viaSET LOCAL eden.allow_audit_mutation). - Seeds: 4 papéis do sistema (pesos idênticos ao legado) + as 3 aplicações (
core/reseller/subscriber). - Organization (empresas/entidades legais), Commercial e demais bounded contexts ainda não têm migration — ficam para quando cada fase começar, por design (ver ADR-0001).
Docker Compose — topologia ADR-0002 validada de ponta a ponta
docker compose --env-file .env up -d sobe os 6 serviços com sucesso:
| Serviço | Status observado |
|---|---|
eden-postgres |
healthy — porta dev 55432, nunca 5432 direto |
eden-api |
healthy — único serviço com DATABASE_URL; /health/ready confirma Postgres via rede interna |
eden-worker |
up — conecta ao Postgres, sem porta exposta |
eden-core (:3001) |
healthy — HTTP 200 |
eden-parceiros (:3002) |
healthy — HTTP 200 |
eden-assinante (:3003) |
healthy — HTTP 200 |
Bugs de bootstrap corrigidos nesta sessão (documentados aqui para não se repetirem):
- Imagem oficial
postgres:18-alpinemudou o layout do volume — precisa montar/var/lib/postgresql(não.../data). apps/api/package.jsontinha"type": "module"incompatível com otsconfig(saída CommonJS) — Node falhava comexports is not defined.node-pg-migrate --envPathnão carregava o.envcorretamente nesta versão — trocado porbash -c 'source .env; ...'nos scriptsmigrate:up/migrate:down.- Healthcheck dos 3 frontends usava
wget http://localhost/..., que resolve para::1(IPv6) dentro do container — nginx só escuta IPv4; trocado para127.0.0.1.
Pendências da Fase 1 (não iniciadas)
- Módulo de autenticação real (Argon2id, JWT curto + refresh rotativo, MFA) — ADR-0003 desenhada, implementação ainda não começou.
- Companies/Legal Entities (Organization).
- Adapters S3/SMTP.
- OpenAPI 3.1.
- Extração do Design System a partir do tema DreamsERP (
packages/uiainda é placeholder). - Nenhum commit git feito ainda — aguardando solicitação explícita do operador.