> For the complete documentation index, see [llms.txt](https://docs.skail.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.skail.dev/aprender/arquitetura/o-que-o-skail-faz-pela-sua-execucao.md).

# O que o skail faz pela sua execução

O runtime roda dentro da sua aplicação; o skail é a plataforma do outro lado da conversa. Esta página descreve o que ele faz por cada execução e o que isso muda para você. Como isso é feito por dentro é assunto do skail, muda sem aviso e não afeta o seu código.

## O que o skail faz

Recebe a API HTTP. `POST /trigger/...` e `POST /api/v1/fire/...` chegam no skail, passam pela autorização (chave e namespace) e viram, respectivamente, uma nova execução do workload e um evento a ser entregue a uma espera.

Entrega trabalho. Cada execução a iniciar ou retomar é entregue à aplicação que publica o workload (`nome:versao`). O runtime da sua aplicação recebe, executa e confirma. Se a execução falha, o skail a reentrega até o limite de tentativas do passo. Uma execução em andamento tem um dono por vez: duas instâncias da sua aplicação não processam a mesma execução ao mesmo tempo.

Mantém a execução entre um passo e outro. Uma execução não depende do processo que a começou: quando a aplicação hiberna a execução, cai ou é reiniciada, o skail sabe em que passo ela estava e a entrega de novo para continuar dali. É essa sequência de passos que o Monitor desenha como linha do tempo e que o Time Travel Debug reproduz na sua IDE.

Agenda as esperas por tempo. Um `SkailTask.Delay` vira um despertar marcado; no prazo, o skail acorda a execução. Funciona para minutos e para semanas.

Entrega os eventos externos. Um `WaitForEvent` deixa a execução aguardando um par nome e instance id; um fire com o mesmo par entrega o payload e acorda a execução. Se o fire chega antes de a execução alcançar a espera, o skail o entrega assim que ela chegar lá.

Recebe telemetria. Os spans e logs exportados pelo runtime alimentam o Monitor.

Você não instala, escala nem monitora nada disso; o que você opera é a sua aplicação.

## Isolamento

A separação entre clientes e entre environments é por namespace (`tenant/environment`): as execuções e os eventos de um environment não são visíveis de outro, e uma chave só autoriza o environment a que pertence. Ver [Segurança](/aprender/garantias/seguranca.md).

## O que muda para você

Nada para operar além da sua aplicação. Um endereço para configurar (`SKAIL_SIDECAR`), uma chave e um namespace por environment, e a URL base da API para quem dispara. Quando algo não funciona, o sintoma quase sempre aparece em um destes pontos: autorização (401/403), endereço configurado, ou `SKAIL_WORKLOAD` diferente do publicado. Ver [Troubleshooting](/operar/troubleshooting.md).

Argumentos de functions e commands e resultados de commands fazem parte da execução e aparecem na linha do tempo do Monitor. Por isso a regra prática: passe como argumento ids e valores de decisão, e carregue o resto dentro do command que precisa dele. Ver [Como passar dados entre função e commands](/construir/escrever-fluxos/como-passar-dados-entre-funcao-e-commands.md).

## Próximos passos

[Runtime](/aprender/arquitetura/runtime.md) é o outro lado da conversa. [Garantias de execução](/aprender/garantias/garantias-de-execucao.md) lista o que esse arranjo promete. [Como configurar o runtime](/construir/configurar-e-hospedar/como-configurar-o-runtime.md) para o endereço e as credenciais.
