Pular para o conteúdo
EN · PT

Doutrina de Produto

Nem toda regra de negócio pertence a uma única tela ou função isolada.

Pense em regras como estas:

  • “Qualquer valor monetário exibido na aplicação deve seguir o padrão brasileiro (R$ 1.234,56).”
  • “Se o usuário ficar inativo por 15 minutos, a sessão deve expirar em qualquer tela.”
  • “Dados sensíveis (como CPF ou cartão) nunca podem ser gravados em logs abertos.”

Se você copiar e colar essas regras na spec de cada tela do seu sistema, acontecerá o desastre inevitável: no dia em que a regra mudar de 15 para 20 minutos, alguém atualizará cinco specs e esquecerá as outras dez. O produto diverge e ninguém percebe.

Para resolver isso, o Anchors introduz a Doutrina de Produto (Product Doctrine).


Uma Doutrina de Produto é uma especificação centralizada de regras transversais que cortam múltiplas unidades do projeto.

Elas ficam localizadas em uma camada dedicada (geralmente product/*.doctrine.md), declarada no anchors.yaml.

product/
├── formatacao_moeda.doctrine.md
├── seguranca_sessao.doctrine.md
└── protecao_dados.doctrine.md

Em vez de cada tela inventar a sua própria regra, o arquivo de doutrina é a única fonte da verdade.


Como o Anchors sabe que uma tela ou serviço do seu sistema está cumprindo a Doutrina de Produto? Através da anotação @realizes.

Quando uma spec local implementa ou respeita uma regra da doutrina, ela aponta para o código da regra central:

1. No arquivo de Doutrina (product/seguranca_sessao.doctrine.md):

Seção intitulada “1. No arquivo de Doutrina (product/seguranca_sessao.doctrine.md):”
### SESS-D01 — Expiração por inatividade
Toda tela autenticada deve invalidar a sessão após 15 minutos sem interação do usuário.

2. Na Spec da Tela (screens/PerfilUsuario.spec.md):

Seção intitulada “2. Na Spec da Tela (screens/PerfilUsuario.spec.md):”
### PERFIL-B04 — Encerramento de sessão
Encerra a sessão e redireciona para a tela de login.
@realizes SESS-D01

O Anchors conecta as duas pontas no Grafo de Dependências.


O Anchors fornece quatro gates especializados para governar a doutrina:

  • spec-doctrine-exists: Garante que toda anotação @realizes aponte para um código de doutrina que realmente existe no repositório.
  • doctrine-realized: Acusa se uma regra de doutrina foi declarada como obrigatória no projeto, mas nenhuma unidade do sistema a realiza.
  • doctrine-not-duplicated: Impede que o texto de uma regra de doutrina seja copiado e colado dentro de specs locais (forçando o uso de @realizes).
  • spec-realizes-doctrine: Garante que a spec comprove como ela cumpre a doutrina.