2026-07-28 Relatório de Busca de Fonte Real
Objetivo
Nos registros anteriores, foi anotado apenas que o projeto Godot real foi dividido em 134 blocos e pesquisado, e que a documentação relacionada foi incluída nos resultados superiores. Apenas com essa afirmação não era possível saber o que foi retornado em cada bloco, se o JSONL retornado realmente existia no SQLite, ou se a documentação mais direta estava no SQLite mas foi rebaixada na classificação.
Este relatório registra separadamente as três perguntas a seguir.
- O Source Flow Debugger retornou quais candidatos JSONL em cada bloco?
- Os candidatos retornados são exatamente os mesmos JSONL originais verificados no SQLite?
- As evidências diretas encontradas em todo o SQLite apareceram no topo, ou a classificação precisa ser melhorada?
O endpoint Qwen está indisponível, portanto, desta vez executamos apenas a busca e a comparação com o SQLite. Não registramos a classificação da versão Godot do Qwen nem os resultados de aprovação/rejeição de candidatos; o fato de um candidato ter sido encontrado não é tratado como verificação final bem‑sucedida.
Entrada fixa
- Repositório:
godotengine/godot-demo-projects - Licença: MIT
- Commit:
cae8dc567a56d3e7936f171bcb85f0ccb9634ad0 - Projeto:
2d/hexagonal_map - Arquivos de entrada:
project.godot,map.tscn,tileset.tres,tileset_edit.tscn,troll.gd,troll.tscn - Número de arquivos de entrada: 6
- Número de blocos gerados: 134
- Blocos AST: 3
- Blocos diretos: 131
O SQLite usado na execução foioutputs/godot-rag-sqlite/godot-rag.sqlite3, contendo, no momento da execução, 2.265 registros em docs_chunks, 1.133 em api_mapping, 2 em label_prototypes e 3.399 embeddings.
Estado da execução
| Etapa | Status | Significado desta execução |
|---|---|---|
| SQLite FTS5 + Okapi BM25 | Executado | Todas as 134 blocos foram pesquisadas |
| embedding | Não executado | Não foi configurada a chave da API de embedding |
| reranker | Não executado | Não foi configurada a chave da API do provider |
| Qwen validator | Não executado | O endpoint Qwen está interrompido |
Portanto, a classificação abaixo não representa a classificação final da estratégia F completa, mas sim o resultado da fase lexical/BM25.
Resultado geral da comparação
| Item | Resultado |
|---|---|
| Blocos | 134 |
| Candidatos BM25 retornados por bloco | 80 |
| Candidatos retornados comparados ao SQLite | 10.720 |
| Candidatos após remoção de duplicatas | 844 |
| Candidatos não encontrados no SQLite | 0 |
Candidatos cujo provenance não é verified |
0 |
Candidatos cujo raw_json difere do SQLite |
0 |
Retornos de docs_chunks |
10.713 |
Retornos de api_mapping |
7 |
Retornos de label_prototypes |
0 |
A consistência dos dados retornados estava correta. Quando as tabelas e IDs mostrados pelo Source Flow Debugger foram consultados novamente no SQLite, os 10.720 registros existiam, o provenance era verified e o raw_json retornado coincidiu com o armazenado.
Entretanto, isso não significa que a qualidade da busca esteja perfeita. Como os 134 blocos preencheram todos os 80 candidatos máximos, os candidatos lexicais não foram suficientemente filtrados. Além disso, em 9 blocos, a proteção de âncora de nome de arquivo fez com que um documento com pontuação BM25 mais baixa fosse promovido ao primeiro lugar.
Resultados de blocos representativos
Casos bem pesquisados
| Bloco | Resumo da entrada | Resultado retornado | Comparação SQLite |
|---|---|---|---|
| 1 | Descrição do formato do arquivo project.godot |
Manually editing project.godot em 1º lugar |
ID e texto original coincidem |
| 13 | TileMapLayer, tile_map_data, TileSet |
TileMapLayer atributo 1º, método 2º, TileData 3º |
Todos verificados em docs_chunks |
| 42 | TileSetAtlasSource, região de textura |
TileSetAtlasSource 1º, TileSetSource 2º |
Evidência direta da classe confirmada |
| 125 | _physics_process, Input.get_axis, move_and_slide |
Physics process 1º, documentos de movimento 2D 5º‑7º, CharacterBody2D 8º |
Documentação de movimento/física presente |
| 130 | Nó CharacterBody2D |
Classe CharacterBody2D 1º |
Evidência direta da classe confirmada |
O documento em 1º lugar do bloco 1 não ficou no topo apenas por pontuação BM25; foi mantido graças à proteção da âncora lexical project.godot. Nesse caso, a descrição do formato do arquivo corresponde exatamente, confirmando que a proteção foi válida.
Caso que precisa melhorar a classificação
Chunk 123: extends CharacterBody2D
- 1º lugar real:
Collision exceptions - Documentação da classe
CharacterBody2D: 17º lugar - Mapeamento
KinematicBody2D -> CharacterBody2D: 6º lugar
O SQLite continha a documentação exata da classe CharacterBody2D, mas ela foi posicionada depois da documentação ampla de colisão·movimento. Não é falta de dados, mas sim um problema de classificação. Em chunks de declaração curta, nomes de classe e campos estruturais que correspondem exatamente precisam ser tratados com mais força do que tokens de contexto geral.
Chunk 124: tan(deg_to_rad(30))
- 1º lugar real:
Setting up the spring arm and camera Evaluating expressions: 2º e 3º lugares
Embora a documentação de 1º lugar contenha um exemplo de uso de deg_to_rad, não está totalmente fora de contexto, mas o tutorial 3D ficou à frente da documentação que explica a própria chamada. É necessário reordenar para distinguir explicação de API direta de exemplos de uso simples.
Estruturas candidatas que precisam de revalidação do Qwen
Chunk 13: PackedByteArray incluído em map.tscn
O mapeamento PackedByteArray -> byte[] ficou em 48º lugar. O JSONL de armazenamento descreve migração de coleções C#, mas a entrada é um recurso de cena GDScript. Os tokens coincidem, porém a linguagem e o contexto de aplicação são diferentes, portanto não deve ser aprovado na fase de busca.
Chunk 130: Nó que já usa CharacterBody2D
O mapeamento KinematicBody2D -> CharacterBody2D ficou em 3º lugar. Esse mapeamento é relevante para determinação de versão, mas o chunk atual não contém a API anterior KinematicBody2D. Não é um candidato a aviso de migração; o Qwen deve analisar o JSONL e o chunk original e classificá‑lo como evidência de Godot 4 ou como desnecessário.
O texto original do SQLite JSONL desses dois casos foi mantido intacto em reviewCases do relatório de leitura automática.
Por que label_prototypes tem 0 ocorrências
Os protótipos no SQLite são apenas os dois abaixo.
enum PlaneSemanticLabelclass OpenXRSpatialComponentPlaneSemanticLabelList
O chunk hexagonal_map não continha esses dois padrões de entrada. Portanto, o fato de label_prototypes ser 0 nesta execução não é uma omissão, mas o resultado do filtro de evidência estrutural direto.
Conclusão atual
- A consistência de dados entre os candidatos retornados e o texto original do SQLite foi confirmada.
- Configurações de projeto representativas, TileSet, TileMapLayer e buscas de funções de movimento incluíram documentos relevantes nas posições superiores.
- Nem todos os chunks atingiram o limite máximo de 80 candidatos, de modo que a redução de candidatos não foi suficiente.
- Em declarações curtas de classe e chamadas de função única, documentos mais diretos foram empurrados para posições inferiores.
- Mapeamentos estruturais podem entrar como candidatos apenas pelos tokens relacionados, portanto o Qwen não pode decidir aprovação enquanto está offline.
Critérios para a próxima reexecução
Quando o endpoint do Qwen estiver novamente disponível, use o mesmo commit e os mesmos 134 chunks para acrescentar os seguintes itens.
- Classificação de cada candidato estrutural como
Godot 3,Godot 4,Não relacionadoouEvidência insuficiente - Decisão de rejeição para candidatos de incompatibilidade de contexto de linguagem, como
PackedByteArray -> byte[] - Rejeição de candidatos de migração em chunks que já utilizam a API alvo
- Decisão de rejeição para JSONL de controle negativo não relacionado
- Mudança na classificação direta de documentos antes e depois da aplicação de embedding e reranker
Estratégia F de 2026-08-01 e revalidação do Qwen
O mesmo commit de repositório externo e os 6 arquivos originais de 2d/hexagonal_map foram inseridos novamente no GUI do Source Flow Debugger. Com base no chunking mais recente, foram gerados 146 chunks no total. A auditoria completa de busca, executando BM25, embedding, união e reranker sequencialmente, concluiu todos os 146 chunks, sem registros retornados ausentes no SQLite, provenance não verificado ou JSONL divergente do texto original.
| Arquivo real | Chunk | Escopo de verificação |
|---|---|---|
project.godot |
20 | Busca híbrida completa, validação Qwen completa, revalidação de chunks falhos |
map.tscn |
6 | Busca híbrida completa e validação Qwen |
tileset.tres |
54 | Auditoria de busca completa, validação de atlas source e recurso final representativo |
tileset_edit.tscn |
54 | Auditoria de busca completa, validação de nó raiz e nó sprite representativo |
troll.gd |
3 | Busca híbrida completa e validação Qwen |
troll.tscn |
9 | Busca híbrida completa e validação Qwen |
Resultados ao separar busca e validação
- Declarações e nós
CharacterBody2Dretornaram a documentação da classe e o mapeamentoKinematicBody2D -> CharacterBody2D. O Qwen adotou apenas o mapeamento que corresponde à API alvo como evidência de versão, classificando comoGodot 4. PackedScene,Node2D,Sprite2D,TileSetAtlasSourceetc. retornaram a documentação de classe correta, mas como esses documentos não provam exclusividade de versão major, ficaram marcados comoEvidência insuficiente.- A configuração
run/main_scenecoincidiu exatamente com a documentaçãoSetting the main scenee o texto original do SQLite. Foi rejeitada na primeira validação porque a descrição em linguagem natural não repetia literalmente a notação da configuração; a regra de validação foi ajustada para aceitar quando a documentação descreve diretamente o valor da chave estruturada. doc_versionougodot_version_tagssão apenas metadados de coleta de documentos e não provam exclusividade de versão de código. A regra foi refinada para confirmar a versão somente quando o corpo do JSONL explica explicitamente a diferença de versão major.
Lacunas de dados confirmadas por comparação total do SQLite
A expressão abaixo mostrou que os candidatos superiores da GUI não eram precisos, levando a nova busca nos docs_chunks, api_mapping e label_prototypes completos do SQLite. Nenhum registro contendo as expressões abaixo foi encontrado.
- cabeçalho de recurso de cena
- declaração de recurso de script externo
- configuração de versão de formato de projeto
- configuração de aviso de declaração não tipada
- configuração de aspecto de esticamento de janela
- configuração de cor de limpeza padrão
Esses casos indicam que o JSONL correto está presente no SQLite, mas não há evidência direta nos JSONL coletados atualmente. Portanto, o validador não alterou arbitrariamente um retorno Não relacionado para Godot 3 ou Godot 4.
As modificações nas regras de validação foram distribuídas nos commits d504f50 e 2222634, passando em todos os 33 testes do Source Flow Debugger. As regras não incluem listas explícitas de sintaxe de código, nomes de API ou chaves de configuração.