`coverage` carries 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. FACTS, AND NO VERDICT, which is a measurement and not caution. Two readings were built and both falsified over 81 questions (16 synthetic, 65 across the three real sets, 2026-09-20): the share of question terms a delivered excerpt answers separates the synthetic controls at 0.33 against 0.50 and REVERSES on real data (covered questions down to 0.27, one genuinely uncovered question at 0.71); the share of a bundle tying the best lexical match is ~0.00 for every real question either way. Question style dominates the first, corpus size the second. The one bar this repository declares is the gate's: `UNANSWERED_BAR = 2/3` over `unanswered_in_bundle`, 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, at 2/3 the row is 6 of 6 and 0 of 65 real questions are marked. The margin is thin (0.6087 against 0.6667) and is published that way, together with what it does not catch: r761-sk2's own known-negative sits at 0.2857. Row 4: 3 of 6 RED -> 6 of 6 GREEN, with the 10 answered synthetic questions held unmarked as the known-negative. The contract's SS 8 gains point 7, the consumption skill is told to read the block, and the SS 7.4 known-positive moves with the document (14 721/375 -> 16 389/417). Suite 2292 passed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| example-payload.json | ||
| README.md | ||
References
example-payload.json is a real payload, not an illustration, and
../SKILL.md is the skill generated for the same bundle. Both come from the
three-concept golden bundle that ships in this repository,
examples/ingest-golden-segmented-okf-v0-2/expected-bundle, so anyone reading
this file can regenerate them byte for byte and compare. Neither carries content
from any corpus.
Regenerate them from the repository root rather than editing either file, with
okf being this checkout's own install (for example .venv/bin/okf):
okf skill examples/ingest-golden-segmented-okf-v0-2/expected-bundle \
--out skills/okf-consume --force --example-question "Hva sier veiledningen om krav?"
python3 -c 'import os, pathlib; p = pathlib.Path("skills/okf-consume/SKILL.md"); p.write_text(p.read_text(encoding="utf-8").replace(os.path.realpath(".") + "/", ""), encoding="utf-8")'
okf check --skill skills/okf-consume/SKILL.md \
--payload skills/okf-consume/references/example-payload.json
Why each part is there:
--force: the generator refuses to replace an existingSKILL.md(refused (target_occupied)), because a silent overwrite would destroy a hand-edited copy.--example-question: without it the question is derived from the bundle's own titles and the payload is a different one.tests/test_okf_consume.pyasserts this payload byte for byte against the pre-pass for exactlyHva sier veiledningen om krav?, so the question is part of what the file is.- The
python3line:okf skillwrites the bundle root and the skill's own path absolute when--outis not under.claude/skills/, and this directory is not. Shipped as generated, the two commands inSKILL.mdwould name one checkout on one machine. The line strips that checkout's prefix and nothing else, and a test holds the shippedSKILL.mdto the generator's output with exactly that prefix removed. okf checkshould reportconformant: 17 rules over 3 excerpts and 0 withheld entries, 0 findingsand exit 0.
The generated name is b-golden-segmented-okf-v0-2-consume while this
directory stays skills/okf-consume/. Claude Code takes a project or personal
skill's command from its directory name and uses name as a display label, so
a copy placed at .claude/skills/okf-consume/ is still /okf-consume.
The payload is here so that its shape can be read without running anything, and
so that a reader can see what the members the contract does not name look like in
practice: text and text_sha256 on every excerpt (§ 8 permits additional
members; § 1 defines an excerpt as delivered content, and without a body the
budget gate would measure a skeleton), rank, bundle_id_inherited, and the
raw_bytes/encoding_delta pair that gives the known-positive a second,
independent check.