Inventário sem abrir o arquivo
Percorra toda a árvore, classifique arquivos elegíveis e exclua symlinks sem ler um único registro.
- Classificar cada caminho da árvore sintética.
- Explicar por que `lstat` é uma decisão de segurança.
- Distinguir entrada ignorada de inventário com falha.
Modelo central
A U1 percorre diretórios recursivamente, mantém apenas arquivos regulares `.jsonl` e atribui uma de três classes. Arquivos na raiz são primary; qualquer caminho elegível abaixo de um segmento `subagents/` é subagent; arquivos aninhados residuais são other. Todo o resto é ignorado por política, não esquecido por acidente.
Modelo mental: É um registrador de museu contando caixas lacradas por sala, etiqueta, peso e data de modificação — sem abrir nenhuma caixa.
`lstat` observa um symlink como symlink; não percorre o destino. Nomes de diretório e entradas finais são ordenados com comparador textual explícito. Agregados reportam arquivos, bytes exatos e intervalos de mtime do filesystem com limites nulos para classes vazias.
Tabela de fronteiras
| Pergunta | Fronteira observada | Dono | Veredito |
|---|---|---|---|
| alpha.jsonl | JSONL regular na raiz | primary | Incluir |
| subagents/agent-01.jsonl | Aninhado abaixo de subagents | subagent | Incluir |
| misc/orphan.jsonl | JSONL aninhado residual | other | Incluir |
| linked.jsonl | Symlink | Nenhuma | Excluir |
Fonte local primária
packages/sessions/src/claude-inventory.tsif (metadata.kind === 'directory') walk(path);
if (metadata.kind !== 'file' || !name.endsWith('.jsonl')) continue;
entries.sort((a, b) => compareText(a.relativePath, b.relativePath));Laboratório sintético
Classifique um caminho sintético.
Recuperação e feedback
Como `subagents/journal.jsonl` é classificado na U1?
Cartões de recuperação
Teste seu modelo
O que um diretório vazio válido retorna?
Ledger de evidências
Autoridade: docs/fable-session-mining/LOOP-LOG.md. Testes nunca promovem um recibo real ausente.