onetrace 0.2.0

Plain Python (no framework)

examples/plain_python_control/pipeline.py — the reference path every framework adapter is compared against: the same nine stages (document in, converted, cleaned, split, embedded, indexed, retrieved, prompt built, answer) over the same corpus, with no RAG/agent framework anywhere in the file, not even an orchestration layer of onetrace's own.

Two third-party imports, both used directly rather than through a framework: pypdf (there's no PDF parser in the standard library) and the standard library's own html.parser for HTML. Everything else — cleaning, chunking, embedding, indexing, retrieval, prompting, answering — is hand-written standard-library Python.

The embedder deliberately avoids numpy: it expands sha256(text) through hashlib.shake_256 into a fixed-length byte stream, so embedding similarity is deterministic and needs no floating point at all. This is what makes this adapter, unlike the three framework ones, safe to run and compare bit-for-bit on any machine — a real floating-point embedder's own output can legitimately differ across numpy/BLAS builds even for identical code and inputs (this project's own test suite measures how much, and under which configurations).

Instrumented via onetrace.emit.Recorder exactly as the framework adapters are — the point of this pipeline is that a framework is never required to produce a valid stage-receipt chain.