Mineração de Sessões Claude Orientada por EvidênciasLição 5/8
Manifesto estrutural

Faça streaming, nunca emita os registros

Enquadre registros físicos a partir de chunks de bytes preservando proveniência exata e silêncio de saída.

U2 REAL: PROVENEXEMPLO SINTÉTICO · /demo-claude/
Chunks arbitrários de bytes viram registros físicos completos e metadados sanitizadoschunksC0C1C2C3enquadrador LFR0 [0,30)R1 [30,55)R2 invalid_jsonintervalos + códigossem registro bruto
Chunks arbitrários de bytes viram registros físicos completos e metadados sanitizados.
Ao final, você consegue
  • Enquadrar registros delimitados por LF entre chunks arbitrários.
  • Manter a contabilidade de bytes mesmo quando o parse falha.
  • Descrever silêncio de saída como invariante, não etapa de redação.
1

Modelo central

Um stream pode dividir em qualquer ponto — até no meio de uma sequência UTF-8 ou linha. Por isso a U2 trata bytes como fonte da verdade, encontra fronteiras LF, conta um registro final sem terminador e mantém offsets exatos. O parse pode falhar sem perder cobertura de bytes.

Modelo mental: Uma esteira entrega peças de quebra-cabeça em caixas arbitrárias. O enquadrador recompõe linhas completas na estação local, registra posições e descarta a imagem após medi-la.

O digest do arquivo consome cada byte bruto. Registros físicos usam spans semiabertos `[start,end)`. Strings válidas de timestamp top-level viram observações; UTF-8 inválido, registros vazios, JSON inválido e JSON não objeto viram falhas estáveis. O manifesto não armazena buffers brutos.

2

Tabela de fronteiras

PerguntaFronteira observadaDonoVeredito
Fronteira de chunkArbitráriaNunca é fronteira de registro por si sóSTREAM
LFDelimitador físicoEncerra um span de bytesFRAME
Bytes finais sem LFSem terminadorAinda um registro físicoFRAME
JSON inválidoFalha de parseManter cobertura; emitir só códigoFAULT
Fonte local primáriapackages/sessions/src/claude-manifest.ts
interface ClaudeManifestByteSource {
  identityBefore: FileIdentity;
  bytes: AsyncIterable<Uint8Array>;
  identityAfter(): Promise<FileIdentity>;
  close(): Promise<void>;
}
Chunk de bytes: Unidade de transporte escolhida pelo stream, não pelo formato.Chunk de bytes
Unidade de transporte escolhida pelo stream, não pelo formato.
Registro físico: Um span delimitado por LF ou um span final não vazio.Registro físico
Um span delimitado por LF ou um span final não vazio.
Semiaberto: `start` pertence ao intervalo; `end` não.Semiaberto
`start` pertence ao intervalo; `end` não.
Silêncio de saída: Buffers brutos nunca entram no manifesto ou texto de erro.Silêncio de saída
Buffers brutos nunca entram no manifesto ou texto de erro.
3

Laboratório sintético

Envie uma forma sintética de stream ao enquadrador.

4

Recuperação e feedback

Preveja antes de revelar

O registro final não tem LF. Ele é ignorado?

Não. Um span final não vazio é um registro físico e continua coberto por hashes e janelas.

Cartões de recuperação

Cartões de recuperaçãoChunk de bytesAtive para virar
Chunk de bytesUnidade de transporte escolhida pelo stream, não pelo formato.
Cartões de recuperaçãoRegistro físicoAtive para virar
Registro físicoUm span delimitado por LF ou um span final não vazio.
Cartões de recuperaçãoSemiabertoAtive para virar
Semiaberto`start` pertence ao intervalo; `end` não.
Cartões de recuperaçãoSilêncio de saídaAtive para virar
Silêncio de saídaBuffers brutos nunca entram no manifesto ou texto de erro.

Teste seu modelo

Qual é a fonte da verdade para offsets e hashes?

O parse pode falhar ou normalizar texto; a proveniência de bytes não.
5

Ledger de evidências

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

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