llm-ingestion-okf/docs/2026-09-07-k3-enhetsark-metode.md
Kjell Tore Guttormsen 35b8c9e805 docs(measure): K3 unit worksheet delivered for operator, no code changed
Order 20260907T141419Z-2723316647-from-.claude: a 12-document, three-question
worksheet so the operator can answer the unit-of-knowledge question
docs/2026-09-07-k3-arm-e.md left open before any new arm is attempted. The
worksheet itself (concept splits per arm, extracted document structure,
blank checkboxes) is local-only and gitignored because it quotes corpus
content; this commit adds only the method record, which names no corpus
path or document title.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 16:36:16 +02:00

90 lines
5 KiB
Markdown

# K3 unit worksheet, 2026-09-07
Order `20260907T141419Z-2723316647-from-.claude`. Pure reading and
generation: no production code, no threshold, no rating performed by this
session. The worksheet itself is local-only and gitignored, because it
quotes corpus document titles, extracted text, and concept splits, and this
repo's public convention (`CLAUDE.md`) never tracks K2 corpus content or
paths. This file states what the worksheet is and how it was built, without
any of that content.
## Why it exists
`docs/2026-09-07-k3-arm-e.md` § Verdict left the K3 result conditional on a
question no method text resolves: what counts as **one unit of knowledge** in
this corpus -- a top-level chapter, a numbered subsection, or something else
-- and whether a table is a unit on its own or only together with the prose
that introduces it. The question surfaced twice on identical material: once
under Arm D (two blind raters split on the same document), once under Arm E
(the same document, same split, changed reasoning). It is prior to any
threshold: a threshold on an undecided unit measures the rater, not the arm.
The operator asked for a concrete artifact rather than an abstract question.
This worksheet is that artifact: one worked example per sample document, with
the operator's answer left blank, that becomes the reference the next K3
round is measured against.
## What the worksheet contains
One section per document in the K3 sample (n = 12, the same draw every K3
round has used), in canonical position order 0-11:
1. **The concept split under three arms** -- Arm B (shipping default), Arm D
(`--outline-run 3`), Arm E (`--outline-run 3 --table-grid`) -- as an
indented list of concept title and character length per arm, capped at 25
lines with a `... (+N)` suffix when a document has more.
2. **The document's own heading structure**, independent of any arm: every
ATX (`#`) and dotted-numbered heading the shipped grammar recognises, plus
contiguous table spans (a maximal run of pipe-delimited rows and grid rule
lines merged into ONE span, rather than fragmented the way the shipping
per-row candidate rule reads them) -- capped at 30 lines.
3. **Three checkbox questions per document** -- what a unit is here, what a
table is here, which arm is closest today -- plus one free-text line, all
left blank for the operator.
4. **A closing summary table**, 12 rows by 3 answer columns, that the
operator fills in. That filled table is the deliverable: the next K3
round measures against it, stated as such at the top of the worksheet.
## How it was built
Reading and generation only, run in the foreground this session, nothing
written under `src/` or `tools/`:
- The sample draw was reproduced via the shipped `draw_sample` function in
`tools/okf_outline_measure.py` (hex SHA-256 of the NFC-normalised filename,
stratified 8 pdf / 3 docx / 1 xlsx) against the corpus directory, **12/12**
matching the order published in `docs/2026-09-07-k3-arm-e.md` § Appendix.
- Concept splits per arm were read from the archived plan JSON files for
this K3 round -- Arm B from the archived baseline plans, Arm D from the
archived Arm D plans, Arm E from the Arm E round's own plans -- matched to
each sample document via each archive's own `_index.txt` (position, exit
code, filename), not by re-deriving a path prefix.
- The document's own heading structure and table spans were read with the
shipped `_ATX`, `_NUMBERED`, `_TABLE_ROW` and `_GRID_RULE` patterns from
`llm_ingestion_okf.propose`, imported rather than re-implemented, for the
same reason the reach instruments import them: a worksheet carrying its
own copy of the grammar would describe a second definition that can drift
from the shipped one without anything going red.
## Verification
- **Sample draw:** 12/12 documents match the published Arm E appendix order.
- **Entry counts per arm, all 12 positions:** cross-checked against the
entries column of `docs/2026-09-07-k3-arm-e.md` § Appendix (Arm B / Arm D /
Arm E). All 36 figures (12 documents x 3 arms) matched exactly, including
the four documents where Arm B wrote no plan at all ("1 concept").
- **Tracked-file content boundary:** this file was checked for the corpus
root directory name and any absolute filesystem path -> zero occurrences.
It names no document title, no corpus path, and no extracted text.
- **Worksheet content boundary:** the local-only worksheet was checked for
absolute paths and the corpus root directory name -> zero occurrences; it
names document titles, which is expected and permitted in a local-only
file, but carries no filesystem path into the corpus.
## What this is not
No arm is built, changed, or shipped by this worksheet. No threshold is set.
No rating is entered by this session -- every checkbox and free-text line in
the worksheet is blank. The worksheet's own notes quote three findings
already published in `docs/2026-09-07-k3-arm-e.md` (positions 5, 10, 11) as
context for the operator's judgement; they are not new findings.