Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Glossary

The words this codebase uses, and what each one is load-bearing for. A term earns a place here when getting it wrong would produce working code that records something false.

The authoritative version is CONTEXT.md in the repository root, which goes deeper on each entry.

Acquisition

Source — a trait, not an entity with a kind field. The one thing that varies between a crawled website and a YouTube channel, quarantined behind enumerate and acquire.

Adapter — a concrete Source. SiteSource and ChannelSource today.

Enumerate — produce the complete Resource set a Source declares. Always a full snapshot, never a delta.

Acquire — retrieve everything one address holds. Returns a list, because a video is one address holding metadata, captions and audio.

Artifact — one thing retrieved, at its own address. A page is one; a video is up to three.

Enclosure — a document a page carries at its own address rather than contains. One level, same host.

Marker — the address whose presence in the log proves a Resource was acquired. The page itself for a site; the metadata sub-resource for a video.

Refusal — an acquisition that failed, carrying a Liveness rather than an error type.

Content kind — one word for what a blob is, deliberately coarser than its format. Decided from a 4 KB head.

Declared vs inferred type — a content-type a server sent, against one read off a filename. Both feed classification and only the first is evidence.

Note — a line of provenance a Source wants shown, and how it should read.

Crumb — an off-host link recorded, not followed. One Source per exact host; the operator promotes crumbs, and that is what bounds the recursion.

The store

Truth vs derived — only blobs/ and log/ are truth. current/, centinel.db and vectors.lance/ are derived and rebuildable.

Derived is not the same as cheapcentinel.db is minutes; vectors.lance/ is about a day on a 400,000-chunk corpus.

Replay — one Source’s log, read once and answerable many times. A snapshot: it answers what the log said when it was read.

Store rootwhich store. The identity of the corpus. Defaults to ~/.centinel.

Head read vs whole readblob_head reads the first few kilobytes and verifies nothing; get_blob reads the whole file and verifies it against its address.

BlobSha vs Fingerprint — the hash of the bytes as served (evidentiary) versus the hash of normalized content (the change signal).

The record

Resource — an address, not a thing in the world. The same meeting reachable four ways is four Resources.

Observation — one successful acquisition, always backed by bytes. There is no failure variant.

LivenessLive, Gone, Blocked, Error.

Blocked — refused in a way that is not evidence of absence: WAF 403, 429, robots denial, YouTube’s bot wall.

DiscoveryRun — a full snapshot of the Resource set one enumeration observed.

Truncated — an enumeration that stopped on a ceiling rather than on the end of the source. A count is printed as at least n wherever it is true.

Underivable — a derivation that was attempted and produced nothing. The peer of ResourceStatus on the derivation side.

Pipeline version — carried on every Underivable. A verdict belongs to one pipeline at one version and says nothing about the next.

Strategies

Strategy — recognition and enumeration as one object. Answers where are the addresses.

Recognition — what a strategy saw, and on what evidence. The operator accepts or rejects on the evidence.

Keyed — what a strategy keys on: Product, Framework, ServerDefault, Standard. There is no Jurisdiction variant and there will not be one.

Specificity — lower is more specific, and more specific wins. The difference between collecting a site and collecting its front door.

Pass — one enumeration in progress: the queue, the ceilings, and what has been kept. A strategy must not decide what a ceiling means.

Lead — a host nothing recognised, and what was measured about it.

Extraction

Primary and fallback reader — two tools for one kind, tried in order, and the record names whichever one spoke. A fallback is not a second guess at the same question; it is the admission that the first tool’s silence was never evidence.

The order is datareaders_for is a list per content kind, with one shared definition of produced nothing.

Marked region — the part of a page the page itself declares to be its content: <main>, [role=main], #main-content, .main-content, <article>, widest first.

Title — the document’s own name, written into the extracted text as an # H1 rather than recorded beside it, because only the text is searched.

Retrieval

Chunk — a passage of derived text. Its id is the SHA-256 of the text itself.

Chunk geometry — the target and overlap sizes. Load-bearing far outside chunking, because the geometry decides the text and the text decides the hash.

Placement — where a chunk sits: which address, which derived blob, which character span. The address is part of its identity.

Write batch — the rows index commits as a unit. One document, because that is the unit the skip predicate subtracts.

Arm — one retriever feeding the fusion. There are two: BM25 over FTS5, and cosine over LanceDB.

Rank vs pool — a rank is a position inside a set and says nothing about the size of that set.

Method — the name of the pipeline that produced this ordering, assembled from what actually ran.

Always on vs always available — there is no flag that silently returns worse results. That is not a promise that a machine with no weights refuses to search.

Handle — a hash that identifies one blob and that the tool will accept back, by prefix.

Original vs derived blob — the bytes as served versus what an extraction or a transcription produced from them. Both addressable; only the first is an Observation.

The run report

Tally — the numbers one stage produced, folded across however many calls it took.

count vs total — work this run did (two calls add) versus what the store now holds (the last answer wins).

Partial failure — a corpus-wide stage where some targets failed and others did not. Still a failure, and it keeps the numbers of the calls that worked.

Summary vs error — the line a person reads, against every failure joined for a machine.

Host

Need — what a missing binary costs: required, optional, or planned.

Gate — a pipeline stage that a set of weights blocks: search, or transcription. Rolled up per role.

Stale — a binary that is present and working but old enough that breakage is expected. Only yt-dlp answers.

Tool — one invocation of an external program. The only way this codebase starts a child process.

Deadline vs stall timeout — a deadline bounds total time; a stall timeout bounds silence, and is the only workable guard on a job whose honest duration is hours.

Heartbeat — output that proves a child is alive.

Reach — who may cause an op to run: Public, Operator, Host.