idea_world_labDEV JOURNAL
sábado, 27 de junho de 2026

27 de junho de 2026

  • Ao reler o docs/roadmaps/2026-06-26-source-to-ast-input-flow.md escrito no dia 26, concluí que a consistência geral do documento estava insuficiente
  • O documento inicial do dia 27 continha muitas descrições de objetos e estruturas, dificultando o rastreamento de como a entrada realmente fluía
    • Em seguida, ajustei a direção do documento com base no feedback do PR
    • Modifiquei para que, a partir de # <caminho relativo> expandido, fosse descrito especificamente em qual linha de qual arquivo o AST Parser recebe a entrada
    • Como em E020‑E034 de player.gd, organizei o fluxo com base em intervalos reais de linhas, mostrando como partes do texto são encaminhadas para a busca do Retriever e a avaliação do LLM
    • Os caminhos de arquivo são apenas para rastreamento; estabeleci novamente que a busca do Retriever recebe apenas o chunkText do código/trecho, não o caminho completo
  • docs_chunks, api_mapping e label_prototypes são pesquisados da mesma forma, sem tratamento especial, e o LLM verifica novamente os candidatos de busca
  • O objetivo do trabalho de hoje foi fixar, por meio de documentação, como a entrada e a saída se conectam em cada ponto, evitando que a IA altere intervalos arbitrariamente ou siga explicações estruturais abstratas antes da implementação real
  • Para validar o fluxo documentado, implementei a ferramenta web Source Flow Debugger
    • Executei localmente em http://127.0.0.1:8010/ para inspecionar diretamente a entrada do projeto Godot
    • Dividi a entrada do projeto expandida por # <caminho relativo> em unidades de arquivo; .gd são tratados como chunks de natureza AST, enquanto .godot e .tscn são divididos em chunks diretos
    • Testei com um pequeno projeto Godot e confirmei a divisão em 5 arquivos, 14 chunks, AST 9, Direct 5
    • Arquivos de documentação como README.md são excluídos no modo source-analysis, e a exclusão e seu motivo permanecem visíveis na tela
  • Anexei a UI de depuração por chunk
    • Sob cada chunk, posicionei botões de pesquisa docs_chunks, pesquisa api_mapping, pesquisa label_prototypes e Validar JSONL
    • Em vez de usar caixas de seleção globais, a pesquisa por tabela ocorre imediatamente abaixo do chunk atual
    • A entrada do Retriever exibe apenas { "chunkText": "..." }, omitindo caminho de arquivo, número da linha e prompt
    • A validação Qwen é usada apenas na etapa prompt + chunkText + JSONL recuperado
  • Corrigi problemas encontrados ao usar o depurador web
    • Removi a inserção automática de código Godot de exemplo ao carregar a página
    • Mesmo que o mesmo arquivo/pasta seja enviado novamente, o evento change do navegador dispara ao limpar o valor do input de upload no clique
    • Adicionei cache-control: no-store nas respostas de arquivos estáticos para evitar que scripts JS antigos permaneçam durante o desenvolvimento
    • Na rota de busca PostgreSQL, protegi a chamada client.end() para que a limpeza ocorra com segurança mesmo se a criação/conexão do cliente falhar
  • Documentei o resultado da implementação com capturas de tela em um documento separado
  • Até o momento, a divisão por chunk está razoavelmente bem‑sucedida; o próximo foco será como executar a busca no banco de dados
    • Precisamos verificar, usando apenas chunkText, quais candidatos JSONL são retornados de docs_chunks, api_mapping e label_prototypes
    • Também devemos definir como o estágio de validação Qwen decide se o JSONL encontrado está relacionado ao chunk atual e quando descartá‑lo
  • Antes de integrar a busca ao DB, experimentei prompts de correspondência de evidência com GPT, usando chunks de Godot de demonstração e JSONL relevantes ou irrelevantes
    • Inicialmente, ao perguntar “Este JSONL contém conteúdo que corresponde ao código‑fonte? Responda apenas Sim/Não”, tanto JSONL relevantes quanto irrelevantes retornavam “Sim”
    • Depois, limitei a resposta a “Sim” somente se um dos campos source_api, source_pattern, match_terms, required_when_seen_in_code ou before_code coincidisse exatamente com a string/call do SOURCE_CODE
    • Evitamos que a similaridade semântica ampla ou o conhecimento prévio do LLM sobre Godot influenciem; a decisão baseia‑se apenas nas evidências textuais presentes no JSONL: relevantes → “Sim”, irrelevantes → “Não”
    • Esse experimento mostrou que, após a busca no DB, a etapa Qwen deve primeiro avaliar “Existe evidência textual direta no JSONL que corresponda ao chunk atual?” em vez de confiar em similaridade de sentido plausível
    • Diário de observação: Seleção de repositório de teste baseada no status de coleta de JSONL
    • Diário de observação: Prompt de correspondência de evidência JSONL
    • Retrospectiva: docs/retrospectives/2026-06-27.md
  • Amanhã, criarei vários conjuntos de demonstração de chunks Godot com JSONL relevantes e irrelevantes, para testar repetidamente como o Qwen gera “Sim”/“Não” com base nas evidências