llm-ingestion-okf/llms.txt
Kjell Tore Guttormsen 3daf983de1 chore(release): 0.8.1
A patch release carrying round 16's ranking rule and nothing else. No
behaviour changes in `src/`: the version string is the only line touched
there, and it is touched because it is the second half of the version --
`tests/test_packaging.py` holds `pyproject.toml`'s declaration and
`__init__.__version__` equal, and a tag whose package reports the previous
number lies to every consumer that installs it.

- `pyproject.toml` and `src/llm_ingestion_okf/__init__.py`: 0.8.0 -> 0.8.1.
- `CHANGELOG.md`: round 16's own entry closes as `[0.8.1]`, with a new empty
  `[Unreleased]` above it and no comparison link, because the file has
  published none since `[0.6.0]`. The entry gains one bullet it did not
  carry: the rule's MEASURED DOWNSIDE, reproduced here on a five-document
  folder -- a constructed known-negative question demotes the answering
  section from delivered rank 1 to rank 2 because a neighbouring concept
  titled with a single common process word has its WHOLE title accounted
  for. Written as a known limitation of short generic titles, not as a fix.
- The five install lines (`README.md` 4, `llms.txt` 1) move to `@v0.8.1`.
  Measured after: `okf.git@v0.8.0` 0 hits, `okf.git@v0.8.1` 5 hits as the
  known-positive control, and the two remaining bare `v0.8.0` occurrences
  are the tag-history row and the test-count history -- both are statements
  about the past and both stay.
- The tag-history list gains `v0.8.1` as the current tag and demotes the
  `v0.8.0` row to what it was; `v0.7.0` is untouched, and `docs/` is not
  rewritten at all.
- The test-count history sentence named the `v0.8.0` release as the last
  one and would have become false on this tag: it now records 1582 through
  `v0.8.1` as well. The published figures 1583 collected / 1582 passed /
  1 skipped were re-measured here and stand.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 23:03:28 +02:00

34 lines
1.5 KiB
Text

# llm-ingestion-okf
> Turn a folder of documents (PDF, DOCX, XLSX, PPTX, MD) into a bundle a model can answer from with a source on every claim. Offline and deterministic: no model call anywhere in the run path. Security is delegated to llm-ingestion-guard.
Requires Python 3.10+ and [uv](https://docs.astral.sh/uv/). Neither this package
nor the guard it depends on is on a package index yet; one command resolves both:
```sh
uv tool install "llm-ingestion-okf[extract] @ git+https://git.fromaitochitta.com/open/llm-ingestion-okf.git@v0.8.1"
```
Then, in the folder you want to work from:
```sh
okf project ~/my-documents
claude
```
`okf project` writes the bundle to `.okf/<id>/` and a Claude Code skill to
`.claude/skills/<id>-consume/` in the current directory. Start `claude` there
and ask in plain language. Three shapes of request are supported and the
generated skill states the rules for each: a **question**, a **hypothesis**
(answered per premise as `confirmed` / `refuted` / `undecidable-from-bundle`),
and a **task whose answer is a document** (every claim in the written file
carries its source; an ungrounded paragraph is written and marked, never
dropped).
## Docs
- [Consume in Claude Code](README.md#consume-in-claude-code): the same thing in
steps, several bundles in one project, and what was measured.
- [README](README.md): the pip-only fallback if uv is unavailable, the guard
pairing per tag, the build flags, phase status, and the upstream OKF version
policy.