O modelo Spec Driven assume que é possível descrever o sistema antecipadamente por meio de requisitos, contratos e documentação.
Esse modelo falha em ambientes com alta complexidade, agentes autônomos e ciclos contínuos.
O problema não é falta de especificação. É a separação entre definição, execução e validação.
Limitações do Spec Driven
-
Documentação não executável
- Regras existem, mas não são aplicadas automaticamente
- Divergência entre intenção e implementação
-
Validação tardia
- Erros aparecem apenas em integração ou produção
- Alto custo de correção
-
Baixa adaptabilidade
- Mudanças exigem coordenação manual entre múltiplos artefatos
- Impacto difícil de rastrear
-
Incompatível com agentes
- LLMs não “entendem” documentos — operam sobre contexto limitado (tokens)
- Informação fora do contexto simplesmente não existe para o agente
![Title "Harness engineering for coding agent users". Overview of guides (examples shown are [inferential] principles, CfRs, Rules, Ref Docs, How-tos; [computational] Language Servers, CLIs, scripts, codemods) that feedforward into a coding agent; and feedback sensors (examples shown are [inferential] review agents; [computational] static analysis, logs, browser). The feedback sensors point at the coding agent as well as input into its self-correcting loop. On the left side of it all we see a box with a human who steers both the guides and sensors.](https://martinfowler.com/articles/harness-engineering/harness-overview.png)
Harness Engineering: mudança estrutural
Harness Engineering redefine o papel da engenharia:
- Humanos definem intenção e restrições
- Agentes executam
- O sistema (harness) valida, corrige e mantém coerência
Na prática:
Agent = Model + Harness
O harness é tudo que garante confiabilidade fora do modelo:
- contexto estruturado
- regras executáveis
- validação automática
- loops de feedback
Um framework orientado a Harness tende a organizar o sistema por fluxo e validação, não por camadas isoladas:
/harness
/specify
checkout.flow.md
pricing.rules.md
/model
cart.model.ts
order.model.ts
/integrations
payment.contract.ts
shipping.adapter.ts
/validate
checkout.test.ts
pricing.test.ts
/simulate
checkout.simulation.ts
/orchestration
checkout.workflow.ts
/state
order.state.ts
/analysis
impact-analysis.md
/handoff
session-handoff.mdLeitura da estrutura
-
specifydefine intenção (não documento morto, mas conectado) -
modelrepresenta comportamento do sistema -
integrationsconecta serviços externos -
validategarante consistência contínua -
simulatepermite testar cenários antes de produção -
orchestrationcontrola o fluxo real -
statemantém coerência de dados -
analysismede impacto de mudanças
Características técnicas do Harness (convergência das fontes)
1. Engenharia de contexto (OpenAI + Fowler)
- Contexto não é prompt — é infraestrutura versionada
- Tudo relevante deve estar no repositório
- Caso contrário, o agente não “vê”
2. Feedback loops contínuos (OpenAI)
- Testes, CI, observabilidade e validação são parte do fluxo
- O foco sai do código e vai para o sistema de controle
3. Separação geração vs avaliação (Anthropic)
- Agentes não são bons avaliadores de si mesmos
- Avaliação precisa ser externa, determinística ou independente
4. Restrições arquiteturais executáveis (Fowler)
- Linters, testes estruturais e fitness functions
- Regras deixam de ser texto e viram código verificável
5. Gestão de entropia (OpenAI + Fowler)
- Sistemas com agentes degradam rapidamente
- Necessário “garbage collection” contínuo (refactor automático, limpeza)
Impacto em aplicações complexas
Em sistemas como e-commerce, fintech ou plataformas distribuídas:
Sem harness (Spec Driven):
- inconsistência entre serviços
- falhas emergentes em produção
- dependência de alinhamento humano constante
Com harness:
- validação contínua ponta a ponta
- integração automática entre domínios
- comportamento previsível mesmo com agentes
OpenAI demonstrou isso na prática:
um sistema com ~1 milhão de linhas geradas por agentes, mantido por poucos engenheiros, com aumento significativo de velocidade
Economia de tokens no desenvolvimento de softwares complexos (ponto crítico)
LLMs operam sob uma limitação fundamental: janela de contexto.
Harness Engineering resolve isso estruturalmente:
- estado persistido em arquivos (não em memória do prompt)
- contexto carregado sob demanda (não tudo de uma vez)
- decomposição em tarefas menores
- histórico versionado (git, logs, artifacts)
Resultado:
- menos tokens por execução
- menor custo operacional
- maior previsibilidade
- menos “alucinação por falta de contexto”
Sem harness:
cada execução tenta “reconstruir o mundo” via prompt.
Com harness:
o mundo já está estruturado e acessível.
Síntese
Spec Driven:
- baseado em documentação
- validação tardia
- dependente de coordenação humana
Harness Engineering:
- baseado em execução e validação contínua
- regras como código
- contexto estruturado e persistente
- agentes operando com controle
O limite do Spec Driven não é técnico — é estrutural.
Em sistemas modernos, especialmente com IA,
não basta definir o que o sistema deve fazer.
É necessário construir um ambiente onde o sistema:
- se valida
- se corrige
- e evolui continuamente
Esse ambiente é o harness.
Framework Harness
https://github.com/jaccon/harness-project-contexts
Fontes:
OpenAi: https://openai.com/index/harness-engineering/
Antropic: https://www.anthropic.com/engineering/harness-design-long-running-apps
Martin Fowler Blog: https://martinfowler.com/articles/harness-engineering.html
André Jaccon