Distillation: surface → core compression

Surface-to-core extraction and recursive distillation.

Distillation: surface docs -> core docs, Merkle-signed back.

class aborist.distill.DistillationResult(core, contributing_chunk_indices)[source]

Bases: object

What a Distiller returns for one source.

contributing_chunk_indices: 0-based indices into source_chunks that fed the core’s content. The runner Merkle-proves each one against the source’s document_root and stores those proofs in derivations.proof_blob.

Parameters:
core: Document
contributing_chunk_indices: list[int]
class aborist.distill.Distiller[source]

Bases: ABC

Pure function: surface Document + its chunks -> core DistillationResult.

Distillers must be deterministic — same source bytes produce the same core bytes. Bumping a distiller’s algorithm requires bumping its name.

name: str
abstractmethod distill(source, source_chunks)[source]
Parameters:
Return type:

DistillationResult

class aborist.distill.FirstSentenceDistiller(max_chars=4096)[source]

Bases: Distiller

Parameters:

max_chars (int)

name: str = 'first-sentence-v1'
distill(source, source_chunks)[source]
Parameters:
Return type:

DistillationResult

class aborist.distill.TfidfKeywordDistiller(top_k=16)[source]

Bases: Distiller

Parameters:

top_k (int)

name: str = 'tfidf-keywords-v1'
distill(source, source_chunks)[source]
Parameters:
Return type:

DistillationResult