Entregas antigas¶
Uma entrega antiga mantém seus requisitos dentro do seu próprio spec.md,
sem schema: 2. atipspec new cria entregas guiadas desde a 0.2.0, e fixes
guiados desde a 0.3.0, então as entregas antigas de um projeto são:
- entregas criadas com o AtipSpec 0.1.x;
- fixes criados com
new --kind fixantes da 0.3.0.
O AtipSpec as lê como estão, com o mesmo portão para a evidência, a revisão e o resultado, até que sejam arquivadas. Nada as converte por conta própria. Esta página descreve o que muda; a entrega guiada é o fluxo para tudo o que é novo.
spec.md com requisitos embutidos¶
---
title: "Password reset"
status: draft # draft or ready; `atipspec accept` sets ready when it records the human's approval
kind: feature # or fix: a fix created before 0.3.0, one regression criterion, no plan acceptance
capability: auth # living spec that receives the requirements on deliver
impact: [notifications] # other living specs or contract sections touched
owner: ana
ticket: SHOP-12
initiative: null
base: 9f2c1e... # commit the delivery started from; diff and rules use it
created: 2026-09-12T15:41:45Z # the lead time counts from here
---
# Password reset
## Intent
Let a user who forgot the password recover access without support.
## Requirements
### REQ-001: The user can request a reset link
From the sign-in screen the user enters an email and receives a link.
Why: support tickets for forgotten passwords are 40% of the queue.
Acceptance criteria:
- AC-001: When a registered email requests a reset, the system sends a link to that email within 60 seconds.
- AC-002 [manual]: When the reset email is opened on a 375 px wide screen, a person sees the "Reset password" button without scrolling sideways.
### REQ-002 [remove]: Security questions
- AC-003: If a user opens "/account/questions", then the system responds with status 404.
## Quality attributes
### REQ-003: Reset requests under load
Acceptance criteria:
- AC-004: When 100 users request a reset within one minute, the p95 response time measured at the API gateway is below 300 ms.
## Assumptions
- The link is single-use.
## Out of scope
- Password policy changes.
## Open questions
- None
Analisado: cabeçalhos ### REQ-nnn[ [remove]]: title (níveis 2 a 4), linhas
- AC-nnn[ [test|manual]]: text sob um requisito, que podem continuar em
linhas recuadas, cabeçalhos de cenário como em uma spec viva guiada, e os
itens de lista sob ## Assumptions e ## Open questions (- None conta como
vazio). deliver mescla os requisitos em specs/<capability>.md por ID e
remove os marcados [remove]. Veja escrever critérios
para as verificações; são as mesmas.
Aprovações¶
| Entrega antiga | Entrega guiada | |
|---|---|---|
Para iniciar spec ou fix |
a aceitação do contrato, registrada para seu conteúdo atual | nada; check avisa enquanto o contrato não estiver aceito |
Antes de plan |
accept <slug> spec --code <code> |
os cenários completos, nenhuma pergunta aberta |
Antes de build |
com approve_plan: true (o padrão), accept <slug> plan --code <code>; um fix criado antes da 0.3.0 não tem aceitação do plano |
accept <slug> proposal --code <code> |
| O resultado | accept <slug> result --code <code> |
o mesmo |
atipspec proposal <slug> em uma entrega antiga apresenta a aprovação ainda
pendente, com seu código e o comando accept que a registra, ou diz que não
há nenhuma: a spec até que seja aceita, depois o plano quando approve_plan
o pede. Uma feature cuja spec e cujo plano estão ambos prontos é apresentada
como uma só proposta, e accept <slug> proposal com esse código registra a
spec e o plano juntos; um fix apresenta apenas sua spec. Um código registra
apenas a fase com que a visão o mostrou, então execute o comando que a visão
imprime. A aprovação da spec inclui no hash spec.md e contract.md; a
aprovação do plano acrescenta plan.md inteiro, de modo que qualquer edição
do plano, incluída uma nova tarefa, a pede de novo. review_rounds recomeça
a cada nova aprovação da spec; nenhuma aprovação cobre config.yaml.
accept <slug> spec e accept <slug> plan são recusados em entregas
guiadas.
Conclusão de tarefas¶
Uma tarefa está completa quando atipspec task-done <slug> Tn --note "..." a
registra, ou quando um commit no branch desde a base carrega o marcador
[<slug>:Tn] (vários ids podem compartilhar um,
[password-reset:T1,T2]). As entregas guiadas ignoram os marcadores de
commit. Um plano antigo não tem ## Final verification a menos que alguém a
adicione: verify executa os comandos Verify de cada tarefa, e todo
require-command do contrato deve aparecer em um deles.
IDs¶
Os requisitos e critérios antigos são numerados por capacidade, REQ-001,
AC-001, acima do maior número na spec viva, nas entregas abertas e no
arquivamento. atipspec ids <capability> --legacy imprime o próximo par.
Duas pessoas numerando ao mesmo tempo podem colidir; o
atipspec ids <capability> do fluxo guiado sorteia um prefixo que nenhum ID
visível usa. Os IDs numerados continuam válidos em todo fluxo e nunca são
renumerados.
Vários repositórios¶
Com system: em config.yaml, uma entrega antiga lê o contrato e o
glossário do repositório de sistema a partir do checkout como está; uma
guiada os lê a partir do commit que new fixou (veja vários
repositórios).
Converter uma feature antiga¶
atipspec migrate <slug> mostra, como um diff, como uma feature antiga se
torna uma entrega guiada, e não escreve nada: seus requisitos passam para
specs/<capability>.md, spec.md lista seus IDs sob requirements e recebe
schema: 2, status: draft, risk: normal e um novo baseline.json.
atipspec migrate <slug> --apply o escreve depois de fazer backup dos
originais e dos registros de aprovação em .atipspec/migrations/<digest>/.
Não aprova nada: a entrega volta a draft e sua proposta é apresentada para
aprovação. O plano existente é mantido; mova as verificações compartilhadas
para uma ## Final verification quando o revisar. Um fix antigo mantém seu
fluxo até ser entregue, e migrate o recusa.