Mineração de Sessões Claude Orientada por EvidênciasLição 3/8
Fronteira de evidência

Determinismo e falha honesta

A mesma árvore produz os mesmos bytes; uma fronteira quebrada produz erro, não uma história parcial.

U1 REAL: PROVENEXEMPLO SINTÉTICO · /demo-claude/
Dois percursos embaralhados produzem um resultado ordenado idêntico enquanto falhas interrompem a saídaenumeração Aother · primarysubagent · primaryenumeração Bprimary · subagentprimary · otherJSON ordenado idênticofalha → sem valor parcial
Dois percursos embaralhados produzem um resultado ordenado idêntico enquanto falhas interrompem a saída.
Ao final, você consegue
  • Nomear cada fonte de ordenação que precisa ser estabilizada.
  • Separar um resultado vazio válido de uma falha de filesystem.
  • Explicar por que saída parcial seria desonesta.
1

Modelo central

Um inventário útil é comparável ao longo do tempo. Isso exige percurso ordenado, agregação estável, timestamps explícitos dos metadados do filesystem e nenhum relógio ou valor aleatório no resultado. Quando leitura de metadados ou diretório falha, a operação e o caminho são nomeados e o comando termina sem sucesso.

Modelo mental: Pense numa balança calibrada: a mesma caixa lacrada precisa produzir a mesma leitura. Se a balança perde energia, mostra erro em vez do peso de ontem.

A implementação ordena resultados injetados de `readDir` antes da recursão e ordena novamente os caminhos relativos finais. Ela retorna `Result<T, Error>` para raízes ausentes, não diretórios, falhas de `lstat` e falhas de `readDir`. Assim, duas execuções JSON sobre uma árvore inalterada podem ser byte-idênticas.

2

Tabela de fronteiras

PerguntaFronteira observadaDonoVeredito
Ordem de diretório injetadaOrdenar antes de percorrerCaminhos estáveisDETERMINISTIC
Mtimes inalteradosUsar valor do filesystemIntervalo estávelDETERMINISTIC
Falha de leituraRetornar Result.errSem inventário parcialFAIL CLOSED
Fonte local primáriapackages/sessions/src/claude-inventory.test.ts
const first = await inventoryClaudeProject(root, shuffledFsA);
const second = await inventoryClaudeProject(root, shuffledFsB);
expect(JSON.stringify(first)).toBe(JSON.stringify(second));
Comparador estável: Ordenação textual explícita independente da enumeração do filesystem.Comparador estável
Ordenação textual explícita independente da enumeração do filesystem.
Result: Sucesso ou erro nomeado, nunca valor parcial ambíguo.Result
Sucesso ou erro nomeado, nunca valor parcial ambíguo.
Mtime do filesystem: Metadado do arquivo, não cronologia da transcrição.Mtime do filesystem
Metadado do arquivo, não cronologia da transcrição.
Byte-idêntico: Saída serializada coincide exatamente para estado inalterado.Byte-idêntico
Saída serializada coincide exatamente para estado inalterado.
3

Laboratório sintético

Escolha um estado observado e veja o resultado honesto.

4

Recuperação e feedback

Preveja antes de revelar

Um `readDir` aninhado falha após três entradas coletadas. O que pode ser retornado?

Apenas um erro. Retornar três entradas disfarçaria um arquivo incompleto como verdade.

Cartões de recuperação

Cartões de recuperaçãoComparador estávelAtive para virar
Comparador estávelOrdenação textual explícita independente da enumeração do filesystem.
Cartões de recuperaçãoResultAtive para virar
ResultSucesso ou erro nomeado, nunca valor parcial ambíguo.
Cartões de recuperaçãoMtime do filesystemAtive para virar
Mtime do filesystemMetadado do arquivo, não cronologia da transcrição.
Cartões de recuperaçãoByte-idênticoAtive para virar
Byte-idênticoSaída serializada coincide exatamente para estado inalterado.

Teste seu modelo

Qual intervalo de tempo a U1 pode afirmar?

A U1 nunca abre registros, então não pode inferir cronologia da transcrição.
5

Ledger de evidências

Contrato · PROVENSCOPE + código-fonte
Implementação · PROVENcódigo + testes focados
Fronteira compilada · PROVENrecibo U1 registrado
Sonda independente · PROVENcontagens/bytes U1 coincidem

Autoridade: docs/fable-session-mining/LOOP-LOG.md. Testes nunca promovem um recibo real ausente.