• v1.0.0 404bed26e2

    v1.0.0 Stable

    ktg released this 2026-09-20 19:57:02 +00:00 | 39 commits to main since this release

    Signed by ktg
    SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q

    Added

    • A document the gate refuses WHOLE is named in the run's own summary.
      Measured 2026-09-20 against a real corpus of official documentation built
      with the shipped default gate: 17 sources were refused outright, 16 of them
      among its ordinary reference pages, and the summary said only
      one fail_secure line and one quarantine_review line. The count of
      documents the gate dropped was not there (rejected (coded) sums gate
      refusals and extraction failures, which have different remedies), the names
      were not there, and neither was the way out. okf build now prints a
      Documents the gate refused WHOLE section carrying all four — the count with
      its denominator, the names (capped at ten, with the rest in the bundle's
      log.md), the codes, and --gate none for a source you vouch for yourself —
      and repeats it in one line on stderr, where a redirected stdout cannot hide
      it. log.md gains a bullet naming every refused document, uncapped. The
      exit code does not move
      : the build is valid, every refusal is coded and the
      bundle is a true record of what the gate allowed; what was wrong was the
      silence. A run the gate refused nothing from is byte-identical, in the
      summary and in log.md.
    • A Known limitations section on the front page, high up and before the
      install detail: the gate's measured refusals and the way out, the absent
      ceiling on what one run pays for images, the three gates of this repository
      that are RED and what each red row means for a user, what the content
      accounting does not count, and the rough edges nothing is planned for. No new
      measurement — every number was already taken.
    • The payload says what of the question it reached — a new top-level
      coverage member carrying three lists: the terms the pre-pass read the
      question as, the terms no concept in the bundle answers, and the terms no
      delivered excerpt answers. Without it a reader holding eight excerpts cannot
      tell a bundle that ANSWERED its question from one that merely ranked
      something; the two payloads have the same shape. Documented as SS 8 point 7
      of docs/consumption-contract.md, and the generated consumption skill is
      told to read it.
      • Facts, and no verdict, which is a measurement rather than caution. Two
        readings were built and both falsified over 81 questions (16 synthetic,
        65 across three real gold sets, 2026-09-20): the share of a question's
        terms a delivered excerpt answers separates the synthetic controls at 0.33
        against 0.50 and then REVERSES on real data, where covered questions run
        down to 0.27 while one genuinely uncovered question sits at 0.71; and the
        share of a bundle tying the best lexical match is ~0.00 for every question
        in a large bundle, covered or not. Question style dominates the first and
        corpus size the second, so a pre-pass emitting a verdict would assert
        across corpora what was measured on one.
      • Contract change, and the cost to a consumer is a re-run. Every payload
        grows the member; the checker does not read it, so a third-party pre-pass
        that omits it stays conformant. The SS 7.4 known-positive moves with the
        document it is measured on (14 721 / 375 → 16 389 / 417).
    • The retrieval gate is measurable where it was assertable
      (tools/okf_retrieval_gate.py, not shipped in the wheel):
      • Row 8 prints the identity of every bundle it measured — path,
        bundle_id and content ref — beside the set's sha256. Measured the same
        day: two builds of one consumer's corpus carrying the SAME bundle_id at
        different refs score differently on the same pinned set, which is why the
        ref and not the id is what a row is attributed to.
      • REAL_SET_PINS states what each of the three real sets IS — questions,
        fasit entries, controls and sha256 — so a self-written file in the right
        shape is refused instead of reading 1 of 1 | 3 of 3 | GREEN.
      • Row 5 reads the hold-out threshold as a number in [0, 1] and RUNS the
        registered set against the registered bundle, printing
        answered of asked = share against threshold. bool(threshold) was the
        whole check, so report-only; any number is acceptable for v1 passed it.
      • Row 4's marking reads the payload's coverage: UNANSWERED_BAR = 2/3,
        swept and collapsing at both ends (at 0.50 eleven real covered questions
        are marked; at 0.70 the row falls to 5 of 6). The margin is thin — 0.6087
        against 0.6667 — and what it does not catch is published with it.

    Changed

    • The two pip install lines under "Install in detail" install
      [extract].
      The first screen installs llm-ingestion-okf[extract] and
      those two omitted it, so a reader following the detailed instructions got a
      build that reports resolved converter path: unresolved (extractor_extra_missing) and reads no binary format. Two recipes, two
      different installations.
    • Version 1.0.0. The scope this tool is finished at. It adds no
      capability over v0.10.1; what it adds is that the tool says what it does
      not do. After this tag the library is touched for defects found in its own
      use, and the next round is Google OKF v0.3.
    • A withheld concept now carries the rule that actually decided it. The
      source quota filters the WHOLE ranked candidate list rather than the top
      k, so every over-quota candidate came back source_quota_exceeded
      including the ones the RANK had already put outside k, which the quota
      only reached because it ran first. Measured on 25 real misses 2026-09-17:
      13 of them were labelled by the quota and decided by the rank.
      consume._fates_without_quota asks the same cut what would have become of
      each candidate with no quota in force, and the drop keeps THAT rule; only a
      candidate the quota-off cut would have delivered is named as the quota's.
      The budget step is lifted into consume._pack and used by both, so the
      quota-off fate is decided by the code the run itself uses. This moves the
      rule string a consumer reads for some withheld entries; no delivery, no
      rank and no excerpt byte moves, and no committed payload in this repository
      changed. The retrieval gate's row 3 goes 2 of 5 RED to 5 of 5 GREEN.
    Downloads