feat(consume): the door's link line is out of the default reading

`link_in_signal` defaults to `False` on all three entry points --
`searchable_text`, `concept_scores` and `build_payload` -- through one named
constant, `DEFAULT_LINK_IN_SIGNAL`. This carries out K3-23's recommendation
(alternative c), and its numbers are the whole warrant: of the newcomers the
door's `Enclosing section:` line ever added a question token to, 39 of 39
gained it from the bundle-absolute PATH and 0 of 39 from the link's title, and
every token the path contributed is a segment of the document's own directory
-- the saturation `shared_id_prefix` takes out of the id signal, back in
through the body.

A CONSTANT rather than three naked literals, chosen against the module: the
other eight defaults here are constants (`DEFAULT_PROFILE`, `DEFAULT_LIMIT`,
`DEFAULT_TIE_SHARED_RANK`, `DEFAULT_STEM_PREFIX`, `DEFAULT_TITLE_COVERED`,
`DEFAULT_SOURCE_QUOTA`, `DEFAULT_FOLLOW_PARENT`, `DEFAULT_K`) and this was the
one default spelled out three times. It also lets a test fall on the rule from
the module that owns it.

NO CLI flag is added and none is changed. `grep -n '"--.*link'` over `src/`
gives 0 hits before and after, and `consume.main` never passed the parameter,
so the CLI inherits the function default. A flag was considered and NOT added,
because no caller could be named that needs the older reading: the three call
sites outside `consume.py` (`skill.py:360`, `tools/okf_consume_measure.py:155`
and `:247`) all inherit it deliberately.

Measured before landing: 0 of 5 shipped bundles carry the door's line
(denominators 446, 1 133, 270, 2 756, 2 761 concept files) and 5 of 5 payloads
are byte-identical across the move. The consumer repository was read only and
its tree is unchanged, listing identical including mtimes.

The docstrings move with the code rather than after it. `concept_scores` said
this was "an INSTRUMENT, not a flag and not a default" and `build_payload` that
it "carries no CLI flag"; the first is now false and the second still true, and
each says so. `cli.DEFAULT_SHELL_PARENT` keeps its value and loses its reason:
the cost it cited -- delivered sets moving through that path -- is what this
commit removes, so the comment now states why it stays off NOW, which is N = 1
document and a consumption half nobody has judged. README and CLAUDE.md carry
the same sentence where they already describe the line, measured rather than
written on reflex: neither said anything about the ranking before.

One test changed with the code. The characterisation of what the LINE does
called `concept_scores` with no parameter, because the reading it characterises
used to be the default; it now names that reading. Same fixture, same number.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-12 18:56:53 +02:00
commit 38320cd509
6 changed files with 130 additions and 47 deletions

View file

@ -176,17 +176,25 @@ DEFAULT_CLOSE_SPAN_GAPS = True
#: naming the nearest ancestor that holds text (`propose._link_shells`) and,
#: since K3-21, one `Enclosing section:` link line in its body. NOT a
#: segmentation rule: it adds no boundary and copies no text, and the concept
#: count is unchanged. OFF, re-measured in K3-21 once `okf consume` read the
#: key -- the reason it was off before. On the one standard with shells hit@1,
#: hit@8 and hit@50 stay 6/6 at both k with the known-positive at rank 1, but
#: the link's bundle-absolute path repeats the document's directory in 675
#: bodies, and the delivered set moved on 2 of 8 questions at the default k
#: and 3 of 8 at k 50, newly delivered shells matching the question ONLY
#: through that path on 1 of 3, 4 of 7 and 6 of 23. That is the saturation
#: K3-20 took out of the id signal, re-entering through the body. It moves the
#: bytes of a bundle holding a heading-only section and of nothing else: 0 of
#: 453 K2 bodies are heading-only, and the five-document folder builds
#: byte-identical with it.
#: count is unchanged. It moves the bytes of a bundle holding a heading-only
#: section and of nothing else: 0 of 453 K2 bodies are heading-only, and the
#: five-document folder builds byte-identical with it.
#:
#: OFF -- and the reason it was off has been REMOVED rather than restated.
#: K3-21 measured hit@1/8/50 at 6/6 at both k with the known-positive at rank
#: 1, but the delivered SET moved, because the link's bundle-absolute path
#: repeats the document's own directory in 675 bodies -- the saturation K3-20
#: took out of the id signal, re-entering through the body. K3-25 made
#: `consume.DEFAULT_LINK_IN_SIGNAL` `False`, so that path is no longer scored,
#: and K3-23 measured what the acceptance then reads on the one standard with
#: shells: newcomers matching through the path 0, delivered sets moved 0 of 8
#: at both k, hit@k unchanged at 6/6.
#:
#: It stays OFF for what that measurement does NOT cover: **N = 1 document**.
#: Three of nothing is still one bundle from one publisher, the consumption
#: half is a judged reading nobody has run, and a build default is a promise to
#: every consumer and not to this one. Turning it on is its own decision with
#: its own denominator, and this line is not it.
DEFAULT_SHELL_PARENT = False
#: Round 9. Clause 1 asked whether a title ENDED in a number, which is a
#: question about the number rather than about the title: a drawing's dimension