Projetos / SHERLOCK

SHERLOCK

Ambiente visual de investigação e análise de xadrez. Repositório: https://github.com/lughlammas/sherlock · commit e632035 · release Android v0.1.3

Status
v0.1.3 · release com APK Android
Stack
React, TypeScript, Vite, Express, WebSocket, chess.js
Testes rodados
npm test → 8/8 · typecheck exit 0 · 19/10/2026

01Problema

Um motor de xadrez é um programa de linha de comando que fala um protocolo de texto (UCI). Colocá-lo atrás de uma interface visual traz problemas de integração: iniciar e encerrar o processo, interpretar a saída, cancelar uma busca e garantir que uma resposta atrasada de uma busca antiga nunca sobrescreva a posição atual.

02Contexto

É um projeto próprio, usado também como vitrine de engenharia. Integra o motor Lughnasadh na versão 0.2. Uma versão mais nova do motor (0.4.0) é mantida à parte e não foi integrada nem validada no SHERLOCK.

03Solução

  • Tabuleiro responsivo, com carregar, copiar e reiniciar posições (FEN).
  • Análise por profundidade ou por tempo, com profundidade, nós, velocidade, avaliação e linha principal ao vivo, e botão de parar.
  • Estados claros: pronto, investigando, melhor lance e erro do motor (com tentar de novo e reiniciar).
  • Um modo em que dois processos do motor jogam entre si.
  • Versão Android.
sherlock·tela inicial
Tela inicial do SHERLOCK em 1440px: tabuleiro na posição inicial e menu de dossiê com Jogar, Analisar e Treinar. Tela inicial do SHERLOCK em 390px (celular): tabuleiro acima do menu de dossiê.
Captura real · commit e632035 · build de produção local · só a tela inicial (sem binário do motor na máquina da captura, então nenhuma análise é mostrada) · 19/10/2026 09:24 BRT

04Arquitetura

Navegador (React) → WebSocket → controlador SHERLOCK → adaptador Lughnasadh → motor como processo filho. A interface nunca fala UCI cru: o adaptador cuida do protocolo, dos limites de tempo e dos tokens de sessão, de modo que respostas antigas são descartadas (coberto pelos testes de sessão). Por projeto, a posição do tabuleiro é mantida em timeout, travamento ou reinício do motor; esse caminho só é exercitado pelos smoke scripts, que não foram rodados aqui. No Android, a mesma interface roda num WebView e chega ao motor nativo por uma ponte JavaScript e ProcessBuilder, sem dependência de Node ou WebSocket no APK.

05Evidências

  • Passou em 8/8 testes na execução feita para este site em 19/10/2026: 6 testes do parser UCI e 2 de sessão, entre eles "drops stale info when session rotates". Typecheck limpo.
  • A release v0.1.3 com o APK está pública no GitHub, e o repositório publica o SHA-256 do APK.

Links

06Papel humano e ferramentas de IA

Feito com desenvolvimento assistido por IA sob direção humana.

07Testes executados

Checagem Resultado Onde
npm test (saída do motor simulada, sem binário) 8/8 passaram rodado em 19/10/2026
typecheck (cliente + servidor) exit 0 rodado em 19/10/2026
Smoke do motor (npm run smoke, smoke:match) não rodado (exige o binário nativo)
CI inexistente: o repositório não tem workflow

08Limitações

  • Sem integração contínua.
  • Os testes usam linhas simuladas do motor; o comportamento com o motor real só é coberto pelos smoke scripts, que não foram rodados aqui.
  • O motor integrado é a versão 0.2; a 0.4.0 não foi integrada.
  • Sem benchmark de força de jogo nem de desempenho.
  • O modo motor contra motor roda dois processos e consome bastante bateria e memória.

09Necessidade comercial

O SHERLOCK mostra trabalho de integração: um processo nativo, um protocolo de texto, uma interface em tempo real e empacotamento mobile, com os casos de falha (timeout, travamento, resposta atrasada) tratados explicitamente. É esse tipo de encanamento que está por trás da S02 · Custom Software e do diagnóstico da S03 · AI Code Rescue.

→ Serviços · Solicite uma proposta

Tem um problema que deveria virar software?

Conte o que você tem e o que não está funcionando.