O ciclo do não — quando cada recusa do leitor virou um ticket no pipeline
LifeLog·

O ciclo do não — quando cada recusa do leitor virou um ticket no pipeline

4 min de leitura← Voltar para timeline

O dia em que o silêncio comeu um pedido

O blog publica todos os dias, e cada post nasce escondido. Eu leio, decido o que vai pro ar, e quando algo não me agrada, o sistema anota minha recusa num arquivo dentro do repositório. Simples, rastreável, quieto. Por meses isso funcionou — até descobrir que “funcionar” e “ser lido” são coisas diferentes.

O arquivo de recusas crescia. Issues relacionadas ficavam abertas. Nada reclamava, porque tudo estava “registrado”. Só que registro sem notificação é mensagem numa garrafa: o conteúdo está intacto, o destino é que não existe. Um pedido de reescrita ficou dias parado enquanto o pipeline seguia seu ritmo, feliz, sem saber que devia algo.

Por que um arquivo não basta

A recusa tinha três destinos possíveis e a implementação acertou dois: um comentário rastreável no repositório e uma cópia física em docs/recusas/. O que faltava era o elo que transforma registro em tarefa — alguém (ou algo) que olhe aquele arquivo e diga “isto precisa de resposta”. O blog tinha a memória do pedido, mas nenhum sistema com mandato de agir sobre ela.

A correção não foi criar mais um lugar pra escrever. Foi fechar o ciclo: agora, quando uma recusa é registrada, o pipeline correspondente é notificado e o post volta pro fluxo de revisão — com o motivo original anexado, intacto, no mesmo lugar onde nasceu. O arquivo continuou sendo a fonte de verdade; o que mudou foi quem o lê e quando.

// Antes: recusa registrada, e só.
await commitNotaFile(slug, nota);        // arquivo no repo
await createIssue(slug, nota);           // issue rastreável
// ...e o pipeline? O pipeline descobria quando (ou se) alguém lembrava.

// Depois: recusa registrada + cobrança automática
await commitNotaFile(slug, nota);
await createIssue(slug, nota);
await notifyPipeline(slug, nota);        // o ciclo fecha sozinho

O que o ciclo ensina sobre feedback

Um sistema que aceita rejeição sem reagir ensina o usuário a parar de rejeitar. Pior: ensina que recusar é inútil. O botão existia, funcionava, salvava tudo — e ainda assim o loop estava quebrado, porque quem recebe o feedback nunca foi avisado de que tinha recebido.

O conserto me lembrou de uma regra que aplico no código e esqueço nos processos: toda entrada precisa de um consumidor nomeado. Não “alguém vai ver eventualmente”, mas um componente específico, com gatilho específico, reagindo a um evento específico. Sem isso, a entrada é só arquivamento com passo firme.

Recusa como arquivo Recusa como ticket
Registro rastreável rastreável
Quem lê quem lembrar o pipeline, sempre
Tempo de resposta indefinido um ciclo
Silêncio possível sim, e comum não

O aprendizado

A automação que me orgulho não é a que publica posts sozinha. É a que garante que nenhum pedido meu desaparece. Se eu recuso um post, aquele “não” tem um caminho: arquivo, issue, notificação, reescrita, re-entrega. O blog virou um sistema que ouve e responde — e se um dia o ciclo quebrar de novo, agora existe uma parte do processo cujo único trabalho é perceber isso.

~/lifelog — bash
$cat about.txt
╔══════════════════════════════════════╗
║  Samuel Medeiros                    ║
║  Senior Software Engineer           ║
║  Stack: Python · TypeScript · Rust  ║
║  Projetos: Arachne, Dogwalk,        ║
║            Capivara, TatuEngine      ║
╚══════════════════════════════════════╝
      
$