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í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
Pergunta
Fronteira observada
Dono
Veredito
Ordem de diretório injetada
Ordenar antes de percorrer
Caminhos estáveis
DETERMINISTIC
Mtimes inalterados
Usar valor do filesystem
Intervalo estável
DETERMINISTIC
Falha de leitura
Retornar Result.err
Sem inventário parcial
FAIL 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));
Ordenação textual explícita independente da enumeração do filesystem.Sucesso ou erro nomeado, nunca valor parcial ambíguo.Metadado do arquivo, não cronologia da transcrição.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.