chore(release): prepare 1.1.0 — version sync, changelog, front-page limitations
Version 1.1.0 in pyproject, the package, uv.lock and every README install line; the "current tag" entry moves to v1.1.0 and v1.0.0 becomes history. The CHANGELOG states what a user notices: BM25 ranking on passages and titles, sub-questions in one call, a map per bundle, a weak-coverage signal, one generic skill plus the server as the standard way in over a folder, --gate in okf project, and okf-consumption/2 as BREAKING for a reader of withheld. Known limitations gain the vocabulary route through the map, the retrieval gate's red rows as they stand under BM25, the answer smoke test (no corpus content, no counts) and unmeasured speed. eval/svar/ is ignored the way eval/soek's sets are: answers about a consumer's corpus are inputs, never committed. No tag, no push. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
21f9241712
commit
43499c0ca5
6 changed files with 118 additions and 14 deletions
75
CHANGELOG.md
75
CHANGELOG.md
|
|
@ -5,6 +5,81 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.1.0] — 2026-09-21
|
||||
|
||||
The reading side. Nothing here changes how a bundle is built from a folder;
|
||||
what changes is how a question finds its way into one, and how many bundles
|
||||
one question can reach.
|
||||
|
||||
### Changed
|
||||
|
||||
- **A new default ranking: BM25 over passages and titles.** A concept is scored
|
||||
on its best 500-character passage and on a title/path-weighted field, and the
|
||||
two are fused by rank. A concept longer than 4 000 characters is delivered as
|
||||
its answering passage, with `passage: {start, end, of}` saying where in the
|
||||
concept it sits. The previous fusion stays reachable as `--ranking fusion`.
|
||||
A reader will see different excerpts, in a different order, for the same
|
||||
question on the same bundle.
|
||||
- **BREAKING for anyone who reads the payload: the contract is
|
||||
`okf-consumption/2`.** `withheld` is no longer a list with one entry per
|
||||
concept left out; it is a mapping with `total`, `by_rule`, `nearest` (the
|
||||
best-ranked drops by name, title and source document, 20 by default) and
|
||||
`complete`. Measured on a large real bundle, the old list was about two
|
||||
thirds of the written payload and none of it counted against the budget the
|
||||
payload reported. `--withheld-full` brings the whole list back. The revision
|
||||
was bumped so that code indexing `withheld` as a list fails loudly instead of
|
||||
reading the wrong thing. `--withheld-titles` is retired.
|
||||
- **The server and the generic skill are the standard way in, over a whole
|
||||
folder.** `okf project` and the front page say it in that order: register
|
||||
`okf mcp --root` once, on user scope, and every project can ask every bundle
|
||||
under it; the skill beside a bundle is the supplement for someone who would
|
||||
rather register nothing. Neither is made again when a bundle is rebuilt.
|
||||
- **`okf skill` writes ONE generic skill by default**, carrying a working
|
||||
method and an answer form and no bundle's numbers, so it does not go stale
|
||||
when a bundle is rebuilt. `--for-bundle` keeps the per-bundle form.
|
||||
`okf project` puts it at `.claude/skills/okf-consume-any/`.
|
||||
|
||||
### Added
|
||||
|
||||
- **Several sub-questions in one call.** `okf consume --question A --question
|
||||
B` (and `questions` on the server's `okf_ask`) reads the bundle once, cuts
|
||||
each sub-question as if asked alone and interleaves the deliveries under the
|
||||
same `k` and byte limit. One question gives exactly the payload it gave
|
||||
before.
|
||||
- **A map per bundle.** `okf card` and the server's `okf_describe` carry
|
||||
`map`: one line per source document with its concept titles in document
|
||||
order, a numbered series folded into one line. The working method is to read
|
||||
the map first and ask two to four sub-questions in the map's own words.
|
||||
- **A signal for weak coverage.** The payload's `coverage` carries
|
||||
`absent_terms` (question words the bundle holds in no form) and `weak` (one
|
||||
such word, or nothing delivered). It is a reading, not a verdict.
|
||||
- **A folder of bundles in one command.** `okf card <folder>` shows every
|
||||
bundle under it, `okf consume <folder>` asks every bundle in one call
|
||||
(`--bundle-id` narrows it to one), and `okf check` reads that reply, holding
|
||||
each payload to all 19 rules on its own. These are the same functions the
|
||||
server runs.
|
||||
- **A table fragment is read under its heading.** A concept carrying the
|
||||
proposer's mechanical table title is ranked and shown under the nearest
|
||||
concept above it in its document; the excerpt keeps `own_title`. No bundle
|
||||
byte moves.
|
||||
- **`okf project --gate`**: the gate can be chosen when building a project,
|
||||
and the bundle's `log.md` names which one ran.
|
||||
- `okf check` gains `passage_malformed` and `subquestions_unindexed`
|
||||
(19 rules).
|
||||
|
||||
### Removed
|
||||
|
||||
- **The old test track tied to one reference corpus is retired.** Its gate
|
||||
row, its adapters and the tests that read those bundles are gone; public
|
||||
tests and gates run on invented material. The retrieval gate's premises were
|
||||
re-measured for BM25.
|
||||
|
||||
### Known limitations added
|
||||
|
||||
See [Known limitations](README.md#known-limitations): a question worded
|
||||
differently from the bundle reaches it first through the map's words, the
|
||||
retrieval gate is red on rows 5, 7 and 8, and speed was not measured.
|
||||
|
||||
## [1.0.0] — 2026-09-20
|
||||
|
||||
### Added
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue