description: 'Retoma execucao 00C apos pausa por bloqueio humano ou schedule entre ondas. Valida hash de integridade (FR-029), aplica resposta a bloqueios pendentes, delega proxima onda ao agente-00c-orchestrator.'
argument-hint: "[--projeto-alvo-path
/agente-00c-resume¶
Retomada de execucao 00C conforme contrato em
docs/specs/_archived/agente-00c/contracts/cli-invocation.md.
Argumentos recebidos¶
Comportamento esperado¶
Execute estes passos em ordem. Use os scripts em
~/.claude/skills/agente-00c-runtime/scripts/ para todas as operacoes
de estado — nao manipule state.json diretamente com jq.
1. Parse de argumentos¶
Extrair:
- --projeto-alvo-path (default = cwd)
- --resposta-bloqueio opcional, formato <block-id>:<resposta>
- --init-aspectos opcional, JSON array de 3..7 strings — usado para
re-inicializar initial_key_aspects em execucoes legadas (criadas
antes da FASE 3 da evolucao, com aspectos=null). Forca overwrite via
drift.sh init --force.
- --init-aspectos-tecnicos opcional, JSON array 0..7 strings
- --init-aspectos-operacionais opcional, JSON array 0..7 strings
Defina <SD> = <PAP>/.claude/agente-00c-state para os comandos abaixo.
2. Adquirir lock¶
Fronteira command↔orquestrador: o lock e deste command PAI (acquire aqui, release SEMPRE no passo 7). O orquestrador NAO adquire/libera lock — ver "Fronteira command↔orquestrador" em
agente-00c-orchestrator.md.
Exit 3 = outra execucao em andamento neste projeto. Aborte com mensagem
clara apontando para /agente-00c-abort ou aguardar conclusao.
3. Validar estado¶
Validacao falha (FR-008) OU hash divergente (FR-029) = SEM auto-correcao
(Principio III). Crie BloqueioHumano via bloqueios.sh register com a
ultima Decisao da execucao + diagnostico tecnico:
- Para schema invalido: pergunta: "Estado em <SD> tem schema invalido.
Corrigir manualmente OU autorizar abort?"
- Para hash divergente: pergunta: "Estado modificado externamente entre
ondas. Aceitar estado atual OU autorizar abort?"
Em ambos os casos, emit aviso na saida e termine sem invocar orquestrador.
4. Verificar status atual¶
Casos:
- concluida ou abortada: retorne mensagem informativa, NAO retome.
Execucao em status terminal (<status>). Nada a retomar.
Para nova execucao, use /agente-00c em outro projeto-alvo.
em_andamento: retomada normal pos-schedule. Pule para passo 6.
- aguardando_humano: requer --resposta-bloqueio. Continue passo 5.
5. Aplicar resposta a bloqueio (se status = aguardando_humano)¶
5.a. Sem --resposta-bloqueio¶
Liste bloqueios pendentes e termine:
Output:
Status: aguardando_humano. Bloqueios pendentes:
block-NNN dec-MMM <pergunta>
...
Re-execute com --resposta-bloqueio <block-id>:<sua-resposta>
5.b. Com --resposta-bloqueio <id>:<resp>¶
Parse o argumento:
- block_id = parte antes do primeiro ":"
- resposta = parte depois do primeiro ":" (preserve : adicionais)
Sanitize a resposta:
Aplique:
Erros:
- bloqueio nao encontrado: emit lista de bloqueios validos + retorne.
- nao esta em status aguardando: bloqueio ja respondido — informe ao
operador, mas continue (status pode ja ter voltado para em_andamento
via outro respond).
Apos respond, se bloqueios.sh count --pending-only retornar 0,
.execution.status ja esta de volta para em_andamento automaticamente.
Caso contrario, ainda ha pendentes — liste-os e instrua o operador a
chamar /agente-00c-resume novamente com mais respostas.
5.c. Re-inicializar aspectos-chave (apenas se --init-aspectos passado)¶
Aplicavel a execucoes legadas (anteriores a FASE 3 da evolucao) que
nao tem .initial_key_aspects populado. Sem aspectos, drift.sh
check fica permanentemente em modo desabilitado — re-inicializacao
manual relaxa a idempotencia normal do drift.sh init.
drift.sh init --state-dir <SD> \
--aspectos "$init_aspectos" \
[--tecnicos "$init_aspectos_tecnicos"] \
[--operacionais "$init_aspectos_operacionais"] \
--force
Apos init, registre Decisao:
state-decisions.sh register --state-dir <SD> \
--agente "orquestrador-00c" --etapa "briefing" \
--contexto "Re-init de aspectos via /agente-00c-resume --init-aspectos
(execucao legada sem aspectos populados)" \
--opcoes '["init","nao-init"]' \
--escolha "init" \
--justificativa "Drift check desabilitado nesta execucao ate aspectos
serem gravados; operador autorizou re-init explicitamente"
Se --init-aspectos foi passado mas .initial_key_aspects ja
existe, exibir aviso de overwrite e prosseguir (assume-se intencao
explicita do operador).
ATERRAMENTO anti-confabulacao (qualquer Decisao que este comando PAI
registre): se a Decisao escala/age sobre um evento de SEGURANCA
(prompt-injection/canary/tampering/output hostil) detectado em tool result, a
--evidencia DEVE ser substring LITERAL de um output de fato observado nesta
sessao. Nao consegue apontar a linha exata? A ameaca NAO existe: registre
--score 0 --escolha ameaca-nao-verificada (pause), nunca trate ameaca
fabricada como real. Detalhe + caso dec-122 na secao "Score-de-decisao" do
agente-00c-orchestrator.
6. Spawnar agente-orquestrador (continuacao da pipeline)¶
Antes de qualquer leitor/escritor de estado rodar, canonicalize o
state.json para EN no disco (migrate defensivo — schema-en-migration,
arquitetura B+). Idempotente/no-op em states ja EN; best-effort (falha
nao gateia a retomada):
Antes de spawnar, compute o modelo a aplicar na onda de continuacao via
wave-select (mapa fase→modelo + refino + override — FR-002, FR-009).
Idempotente por onda (re-entrada apos retomada nao duplica Decisao):
wave-select SEMPRE emite uma linha em stdout: haiku | sonnet |
opus | manter-atual (nunca aborta). A escolha ja foi registrada como
DecisaoDeRoteamentoPorOnda auditavel dentro do proprio wave-select.
Este passo apenas INSERE a selecao de modelo antes do spawn — nao altera o fluxo TOCTOU-safe (lock + sha256-verify + bloqueios) ja executado nos passos 1-5.
Aplique o param model SOMENTE quando MODEL != manter-atual (FR-006,
quickstart C8 — manter-atual herda o modelo da sessao):
- Se MODEL = manter-atual: usar o bloco Agent(...) abaixo SEM o param model.
- Senao (MODEL ∈ {haiku, sonnet, opus}): adicionar model: <MODEL> ao
bloco Agent(...) (logo apos subagent_type).
Bidirecionalidade (FR-009): a onda de continuacao pode subir ou descer o modelo conforme a fase corrente — o prompt do orquestrador nao muda.
Use a tool Agent:
Agent(
description: "Continuar pipeline 00C apos retomada",
subagent_type: "agente-00c-orchestrator",
prompt: """
Voce esta sendo invocado como CONTINUACAO de uma execucao 00C
existente (NAO uma nova execucao).
Context:
- state-dir: <SD>
- projeto-alvo-path: <PAP>
- feature-dir: <PAP>/docs/specs/<feature> (deduzir de
.current_stage e estrutura existente)
- whitelist: <PAP>/.claude/agente-00c-whitelist
- retomada_motivo: "<resume_after_block|resume_after_schedule>"
Comece pelo Loop principal — passo 2 (start nova onda) — pulando o
item 1 (lock + validate + sha256-verify) que ja foi feito por este
/agente-00c-resume.
Use as primitivas operacionais documentadas no seu prompt
(~/.claude/agents/agente-00c-orchestrator.md) sem desvios.
"""
)
Aguarde retorno do orquestrador (uma mensagem de sumario contendo um
campo Schedule intent: ...).
6.bis Rede de seguranca de fechamento de onda (OBRIGATORIO — com lock ainda ativo)¶
Bug recorrente: o orquestrador frequentemente RETORNA sem fechar a onda nem emitir
Schedule intent(ver "Contrato de conclusao de turno" noagente-00c-orchestrator.md). Reforco de prompt nao resolve; o PAI trata o fechamento como rede de seguranca OBRIGATORIA a CADA retorno.
Chame reconcile-wave SEMPRE, AINDA com o lock ativo (antes do §7), pois
ele escreve no state.json. E idempotente: no-op se o orquestrador JA
fechou a onda (sem double-count); se a deixou aberta, fecha
deterministicamente (record-skill + end + avanca current_stage/
next_instruction, ou promove .execution.status=concluida na fase
terminal). --terminal-phase review-features (agente-00c termina em
review-features). Best-effort.
# Se a fase corrente for execute-task, localize tasks.md e passe --tasks-md.
state-ondas.sh reconcile-wave --state-dir <SD> \
--terminal-phase review-features \
2>/dev/null || echo "reconcile-wave: rede de seguranca pulada" >&2
Quando o orquestrador NAO emitiu Schedule intent (parou cedo) e a
reconciliacao fechou a onda, o §8 deve DERIVAR do .execution.status
real: terminal NAO agenda; em_andamento agenda a proxima onda.
7. Liberar lock¶
8. Schedule da proxima onda (CRITICO — ver nota no orchestrator)¶
Identico ao passo 5 de /agente-00c: o orquestrador (sub-agent) nao pode
disparar ScheduleWakeup sobrevivente — apenas DECIDE os parametros e os
expressa em Schedule intent: .... Voce, slash command pai, executa o
wakeup.
Procure a linha Schedule intent: ... no sumario e aplique:
| Forma da linha | Acao |
|---|---|
Schedule intent: delaySeconds=<N>; reason="<R>"; prompt="<P>" |
Invocar ScheduleWakeup(delaySeconds=<N>, reason="<R>", prompt="<P>") |
Schedule intent: none; motivo=<X> |
NAO invocar ScheduleWakeup. Anotar motivo. |
| linha ausente OU formato invalido | Anotar Proxima onda agendada: nenhuma (Schedule intent ausente/invalido). NAO tentar adivinhar. |
Se ScheduleWakeup falhar, limpe o estado:
8.bis Ingestao da onda na knowledge.db (rede de seguranca, best-effort)¶
A ingestao canonica e o passo 10.bis do loop do orquestrador
(agente-00c-orchestrator.md). Este eco no pai e uma REDE DE SEGURANCA
para o caso de o orquestrador retornar SEM completar o loop (onda fechada/
recuperada sem ter chegado ao 10.bis). Sem ele, a knowledge.db fica sem
o conhecimento da onda.
# Idempotente (upsert por chave natural): re-ingerir apos o 10.bis e
# inofensivo. Read-only sobre o state.json; escreve so em ~/.claude/cstk/
# knowledge.db. NUNCA gateia — toda falha degrada para no-op.
cstk recall --ingest --state-dir <SD> 2>/dev/null \
|| echo "knowledge-db: ingestao (rede de seguranca) pulada — cstk/sqlite3/jq ausentes" >&2
9. Apresentar resultado ao operador¶
Imprima o sumario retornado pelo orquestrador, anotando que e retomada e incluindo a confirmacao de schedule:
Agente-00C retomado.
Execucao: <id>
Tipo: <retomada apos bloqueio|retomada apos schedule>
[sumario do orquestrador aqui — pode reformatar "Schedule intent: ..."
como "Proxima onda agendada: <ISO planejado | nenhuma — <motivo>>"
para clareza ao operador]
Estado atual¶
FASE 7.2 — operacional. Depende das primitivas instaladas via
cstk install: ~/.claude/skills/agente-00c-runtime/scripts/. Em caso
de skill ausente, falhe com mensagem orientando cstk install.