Adaptador de execução¶
As skills guiadas funcionam dentro do assistente de programação ativo do
usuário. Para uma execução retomável, atipspec run <slug> usa um adaptador
de processo configurado explicitamente. Ele nunca aceita a proposta nem o
resultado, e nunca faz commit, push, merge ou deploy. Executa apenas entregas
guiadas, e recusa sob uma política de confiança externa, selecionada ou
exigida.
O executor de processo precisa de um sistema POSIX para encerrar os processos
de um adaptador: Linux, macOS ou WSL. Em outros sistemas, run recusa antes de ler
a entrega ou escrever qualquer coisa; continue a entrega na conversa guiada,
que tem as mesmas fases e o mesmo portão. O executor é um processo em
primeiro plano com checkpoints, não um serviço instalado em segundo plano.
Um supervisor pode iniciá-lo, mas o AtipSpec não alega persistência depois
que o processo hospedeiro para.
Configuração¶
Crie .atipspec/adapter.json antes de aprovar a proposta:
{
"schema": 1,
"name": "my-agent-wrapper",
"command": ["/absolute/path/to/wrapper"],
"isolated_review": false
}
O executável roda na raiz do projeto com uma requisição JSON no stdin. Ele
deve escrever exatamente uma resposta JSON no stdout; a saída de diagnóstico
vai para o stderr. O comando é um array argv, não código de shell. Mudanças
na configuração do adaptador invalidam a aprovação da proposta guiada. O
wrapper deve impor as permissões solicitadas e usar uma nova conversa de
modelo para a revisão antes de declarar isolated_review: true. Um processo
novo do sistema operacional, por si só, não prova o isolamento do contexto
do modelo. Este protocolo não é um sandbox para programas arbitrários.
O executor confronta a session: da revisão com essa declaração. Uma revisão
que diz session: isolated vinda de um adaptador sem isolated_review: true
reprova a execução. Quando a entrega exige uma revisão isolada (risk: high,
ou require_isolated_review: true em config.yaml) e o adaptador não a
declara, a execução para em needs_decision antes de chamar qualquer papel,
de modo que não se faz nenhum trabalho que só uma revisão isolada poderia
aceitar: execute a entrega no modo guiado e revise-a em uma sessão isolada
com atipspec review <slug>, ou configure um adaptador que isole o revisor.
As requisições incluem schema, delivery, role, instruction,
agreement, context versionado, a task atribuída, os findings
anteriores, um contrato de resposta e as permissões. As requisições de
revisão incluem review_packet. O wrapper integra o modelo e as ferramentas
de programação que escolher; o núcleo do AtipSpec controla a verificação.
Respostas:
needs_decision, blocked e failed também são status válidos e devem
explicar o problema concreto em summary. A conclusão de uma revisão também
retorna review_markdown, correspondente aos IDs de critério e à árvore
candidata do pacote. O revisor não deve modificar arquivos do projeto. O
núcleo valida a forma da resposta, detecta desvio do acordo e executa seu
próprio portão de evidência e revisão. Uma mensagem done não estabelece
correção nem aceitação humana.
Operação e recuperação¶
atipspec adapter
atipspec proposal my-change # shows the approval code
atipspec accept my-change proposal --code <code> # after the human approves
atipspec run my-change --budget 900 --timeout 300 # --max-rounds: at most, and by default, review_rounds less one
atipspec report my-change # shows the result's code
atipspec accept my-change result --code <code> # after the human accepts
atipspec deliver my-change
atipspec run imprime seu estado como JSON e sai com 0 em
ready_for_acceptance ou accepted, e com 2 em qualquer outro estado:
awaiting_approval, needs_decision, blocked ou failed, com o motivo.
run.json registra a fase, o tempo decorrido acumulado, as rodadas de
correção e o digest do acordo. progress.json registra as definições das
tarefas concluídas. Ambos são metadados operacionais excluídos da impressão
digital do candidato; a evidência e as aprovações continuam sendo verificadas
de forma independente. Travas do sistema operacional permitem um executor
por checkout.
Executar de novo um candidato concluído reutiliza a evidência final e a
revisão atuais. Depois de resolver uma falha reportada, use --resume.
Mutações de agente interrompidas ou que excederam o tempo exigem inspecionar
o trabalho parcial e selecionar explicitamente --retry-interrupted; elas
não são repetidas às cegas. A mesma versão aprovada mantém seu orçamento de
tempo decorrido e de correções entre invocações. Novos compromissos
aprovados começam um novo orçamento. Aumentar os limites de tempo é uma
escolha explícita na CLI. --max-rounds conta toda correção automática,
seja uma revisão ou um check que a tenha pedido; tem como padrão
review_rounds em config.yaml menos um, porque cada correção é revisada de
novo, e não pode excedê-lo, já que mais rodadas são decisão da pessoa. As
revisões que o executor pede contam em review-rounds.json, como
atipspec review as conta: cada revisão de outro candidato, contando a
primeira; quando review_rounds já foram contadas, o executor para em
needs_decision.
As políticas de confiança externas usam seu workflow protegido de execução e aceitação; este executor inicial não as contorna com registros de aprovação locais. As métricas de tokens e de custo são reportadas como indisponíveis, não como zero.
Limites da validação¶
Os testes usam fixtures reais de subprocesso para verificar a execução, a recusa antes da aprovação, as verificações compartilhadas, a revisão, a reutilização, a interrupção, o desvio, os timeouts, as novas tentativas e a trava. Essas fixtures são programas determinísticos, não testes com modelos reais. Um wrapper nativo de cliente de programação e uma validação de integração real ainda são necessários antes de alegar uma integração de modelo autônoma de ponta a ponta.