Processo de Software Extremo para desenvolvimento com IA

Rigor de engenharia, calibrado ao projeto.

O X-PRO.ai compila o perfil de um projeto em uma biblioteca de guardrails em Markdown puro que um agente de IA lê enquanto desenvolve. O mesmo catálogo global produz as regras de um PoC descartável ou de um sistema regulado conforme as respostas — e cada decisão de incluir, adiar ou descartar uma prática fica registrada com seu motivo.

4
camadas EA · 40 práticas
T0–T3
tiers calibrados
100%
saída determinística
5
frameworks de referência
01 / O problema que ele resolve

Catálogos de boas práticas dizem o que sistemas excelentes fazem. Nunca dizem o quanto.

AWS & Azure Well-Architected, Google SRE, 12-factor, DORA — descrevem o que grandes sistemas fazem. Aplicados ao pé da letra em uma ferramenta interna de duas semanas, são desperdício. Aplicados de forma frouxa em uma plataforma de pagamentos, são perigosos. O difícil não é conhecer as práticas. É decidir o quanto de cada uma um projeto merece, e ser honesto sobre o que você escolheu pular.

super-engenharia Tudo, em todo lugar

Multi-região, circuit breakers, DDD tático completo e GitOps em um PoC que vive duas semanas. O rigor é real, o custo é real, e nada disso move o risco real do projeto.

sub-engenharia Frouxo no caminho crítico

Uma superfície de pagamento entregue com autenticação caseira, segredos no repositório e nenhum restore testado — porque as "boas práticas" foram tratadas como item opcional de backlog.

A postura do X-PRO.ai

Tratar a calibração como uma computação auditável de primeira classe. Você perfila o projeto uma vez; um Tier é derivado; o Tier modula cada prática de Required até Discarded; e os trade-offs são registrados em vez de deixados implícitos. É um motor de trade-offs — não um template "do melhor dos mundos".

02 / Modelo mental

Um catálogo mais as suas respostas → uma instância calibrada.

O catálogo é o dado; as suas respostas selecionam dele; os artefatos são a saída. Mude o catálogo e todo projeto que atualizar herda a melhoria. Mude as respostas e apenas os artefatos daquele projeto se movem.

entrada

Respostas

  • Criticidade (5×0–3)
  • Complexidade (4×0–2)
  • 4 baterias de camada
  • Flags & restrições
camada 0

Motor de Tier

  • Matriz C × K → tier base
  • Ratchet de override (só sobe)
  • Tiers por dimensão
  • Detecção de conflitos
estágio 3

Gating

  • required_if (guiado pela resposta)
  • tier_required / recommended
  • modulação fast_mvp
  • Req · Rec · Def · Dis
saída

Artefatos

  • 00-PROFILE + 4 camadas
  • TRADE-OFFS / DoD
  • AI-AGENT-RULES.md
  • → o agente lê isso

O gerador é determinístico: mesmas respostas + mesma versão de catálogo = saída idêntica byte a byte. O lock file registra um answers_digest; se uma resposta muda, o digest diverge e os artefatos são marcados como obsoletos. Essa propriedade é o pré-requisito para auditar e versionar a saída.

03 / Camada 0 — o motor de tier

Dois eixos, pontuados em questionários curtos, derivam o Tier.

Mova os controles. Criticidade soma cinco perguntas (impacto, sensibilidade, raio de impacto, SLA, reversibilidade). Complexidade soma quatro (domínio, integrações, dados, distribuição). Cada par de faixas mapeia para um Tier base pela matriz — e então os flags de override o elevam. Esta calculadora roda a lógica real do tier-engine.yaml.

Criticidade é o eixo dominante. Complexidade sozinha nunca alcança T3 — ela trava em T1 quando a criticidade é baixa e em T2 quando é média. T3 só é atingido por C-High × K-High, por C-Critical em qualquer complexidade, ou por um flag de override. A complexidade eleva o piso; ela não define o teto.

Criticidade (C) C-Low · 0/15
0
0
0
0
0
Complexidade (K) K-Low · 0/8
0
0
0
0
Flags de override ratchet · só sobe
PII / financeiro → seg ≥ T2 pagamento / PCI → seg ≥ T3 regulado → global T3 risco à vida → global T3 restrição fast_mvp
K-LowK-MedK-High
C-CriticalT3T3T3
C-HighT2T2T3
C-MedT1T2T2
C-LowT0T1T1
TIER GLOBAL
T0
base T0
confiabilidadeT0
segurançaT0
desempenhoT0
custoT0
operacionalT0
nenhum override aplicado
T0

Descartável / PoC. Rigor pesado não vaza — só o básico "decisão obrigatória" mais o ratchet de segredos.

T1

Interno, baixa criticidade. Caminho crítico testado, logs estruturados, backup diário, autoridade única de decisão.

T2

Produto. Monólito modular, métricas RED, testes de integração, multi-AZ, IaC e governança por ADR.

T3

Crítico / regulado. Circuit breakers, tracing + SLOs, multi-região, zero-trust, PITR contínuo, canary.

04 / Overrides — um ratchet de via única

Algumas respostas fixam um piso no Tier, independentemente de orçamento ou prazo.

Overrides só elevam o Tier, nunca o reduzem. O resultado é um Tier global mais um Tier por dimensão. Um produto consciente de custo pode rodar em T2 globalmente enquanto sua dimensão de segurança é elevada a T3 por um flag de pagamento.

A escada de tiers · overrides são um ratchet de via única

T0PoCT1internoT2produtoT3reguladooverrides só elevam∅ nunca rebaixam um tier
CondiçãoEfeitoPor que só pode subir
Dados reguladospiso global T3A exposição regulatória é inegociável; o prazo não muda a lei.
Dados PII / financeirossegurança ≥ T2Sensibilidade é uma propriedade do dado, não do orçamento.
Flag de pagamento / PCIsegurança ≥ T3Dados de cartão carregam um piso fixo de controles.
Impacto de risco à vidapiso global T3A falha pode ferir pessoas; o rigor não pode ser negociado.
Segredo no códigoproibido — qualquer tierUm ratchet rígido: APP-09 dispara até no piso T0.

Conflitos — detectados, não bloqueados

Quando o rigor exigido excede a capacidade declarada — um SLA de 99,9% contra uma restrição de "prazo apertado / equipe pequena" — isso é sinalizado como risco aceito no TRADE-OFFS.md. A geração prossegue. O ponto é uma decisão consciente, não uma parada.

dimension_tier = max(global, override)

Cada uma de confiabilidade, segurança, desempenho, custo, operacional, sustentabilidade resolve para o máximo entre o Tier global e qualquer override aplicável. O ratchet é monotônico — não há caminho que reduza uma dimensão abaixo do seu piso.

05 / A função de gating

A resposta decide se uma prática se aplica. O Tier decide o quanto.

Este é o núcleo do estágio 3. Para cada uma das 40 práticas, o gerador lê a resposta, pega o tier efetivo da dimensão da prática e resolve um status. Duas ideias importam: required_if torna uma prática obrigatória por causa do que o projeto é; o Tier então escala o rigor de todo o resto.

Como o status é resolvido · para na primeira que casa

required_if casa?simRequirednãooverride casa?simRequirednãoteff ≥ tier_required?simRequirednãoteff ≥ tier_recommended?simRecommendednãotem trade_off?simDeferredsenãoDiscarded
1
required_if casa com a resposta Required Mandato guiado pela resposta. Alto volume de dados → particionamento é Required, não importa o Tier.
2
override casa com a resposta Required O ratchet. PII/regulado força auth, criptografia e residência para Required.
3
teff ≥ tier_required Required Gating por tier: o tier efetivo da dimensão atinge o limiar exigido.
4
teff ≥ tier_recommended Recommended Abaixo do exigido mas acima do piso recomendado: siga, salvo justificativa em um ADR.
5
a prática tem um trade_off Deferred Caso contrário Discarded. Itens Deferred ganham um gatilho de reativação no TRADE-OFFS.md.
6
fast_mvp & Recommended & deferrable & não-segurança Deferred Modulação de velocidade. Só relaxa rigor deferrable e não-segurança — nunca algo que já é Required.
# função de gating — v1.1 (estágio 3) teff = tier_by_dimension[ practice.dimension ] # (1) a prática se aplica? — guiado pela resposta if gate.required_if casa com a resposta -> Required elif gate.override casa com a resposta -> Required # ratchet # (2) quanto rigor? — guiado pelo tier elif teff >= gate.tier_required -> Required elif teff >= gate.tier_recommended -> Recommended elif a prática tem um trade_off -> Deferred else -> Discarded # (3) modulação de velocidade — só deferrable e não-segurança if time_to_market == fast_mvp and status == Recommended and practice.deferrable and dimension != security: status = Deferred # registrado em TRADE-OFFS

A calibração travou os dois refinamentos acima com golden fixtures: deferrable impede que fast_mvp rebaixe higiene barata (logs, monólito modular, CI/CD básico), e required_if captura mandatos guiados pela resposta que só o Tier deixaria passar.

06 / O bloco de decisão & as quatro camadas

Cada prática é um registro do catálogo, renderizado em vários destinos.

Um único registro carrega sua diretiva (Do / Don't / Example / Verification). O Do/Don't compila para AI-AGENT-RULES.md; o Verification compila para DEFINITION-OF-DONE.md; um trade_off vira uma entrada no TRADE-OFFS.md. Um registro, vários destinos.

### [APP-05] Failure resilience — Required
- Gate: tier_required=T3 · tier_recommended=T2 · dimension=reliability
- Origin: APP-Q5 = "circuit_breaker_bulkhead"
- Reference: AWS WAF · Reliability · resilience
- Do: timeout + retry(exp,jitter); breaker por dependência; bulkhead + fallback
- Don't: distribuir uma transação sem um padrão
- Verification: a falha de uma dependência não derruba o serviço
- Trade-off: → TRADE-OFFS.md quando abaixo do gate
Status
Required · Recommended · Deferred · Discarded — resolvido pela função de gating.
Gate
Os limiares e o tier efetivo da dimensão que decidem o status.
Origin
A pergunta + resposta exata da bateria que produziu este bloco — rastreabilidade total.
Reference
O framework de origem (WAF / SRE / DORA / 12-factor / Fowler) da prática.
Directive
Do / Don't / Example / Verification estruturados — escalam por tier via inherits.

Um registro, vários destinos

Registro do catálogoDo / Don'tAI-AGENT-RULES.mdVerificationDEFINITION-OF-DONE.mdtrade_offTRADE-OFFS.mdbloco completo0N-CAMADA.md
CAMADA 01

Negócio

Em geral não vira código — vira restrições que as outras camadas herdam, carregadas em uma linha propagates.

BUS-01 … BUS-10
CAMADA 02

Aplicação

Apresentação, modelagem de domínio, comunicação, consistência, resiliência, observabilidade, auth, testes, config, extensibilidade.

APP-01 … APP-10
CAMADA 03

Dados

Classificação, modelo, volume, integridade, acesso, retenção, privacidade, linhagem, backup/RPO, movimentação.

DATA-01 … DATA-10
CAMADA 04

Infraestrutura

Hospedagem, computação, disponibilidade, RTO/DR, escalabilidade, postura de segurança, exposição, IaC, CI/CD, custo.

INFRA-01 … INFRA-10
07 / O que o gerador emite

Uma biblioteca de Markdown puro que o agente lê como guardrails.

Aponte o Claude Code, Cursor, Copilot, ou qualquer agente LLM genérico para o AI-AGENT-RULES.md — ele achata as diretivas Required e Recommended em regras imperativas que o agente segue ao construir. Os nomes de arquivo ficam sem versão; cada arquivo declara sua versão internamente.

00-PROJECT-PROFILE.mdSaída da camada 0: o Tier, scores, overrides e conflitos detectados. Fonte da verdade.
01·02·03·04-*.mdAs quatro camadas EA, cada uma uma bateria de blocos de decisão renderizados do catálogo.
AI-AGENT-RULES.mdDiretivas Required/Recommended achatadas. Variantes finas para CLAUDE.md, .cursorrules, copilot-instructions.
DEFINITION-OF-DONE.mdO gate de pronto — montado dos campos de verificação, filtrado por tier. Nenhum item Required entrega sem cumprir.
TRADE-OFFS.mdCada prática Deferred/Discarded + motivo + gatilho de reativação. O arquivo que justifica as ausências.
NFR.md · SECURITY-BASELINE.mdMetas não-funcionais (SLO, RTO/RPO, orçamentos) e controles mínimos por classificação + tier.
08 / Exemplo prático

Plataforma de aprovação de despesas — onde o motor mostra seu valor.

Uma plataforma interna de aprovação de despesas: ~2.000 funcionários, integra um ERP e um gateway de pagamento, construída por uma equipe pequena sob prazo apertado.

Scores: C = 8 (C-High), K = 4 (K-Med) → base T2. O flag payment_pci eleva a segurança para T3. O rigor de execução exigido excede a capacidade declarada de equipe/prazo — registrado como risco aceito, não como bloqueio.

O exemplo é gerado pelo mesmo gerador a partir do t2-expense.yaml, então fica em sincronia com o catálogo.

25
Required
7
Recommended
8
Deferred

APP-07 auth → Required (override financeiro) · APP-05 resiliência → Recommended (deferrable=false, sobrevive ao fast_mvp) · APP-10 extensibilidade → Deferred (deferrable=true). Cada um dos 8 itens Deferred aparece no TRADE-OFFS.md com um gatilho de reativação.

09 / O autor

Da pesquisa em capacity planning de nuvem ao rigor de engenharia calibrado.

CD

Carlos Diego C. P., DSc  · cientista da computação · empreendedor · professor

Cientista da computação, empreendedor e professor, com mestrado e doutorado em Ciência da Computação. Fundador e CEO & CTO da Valcann (computação em nuvem), professor na CESAR School, Visiting Fellow no MIT e AWS Ambassador na América Latina — AWS Ambassador of the Year 2021, vencedor na América Latina e 2º no mundo. A pesquisa abrange engenharia de software, sistemas distribuídos, computação em nuvem, dados e IA.

O X-PRO.ai nasce diretamente desse trabalho. Sua tese de doutorado de 2023, “Capacity Planning of Cloud Computing Workloads” — a primeira tese de um doutorado profissional em Engenharia de Software no Brasil — é o mesmo instinto aplicado à arquitetura: ajustar o investimento à demanda real e tornar o trade-off explícito. O framework transforma esse julgamento em dado auditável e versionado, em vez de conhecimento tribal.

Contribuições ao catálogo, ao motor de tier e às fixtures de calibração são exatamente o que o projeto precisa a seguir. O formulário abaixo vai direto para a caixa de entrada.

cdiego.com ↗ GitHub ↗ LinkedIn ↗ Participe do projeto
10 / Participe do projeto

Conte como você gostaria de contribuir.

Práticas do catálogo, ajuste do motor de tier, fixtures de calibração, o gerador, docs, ou um estudo de caso real para endurecer o framework. Mande uma mensagem e eu respondo diretamente.

Ao enviar, um e-mail vai para o mantenedor. Seu endereço é usado apenas para responder.