engine-rs - O Motor de Execução Nativo do Bastion
Motor de execução em Rust que roda fluxos de agentes como grafos validados, mantém o estado ao vivo em memória e grava um registro durável no Postgres.
Overview
O engine-rs é a camada que de fato executa. Ele recebe um fluxo de trabalho de agentes expresso como um grafo dirigido, valida o grafo antes de executar um único nó — ciclos, nós inalcançáveis e entradas não satisfeitas são rejeitados de antemão, em vez de descobertos no meio de uma execução — e então o executa, passando um contexto tipado entre os nós. Ele é embutido, e não isolado: compila dentro do `bastion serve`, então o Console inicia uma execução no próprio processo em vez de enviar o trabalho para um serviço separado. O estado ao vivo fica em memória por velocidade, enquanto o registro durável é gravado no Postgres seguindo um contrato de dados versionado, compartilhado com o resto do stack. Essa divisão é deliberada — a cópia em memória responde 'o que está acontecendo agora' com latência interativa, e o Postgres responde 'o que aconteceu' depois que o processo termina. O motor conduz o pipeline de SDLC sobre o qual toda a prática roda: uma execução servida de `SDLC_FLOW` já rodou de ponta a ponta e produziu um veredito de revisão por modelo ao vivo sobre um diff de código real. Usar o motor para construir o motor é o teste de integração mais honesto disponível, e é por isso que os modos de falha que importam aparecem cedo. A suíte de testes é hermética — sem rede, sem banco de dados, sem chamadas a modelos — e termina em cerca de dois segundos, o que a torna utilizável como portão de pré-commit em vez de algo que se roda antes do almoço.
Technical Stack
Núcleo
- ▸Rust
- ▸Tokio
- ▸serde
- ▸Validação de grafo
Persistência
- ▸PostgreSQL
- ▸Contrato de dados versionado
- ▸Registros duráveis de execução
Integração
- ▸Embutido no `bastion serve`
- ▸Transporte de nós
- ▸Nós de revisão por LLM estruturada
Testes
- ▸cargo nextest
- ▸Suíte hermética — sem rede, sem banco, sem chamadas a modelos
Key Features
Valida o grafo do fluxo antes da execução — ciclos, nós inalcançáveis e entradas não satisfeitas são rejeitados de antemão
Compila dentro do `bastion serve`, então as execuções começam no próprio processo em vez de cruzar uma fronteira de serviço
Mantém o estado ao vivo em memória para latência interativa e grava o registro durável no Postgres
Contexto tipado passado entre nós, tornando o estado entre nós explícito em vez de ambiente
Grava seguindo um contrato de dados versionado compartilhado pelo stack, então consumidores quebram de forma ruidosa e não silenciosa
Conduz o pipeline de SDLC sobre o qual a própria prática roda — o motor constrói o motor
Suíte de testes hermética termina em cerca de dois segundos, rápida o bastante para servir de portão de commit
Technical Challenges
Decidir o que pertence à memória e o que pertence ao Postgres — a cópia em memória responde 'o que está acontecendo', o registro durável responde 'o que aconteceu'
Validar um grafo com rigor suficiente para pegar erros reais sem rejeitar topologias legítimas de ramificação e junção
Manter a suíte de testes hermética quando o propósito do motor é justamente chamar modelos e bancos de dados
Evoluir o contrato de dados compartilhado sem quebrar o Console e o Cérebro que o leem