The pre-pass delivered the right concept and the answer could not name it.
Measured by portfolio-optimiser 2026-09-08 over three paid arms: the gold
concept came back at rank 1 of 8 on 3 of 3 bundles, and the model answered
correctly on 1 of 3, because a delivered excerpt carried `concept_id`, body
text and nothing the document is known by. The previous session measured the
same gap from the other side: the provenance it had just written into every
concept did not reach the payload at all.
`excerpt_for` now carries `title` unconditionally, and `req_number`, the SPEC
5.1 address `sources` and each locator key (`source_pages`, `source_sheet`,
`source_rows`, `source_lines`, `source_offset`) when the concept has them. A key
the producer did not write stays absent: an empty value would assert that they
wrote an empty one, which is the contract's 6.4 failure.
`sources` is read in BOTH YAML forms, on a measurement rather than a taste. K2
writes the flow form on 629 of 629 concepts; the largest N-bundle writes the
block form on 270 of 270 and carries no locator key at all, so a flow-only
reader delivers that bundle with no address whatsoever. Reading the block form
is not a licence to write it - the emission rule is untouched, because the
line-oriented parser still cannot round-trip a block list. A `sources` value
this reader cannot decode is named (`sources_unreadable`), never dropped into
the same silence as an absent one.
Contract 8 gains the requirement and the checker gains its code
(`excerpt_unnamed`, 15 rules now, was 14): an excerpt a reader cannot name is
one an answer cannot cite, whatever its rank. `req_number`, `sources` and the
locators are SHOULD, not MUST - they are conditional on the producer, and a
bundle whose concepts carry no identifier cannot deliver one.
K2 controls, same question and same k, before against a frozen copy of the tool
at
|
||
|---|---|---|
| .. | ||
| example-payload.json | ||
| README.md | ||
References
example-payload.json is a real payload, not an illustration: it was
produced by
python3 tools/okf_consume.py examples/ingest-golden-segmented-okf-v0-2/expected-bundle \
--question "Hva sier veiledningen om krav?" --out references/example-payload.json
against the three-concept golden bundle that ships in this repository, so anyone reading this file can regenerate it byte for byte and compare. It carries no content from the K2 corpus.
It is here so that the payload's 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.