<![CDATA[
| ID | Dúvida (pergunta fechada) | Rota | Origem | Por que importa | Status | Confiança | Rajada |
|---|---|---|---|---|---|---|---|
| D1 | O pgvector suporta índice HNSW nativo desde qual versão? | WEB | INICIAL | Decide se cabe a coluna "HNSW" na tabela | RESPONDIDA | Alta | 1 |
| D2 | Qual versão de Postgres este projeto roda? | PROJECT | INICIAL | Sem isso, D1 não tem resposta útil | RESPONDIDA | Alta | 0 |
| D7 | O limite de 2000 dimensões vale para HNSW ou só para ivfflat? | WEB | D1 | Muda a recomendação para embeddings de 3072 dim | ABERTA | — | 2 |
| D9 | Por que o HNSW usa grafos hierárquicos? | — | D7 | — | DESCARTADA: não muda o entregável | — | 2 |
| D11 | Qual o p99 do Qdrant nessa VPS com 800k vetores? | WEB | D3 | Decide o veredito da tabela de latência | RESPONDIDA-FRACA | Baixa | 2 |
| D12 | Que CVEs de pgvector foram publicados em 2026? | WEB | D4 | Muda a seção "risco" | BLOQUEADA: CLI falhou 2 disparos | — | 2 |
| ]]> |
As duas últimas linhas são os estados que mais somem quando o
registro é escrito de memória. Elas têm de estar no arquivo, com a coluna
Confiança preenchida: Baixa é o que impede RESPONDIDA (I4), e BLOQUEADA é
o que tem letra própria na contagem (I5).
Toda dúvida que já existiu permanece no registro para
sempre, inclusive as DESCARTADAS e as DUPLICATAS. Deduplicar apenas contra
as respondidas faz a dúvida rejeitada reaparecer a cada rajada, e o loop
nunca fecha.
Toda dúvida tem "por que importa" preenchido com a parte
concreta do entregável que ela muda. Dúvida sem isso é curiosidade, e
curiosidade não vira sub-agente.
A coluna Origem é a cadeia de proveniência — a dúvida cuja
resposta criou esta, ou INICIAL. Ela nunca guarda COMO a resposta foi
obtida. É essa cadeia que G4 percorre para detectar deriva: D1→D7→D14→D22
que já não fala da pergunta original.
CONFIANÇA BAIXA NÃO FECHA DÚVIDA. Antes de escrever o
status, leia a coluna Confiança do handoff — o campo **Confidence:** do
T3. Se ela diz Baixa / Low, a dúvida NÃO pode ser marcada RESPONDIDA:
o status é RESPONDIDA-FRACA. Não há julgamento aqui, é a leitura de uma
palavra; se a palavra é Low e o status é RESPONDIDA, o registro está errado.
Uma RESPONDIDA-FRACA:
(a) NUNCA entra no CONTEXTO ESTABELECIDO de outro sub-agente;
(b) em rajada-contínua é re-admitida na rajada seguinte, reformulada mais
estreita, SEM passar pelo portão — o portão julga dúvida nova, ele não
reabre dúvida malfeita;
(c) em rajada-única entra OBRIGATORIAMENTE em "Questões em aberto", com o
motivo "respondida com confiança baixa" e a evidência que faltou;
(d) toda afirmação da resposta final que dependa dela carrega ressalva
escrita, como uma SOLITÁRIA.
Chegando assim na entrega, ela conta em H — nunca em C.
A CONTAGEM FECHA — nenhuma dúvida evapora. Todo status
terminal cai em EXATAMENTE uma letra, e esta identidade vale sempre:
**A = B + C + G + E + I + H + F**
| Letra | Conta | Status terminal no registro |
|---|---|---|
| A | todas as dúvidas que já existiram | total de linhas da tabela |
| B | fechadas pelo contexto | RESPONDIDA com Rota CALLER ou PROJECT |
| C | fechadas por busca | RESPONDIDA com Rota WEB |
| G | fechadas por você, sem sub-agente | RESPONDIDA-INFERIDA |
| E | recusadas no portão | DESCARTADA: <motivo> e DUPLICATA-DE-Dn |
| I | bloqueadas | BLOQUEADA |
| H | respondidas fraco | RESPONDIDA-FRACA |
| F | abertas na entrega | ABERTA |
EM-VOO não é terminal e não tem letra: na entrega ele tem de ser ZERO.
Se a identidade não fechar, o REGISTRO está errado — conserte o registro,
nunca o número. `D` (admitidas em rajadas posteriores) é métrica de fluxo:
vai na tabela de rajadas e NÃO entra na identidade, senão a dúvida admitida
na rajada 2 e respondida na rajada 2 é contada duas vezes.
A tabela "Questões em aberto" do relatório tem exatamente **F + I + H**
linhas — uma por dúvida que chega ao fim sem resposta usável. Nenhuma das
três letras tem permissão de sumir num contador.</invariant>
Formato em references/burst-templates.md, template T8. Ele é a
prestação de contas da rajada: quantas dúvidas nasceram, quantas o contexto
matou sem gastar busca, quantas foram descartadas no portão e por quê, e o
que ficou em aberto. Sem esses números, "pesquisa concluída" não significa
nada. A conta tem de FECHAR: A = B + C + G + E + I + H + F (I5), e a tabela
"Questões em aberto" tem exatamente F + I + H linhas. Relatório cuja
identidade não fecha é relatório com dúvida evaporada — e uma dúvida que
evapora é exatamente a resposta entregue com furo que ninguém declarou.
Referências — leia sob demanda, nenhuma consome contexto antes disso
| Arquivo | Quando ler |
|---|---|
references/burst-templates.md | Antes da primeira rajada. Templates T1–T8 com o contrato de 5 campos. |
references/failure-modes.md | Quando um caso de degradation disparar. |
references/surf-ai-cli.md | Ao escrever prompts de delegação: flags, saída JSON, códigos de saída. |
references/brave-api.md | Quando importar o que o Brave devolve, o que ele não devolve, ou por que uma flag não teve efeito. |
references/COSTS.md | Quando o orçamento de busca importar (o teto real é o plano Brave, não o dinheiro). |