refactor(examples): replace sector-specific example material with generic, fictitious examples

The context sets, the packaged knowledge bases and the example bundles are
replaced by one fictitious example set about IT operations in an invented
organisation: three context sets (serverrom-2027, driftsavtale-2027 and the
two-base drift-og-avtale-2027), two synthetic knowledge bases under
src/portfolio_optimiser/data/kunnskapsbaser and two example bundles under
src/portfolio_optimiser/data/bundles. Numbers, codes and structural values in
tests and fixtures are kept; names, ids and wording change. Dated measurement
documents that only recorded runs on the replaced material are deleted.

Gate figures measured on the new set are not comparable with earlier ones.
The exclusion gate from the previous commit is green: 0 tracked files hit
outside the shared/ subtree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-23 15:04:21 +02:00
commit 37547fe292
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
1147 changed files with 24138 additions and 9503 deletions

View file

@ -21,7 +21,8 @@ Arms, each with a named detach point:
* **(a) the null offer is stated.** A delivered text with no identifier of any measured form and no
baseline reports ``identifiers=0, cost_lines=0``. This is the K2 CONTROL — without it a green
known positive proves nothing.
* **(b) the positive offer is stated.** N100's delivered input carries the BINDING known positive
* **(b) the positive offer is stated.** A requirements base's delivered input carries the BINDING
known positive
``Krav 3.3.1—13`` (P7 premiss (vii): it stands in 6 of 6 prompts, EM-DASH U+2014), and the offer
is positive there. Paired with a control that the search CAN find the string at all.
* **(c) the offer is measured on the SAME text the gate will see.** ``grounding_offer`` composes
@ -42,11 +43,11 @@ only thing a mutation table is for.
The fixtures are P7's own tracked generation prompts. Tracked test data on purpose (``scratchpad/``
is absent from ``git archive HEAD``) — and REUSED rather than extended with the delivered cuts,
because those cuts are 10 kB and 96 kB of a real Norwegian tender and a public road standard, and
because those cuts were 10 kB and 96 kB of a real Norwegian tender and a published standard, and
committing corpus text into a repo published on ``open/`` is a publication decision that belongs to
the operator, not to this order. The 8-distinct / 435-distinct figures for the delivered cut and the
full grounding are MEASURED and reported in ``docs/2026-09-09-p8-forankringstilbudet.md``; what a
test asserts here is the property, on text this repo already ships.
full grounding were MEASURED at the time (the ledger is ``docs/invarianter.md``); what a test
asserts here is the property, on text this repo already ships.
"""
from __future__ import annotations
@ -71,7 +72,8 @@ KNOWN_POSITIVE = "Krav 3.3.1—13"
#: The base with a ``cost-baseline.json`` (one line) and the one without — the pair that makes the
#: renderer's omission arm reachable rather than asserted.
ANCHORED = SHARED / "veglys-fv-soer"
BUNDLES = Path(__file__).resolve().parents[1] / "src" / "portfolio_optimiser" / "data" / "bundles"
ANCHORED = BUNDLES / "klientpark-energi"
UNANCHORED = SHARED / "bygg-energi-mikro"
_UNANCHORED_PID = "BYGG-KONTOR-NORD"
_VERDICT_INPUT = {"decision": "approved", "rationale": "expert reviewed (sim)"}
@ -138,11 +140,11 @@ def test_the_known_positive_input_reports_a_positive_offer() -> None:
"""LOAD-BEARING (b) — the BINDING known positive. Paired with the control that the string is
actually there: a report that finds nothing because it searched for nothing would otherwise
pass (a) and look measured."""
text = _prompt("p4-n100-generation-prompt.txt")
text = _prompt("p4-driftskrav-generation-prompt.txt")
assert KNOWN_POSITIVE in text, "the fixture no longer carries the known positive"
offer = grounding_offer(_project(), None, Grounding.of(text))
assert offer.identifiers > 0, offer
assert offer.cost_lines == 0, "a road standard carries no cost lines (F4's own finding)"
assert offer.cost_lines == 0, "a requirements base carries no cost lines (F4's own finding)"
def test_a_bare_number_is_not_counted_as_an_offer() -> None:
@ -151,8 +153,8 @@ def test_a_bare_number_is_not_counted_as_an_offer() -> None:
measurement inert — the repo's cardinal class, a gate that can only come out green.
**NARROWED in P19/B1, and the narrowing is a measured honesty limit rather than a weakening.**
The list used to carry ``42.5`` as well. R761's requirement numbers — all six ``ref`` values in
``contexts/kontrakt-sorasen-2027/fasit.json`` — are ``12.1`` / ``52.11`` / ``22.1``, which is
The list used to carry ``42.5`` as well. A process catalogue's numbers — all six ``ref`` values
in ``contexts/driftsavtale-2027/fasit.json`` — are ``12.1`` / ``52.11`` / ``22.1``, which is
the SAME typography as a decimal. There is no rule that separates them, so the form counts
both; the arm below states that in the open instead of leaving it in the docstring. What this
arm still refuses is the class the K2 number was measured on: bare INTEGERS."""
@ -161,9 +163,10 @@ def test_a_bare_number_is_not_counted_as_an_offer() -> None:
def test_a_dotted_number_is_counted_and_that_is_an_honesty_limit() -> None:
"""P19/B1: a decimal and an R761 process number are typographically the SAME token.
"""P19/B1: a decimal and a catalogue's process number are typographically the SAME token.
Counted, therefore — which is the direction that keeps r761 measurable (its whole offer was 3
Counted, therefore — which is the direction that keeps a process catalogue measurable (the
one measured then had a whole offer of 3
identifiers over 6.5 MB before this form) at the price of a decimal in prose being counted as
one. Stated here rather than hidden: for the REPORT it inflates the count, and for P19/B3's
gate it can turn the guard on in a base that carries decimals and no real identifiers — where
@ -257,7 +260,7 @@ async def test_an_anchored_run_reports_its_cost_lines() -> None:
"""LOAD-BEARING (d), the CONTROL that ``cost_lines`` is not a constant zero: the anchored base
ships exactly one line, and the run reports it."""
report = await run_project(
"VEGLYS-FV-SOER",
"KLIENTPARK-ENERGI",
"local",
docs_dir=str(ANCHORED),
bundle_dir=str(ANCHORED),
@ -321,7 +324,7 @@ def test_the_cli_says_nothing_when_the_run_can_anchor(capsys) -> None:
all. Without it, a notice that always fired would pass the arm above."""
rc = run_mod.main(
[
"VEGLYS-FV-SOER",
"KLIENTPARK-ENERGI",
"--docs-dir",
str(ANCHORED),
"--bundle-dir",