Pular para o conteúdo

Templates e variants

Um template (o modelo) são as seções que um Blueprint (o plano) carrega: em ordem, sob nomes fixos, cada uma com orientação. Só o corpo; o frontmatter é gerado a partir da tabela de propriedades, e um template que carregue algum é uma falha.

Um arquivo por template em .eidos/templates/, nomeado <unit>.<variant>.md: a palavra para um dos Blueprints da coleção, depois a variant (a variante).

  • Directory.eidos/templates/
    • spec.full.md
    • spec.micro.md
    • frame.architecture.md
    • frame.audience.md

Os templates de uma coleção são variants de uma mesma família. Uma é a padrão. O que muda entre elas é quais seções aparecem, nunca a ordem ou os nomes.

As duas variants de spec da semente software:

spec.micro spec.full
## Intent ## Intent
### Assumptions ### Assumptions
### Implementation Notes
## Open Questions ## Open Questions
## Behaviors & Acceptance Criteria ## Behaviors & Acceptance Criteria
### Functional · ### Performance · ### Design · ### External interface · ### Quality attributes
## Out of Scope ## Out of Scope
## Dependencies · ## Testing · ## Constraints & Decisions

micro é a menor spec que vale a pena escrever: por que existe, o que você vai receber, o que ela não fará. Testes e dependências podem esperar; escopo, não.

Um Blueprint em uma variant que não é a padrão diz isso no frontmatter, variant: micro. Ausente significa a padrão. A validação verifica um Blueprint contra a variant que ele nomeia, então uma variant mais leve nunca é apontada por seções que só uma mais completa tem.

  1. Escreva-o como micro cedo, quando há mais pergunta do que resposta.
  2. Acrescente as seções mais completas conforme elas merecerem o lugar: uma dependência real, uma decisão de fato tomada.
  3. Defina variant: full (ou tire a propriedade) quando ele tiver crescido até lá.

Uma família de templates por coleção. Se metade das suas specs precisa de seções diferentes, isso é uma variant ou uma coleção diferente, nunca um segundo template contrabandeado para dentro da mesma.

Um template documenta as próprias convenções. Os nomes das seções, a sua ordem e qualquer rotulagem vivem no arquivo do template. O padrão rege coleções, templates, variants e propriedades; nunca rege uma seção. É por isso que ## Intent não aparece em lugar nenhum do EIDOS.md: é a palavra da semente software.

.eidos/templates/spec.micro.md
# {{title}}
## Intent
_Why this exists: the problem and who has it. This is the stable part: if Intent
changes substantially, you probably have a different spec._
### Assumptions
_What you're taking as given, not yet confirmed._
## Open Questions
_What you don't yet know and still need answered._
## Behaviors & Acceptance Criteria
_What it does, as observable outcomes. Label each **AC1:**, **AC2:**, …_
- **AC1:** <!-- the first observable outcome -->
## Out of Scope
_Explicit non-goals. The first thing to write, not the last._

{{title}} é o único marcador. As linhas em itálico são orientação para apagar conforme você preenche cada seção.

Um documento de nível superior (uma Visão, um Roadmap) é único: escrito uma vez, revisado no lugar. Sem template, sem variants, sem validação. Um template ganha o seu lugar sendo carimbado de novo.

Na CLI: eidos new --variant <name> renderiza o corpo a partir daquele template; eidos check relata as seções que ele declara e faltam no corpo.