docs: general wording for the example-base document counts

Replace the exact document counts of earlier example bases (and the
per-base counts in the sources-format note) with general wording or
N-of-N in prose, comments and docstrings. Percentages and numerators
stay; no constant, assertion or test data changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-23 17:48:44 +02:00
commit 6b1046bc23
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
16 changed files with 56 additions and 56 deletions

View file

@ -319,7 +319,7 @@ def _citations_of(payload: Mapping[str, Any]) -> list[dict[str, Any]]:
def _citation_lines(citations: Sequence[Mapping[str, Any]], *, prefix: str) -> list[str]:
"""One quote with the COUNT of places it stands for, or nothing when there is no quote.
The count is part of the citation: a run that cited 446 places and one that cited a single
The count is part of the citation: a run that cited hundreds of places and one that cited a single
place both show one quote here, and a reader who cannot tell them apart cannot tell a
grounded proposal from a decorated one."""
if not citations:

View file

@ -309,10 +309,10 @@ def decode_block_mappings(
applies to the flow carrier. Two grammars would be two answers to one question, and a delivered
base would read differently depending on which spelling its producer chose. The colon-SPACE part
is load-bearing rather than stylistic: every delivered ``resource`` is a URL, so a reader
splitting on the FIRST colon would truncate all 4605 of them at ``https``.
splitting on the FIRST colon would truncate every one of them at ``https``.
Measured 2026-09-12: all four knowledge bases delivered at the time wrote ``sources`` in this
form and none in flow form (446/446, 1133/1133, 270/270 and 2756/2756). Reading it is not a
form and none in flow form (every concept file of every base). Reading it is not a
licence to WRITE it — ``write_concept_file``/``verified_field`` still refuse exactly what
``decode_flow_value`` refuses, so the emission rule and the round-trip gate are untouched.

View file

@ -17,8 +17,8 @@ and the set's own ``mandate.json`` / ``fasit.json`` / ``bundle.txt``.
**THE ORDER'S (a) WAS VACUOUS AS WRITTEN, AND THE DEVIATION IS MEASURED, NOT CHOSEN.** The order
defines grounded as "a ``must_cite`` path was OPENED *or* CITED". But on the S2c navigation path
``run_project`` stamps ``citations = bundle_citations(bundle)``, which is one citation PER CONTEXT
FILE - the whole corpus. Measured on a requirements base during development: 446 context files,
446 citations, and **6 of 6 fasit paths already "cited" before a single model call**. A judge
FILE - the whole corpus. Measured on a requirements base during development: a few hundred context files,
as many citations, and **6 of 6 fasit paths already "cited" before a single model call**. A judge
honouring that literally would be a gate that can only be green - the repo's own vacuous-gate
class, inside the gate built to catch it. So a CITATION grounds an approach only when the citation
list is NARROWER than the base (a declared pre-pass cut, where the stamp really does name what was
@ -27,7 +27,7 @@ one fired stays readable.
**(b') was checked for the same vacuity and is CLEAN for the requirement bases, so the order
stands.** ``bundle_citations`` snippets are concept BODIES while ``ref``/``title`` live in
FRONTMATTER: measured 0 of 446 bodies of that base contain its ``Krav 4.1.2-1``.
FRONTMATTER: measured, not one body of that base contains its ``Krav 4.1.2-1``.
``named_in_measure`` / ``named_in_snippet`` are still reported apart, because the measure is the
model's own prose and a snippet is the base's.
@ -476,8 +476,8 @@ def score_context_set(
named_in_measure = any(m in measure for m in marks)
# P18/C2 (PM decision, P16 § 6.2): the snippet arm counts ONLY under a narrowed citation
# scope, exactly as (a) does. A whole-base citation list is stamped by ``bundle_citations``
# before a single model call — measured on a requirements base, 446 context files, 446
# citations, 6 of 6 fasit paths "cited" for free — so a mark found in THOSE snippets is
# before a single model call — measured on a requirements base, a few hundred context files,
# as many citations, 6 of 6 fasit paths "cited" for free — so a mark found in THOSE snippets is
# evidence about the base's contents, not about this run. Measured on a process catalogue:
# ``12.1`` appears in whole-base snippets and gave this row ``named`` without the model
# having said anything.

View file

@ -296,8 +296,8 @@ _GROUNDING_MIN_LENGTH: Final = 3
#:
#: MEASURED over the four delivered corpora, counting document frequency for every code-shaped
#: token (``generate._IDENTIFIER_FORMS``): 1 692 distinct tokens, and NOT ONE reaches 5 % of its
#: base's documents. The highest anywhere is 6 of 446 (1.35 %); the highest that a fasit or mandate
#: actually names is 3 of 446 (0.67 %). P16's fabricated ``P900`` is 2 756 of 2 756 — 100 %.
#: base's documents. The highest anywhere is 1.35 % (6 documents); the highest that a fasit or mandate
#: actually names is 0.67 % (3 documents). P16's fabricated ``P900`` is in every one — 100 %.
#: 5 % therefore sits 3.7x above the highest real token measured and 20x below the defect.
_GROUNDING_MAX_DOCUMENT_SHARE: Final = 0.05
@ -348,7 +348,7 @@ IDENTIFIER_FORMS: Final = (
# its ``15.09`` prefix, and a date is not a requirement.
_FORM_PROCESS_NUMBER,
# ``65 LAGRINGSSYSTEMER`` — a process number and its heading, the form a price schedule's
# section rows carry (P18 § 2 measured it at 29 of 2 756 documents).
# section rows carry (P18 § 2 measured it at 1.05 % of the documents).
_FORM_PROCESS_HEADING,
)
@ -416,7 +416,7 @@ class Grounding:
"""The run's non-model-authored input, carried as the DOCUMENTS it is made of.
P7 carried it as ONE string, and P16 measured what that costs: ``P900`` — the base's own NAME,
which every one of its 2 756 concept documents carries — satisfied ``code in grounding`` and
which every one of its concept documents carries — satisfied ``code in grounding`` and
carried a fabricated 250 000 NOK line through the whole gate to ``validated``. Containment in a
concatenation cannot tell "this project has such a line" from "this word is in the letterhead".
@ -498,8 +498,8 @@ def _form_refusal(grounding: Grounding, code: str, anchored_codes: frozenset[str
"""Why ``code`` cannot be a cost code of THIS input, or ``None`` (P19/B3).
**The guard is what makes this a rule and not a preference.** MEASURED over P18's round 2: two
ordinary words from a standard's prose — each in 4 documents of its base (of 270 and of
1 133), words of the kind ``nødstrømsaggregat`` or ``redundant kjøling`` — passed the whole
ordinary words from a standard's prose — each in 4 documents of its base (of a few hundred
and of about a thousand), words of the kind ``nødstrømsaggregat`` or ``redundant kjøling`` — passed the whole
gate to ``validated`` as ``affected_item`` codes. Both are GROUNDED: they appear verbatim in the
input, which is all P7 asks. What they are not is an identifier of a cost line.
@ -537,7 +537,7 @@ def _reference_refusal(grounding: Grounding, code: str) -> str | None:
* ``10.4`` (a requirements base, serverrom-04, ``validated``) is declared NOWHERE in that
base's frontmatter. The base
declares ``seksjon: 10.4.1`` … ``10.4.4`` and ``req_number: Krav 10.4.3—2``; the bare ``10.4``
is a section PREFIX that occurs in 12 of 274 documents and is no document's own number;
is a section PREFIX that occurs in 12 of a few hundred documents and is no document's own number;
* ``1.10.4`` (the process catalogue, an across-bases run, ``validated``) is not one of the
catalogue's declared ``prosessnr`` or ``seksjon`` values. It occurs in ONE of the catalogue's
documents, as prose: a cross-reference to chapter 1.10.4 of a requirements standard.