Onde o editor termina e o modelo começa.
Na maioria das ferramentas existe uma emenda. Você exporta, envia, espera, baixa, coloca o resultado de volta e torce para que continue alinhado. De um lado dessa emenda está o seu projeto; do outro, um programa que nunca ouviu falar dele. O Sparkle não tem essa emenda, e eliminá-la é a maior parte da engenharia desta página.
Um editor é um documento e as operações que o alteram
Por baixo dos painéis, um editor é uma coisa só: um documento que descreve o que acontece e quando, e um conjunto de operações nomeadas que são o único jeito de alterá-lo. Dividir um clipe, remapear o tempo, definir uma cor, adicionar uma faixa de legendas. Nada além disso toca o documento.
Isso soa como um detalhe de implementação e é a arquitetura inteira. Uma vez que as operações são a única porta, tudo o que importa depois — desfazer, concorrência, replay, uma auditoria do que aconteceu — é uma propriedade da porta, e não algo parafusado em cada recurso que passa por ela.
Então o assistente é mais um chamador, não outro programa
O assistente não gera código e não gera quadros. Ele emite as mesmas operações nomeadas que um item de menu emite, com os mesmos parâmetros tipados, no mesmo documento. Peça a ele para montar uma versão vertical e ele chama a operação que o editor já tinha.
Duas coisas decorrem disso, e as duas são o ponto. Ele não consegue expressar nada que o editor não consiga fazer, então não existe uma categoria de saída de IA que precise ser reconciliada com o projeto depois. E tudo o que ele fez, você poderia ter feito — o que significa que você pode ler, mudar ou desmontar tudo à mão.
Uma operação, um desfazer
Uma operação do assistente pode mexer em cem clipes: mudar o tempo de todos, recolorir todos, reestilizar cada legenda. Ainda assim ela se reduz a um único checkpoint, e um desfazer leva você de volta ao momento antes do pedido.
Isso não é comodidade. O que torna um assistente de edição utilizável não é a frequência com que ele acerta — é o quanto sai barato discordar dele. Um assistente que você não consegue rejeitar de forma limpa é um assistente que você tem de supervisionar, e supervisioná-lo custa mais do que fazer o trabalho.
O modelo é a parte fácil. Tudo em volta dele é o editor.
Duas mãos, um documento
Enquanto uma operação longa roda, você continua trabalhando, então o documento tem dois autores. A versão ingênua disso perde uma edição: quem escreve mais devagar salva por último e sobrescreve em silêncio o que o outro fez.
Todo salvamento é um compare-and-swap contra a operação head atual do documento. Uma escrita construída sobre uma versão que já mudou é recusada — não é mesclada nem aplicada em silêncio. Recusar é o comportamento útil: um salvamento rejeitado pode ser repetido contra a verdade, enquanto uma edição perdida é descoberta dias depois por quem a fez.
Exactly once, ou nenhuma vez
Um passo de um plano do assistente mais cedo ou mais tarde vai encontrar uma nova tentativa, um clique duplo, uma conexão perdida, um refresh, uma queda no meio do caminho, ou dois executores que se julgam donos dele. Qualquer um desses pode aplicar uma edição duas vezes, e uma edição aplicada duas vezes a uma linha do tempo não é uma duplicata — é outra linha do tempo.
Por isso o executor não tem permissão para decidir. Antes de alterar qualquer coisa, ele precisa fazer o claim do passo junto ao plan store, que o concede atomicamente sob um lock; só um claim concedido autoriza a edição, e um replay devolve o primeiro resultado sem tocar no documento. O que prova que uma operação aconteceu é um id de operação registrado, não um flag em uma aba do navegador.
Os modelos ficam ao lado da linha do tempo, não atrás de um upload
Matting, segmentação e profundidade rodam no mesmo processo do editor, sobre os quadros que ele já tem em mãos. Não há exportação, nem upload, nem espera, nem reimportação, e nada para realinhar depois.
Essa é uma decisão de projeto sobre latência, e ela resolve uma questão que a emenda costuma deixar em aberto: material sob embargo continua sob embargo, porque nunca saiu dali. Onde o trabalho realmente precisa da nuvem, ele passa por um único gateway que o mede contra a conta que o pediu.
Uma prévia que é a exportação
Os mesmos shaders desenham a navegação e a renderização final, então o que você aprova é o que você entrega. Sem isso, toda edição feita por IA é provisória: você estaria aceitando uma imagem e reconferindo o arquivo depois, que é a emenda reaparecendo na outra ponta do pipeline.
Tudo junto — um documento, um conjunto de operações, um desfazer, um head, uma execução, um caminho de renderização —, a pergunta interessante deixa de ser o quanto o modelo é bom. Passa a ser o quão barato é discordar dele. É essa a parte que construímos.