# ADR-0001 — Modular Monolith como estilo arquitetural inicial

**Status:** Accepted  
**Data:** 2026-07-14  
**Decisores:** Arquitetura de Software

---

## Contexto

O Mud Sentinel combina múltiplos bounded contexts (catálogo, grafo, ingestão, IA, casos, billing, auditoria). Há pressão para “já nascer em microserviços”, mas o time e o produto ainda validam o fit de mercado. Falhas de fronteira em microserviços prematuros geram inconsistência distribuída e custo operacional incompatível com a fase.

## Decisão

Adotar **Modular Monolith**: um deploy de aplicação core com módulos por bounded context, boundaries lintados, e workers assíncronos co-versionados. Extração para serviços somente com ADR e evidência.

## Alternativas consideradas

| Opção | Prós | Contras | Por que não |
|--------|------|---------|-------------|
| Microserviços desde o dia 1 | Escala independente | Ops, latência, sagas, dual writes | Complexidade prematura |
| Monólito sem módulos | Velocidade inicial | Big ball of mud inevitável | Indefensável em longo prazo |
| Serverless-only | Escala automática | Orchestration longa, vendor, cold starts | Inadequado como core |

## Consequências

### Positivas
- Transações locais e consistência mais simples no MVP.
- Refactors baratos entre módulos no mesmo repo.
- Caminho claro para extração futura.

### Negativas / riscos
- Risco de erosão de boundaries se disciplina falhar.
- Scaling é tipicamente horizontal do conjunto, não por módulo.

### Follow-ups
- [ ] Configurar import linter na fase de skeleton.
- [ ] Critérios quantitativos de extração documentados na modularização.

## Referências

- [Arquitetura Geral](../arquitetura/01-arquitetura-geral.md)
- [Modularização](../arquitetura/03-modularizacao.md)
