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

@ -1,14 +1,14 @@
"""P4 pkt. 4 — the two honesty sentences the demo says out loud, and why one of them is DERIVED.
The plan pre-wrote two sentences for the stage. The first is the provenance claim about the cost
numbers, already live as ``_VEGLYS_PROVENANCE`` since the GO (P3): the baseline the validator's
stage 0 reconciles against was written by a domain team, not by the demo script.
numbers, already live as ``_KLIENTPARK_PROVENANCE`` since the GO (P3): the baseline the validator's
stage 0 reconciles against ships with the knowledge base, not with the demo script.
The second is the seed sentence, about where Run B's "previous verdicts" come from. **Its pre-written
wording is wrong against the delivered content and was corrected against measurement.** The plan said
"one of the TWO previous verdicts in Run B came with the example — the other is the one the demo
learned"; measured against the delivered VEGLYS bundle, Run B retrieves THREE: one seeded
(``verdict-veglys-fro.md``), and TWO the demo produced itself — one per time scale (the Step-8
learned"; measured against the delivered KLIENTPARK bundle, Run B retrieves THREE: one seeded
(``verdict-klientpark-fro.md``), and TWO the demo produced itself — one per time scale (the Step-8
promotion and the Step-7 inbox note). A sentence that says "two" would be a false claim made on
stage about a number printed one line above it.
@ -31,7 +31,7 @@ from pathlib import Path
from portfolio_optimiser.persona import load_persona_example
from portfolio_optimiser.simulation import (
_INBOX_MARKER,
_VEGLYS_PROVENANCE,
_KLIENTPARK_PROVENANCE,
_delivered_bundle_dir,
_verdict_origin_line,
)
@ -46,10 +46,10 @@ def _verdict(vid: str, rationale: str) -> Verdict:
return Verdict(
id=vid,
proposal_features=ProposalFeatures(
affected_codes=frozenset({"ENERGI-VEGLYS-EL"}),
measure_type="LED-utskifting",
affected_codes=frozenset({"ENERGI-KLIENTPARK-EL"}),
measure_type="PC-utskifting",
claimed_saving_nok=445500.0,
description="LED-utskifting",
description="PC-utskifting",
),
decision="approved",
rationale=rationale,
@ -96,12 +96,12 @@ def test_both_sentences_are_in_the_pinned_transcript() -> None:
fasit is byte-compared to a live run in ``test_golden_transcript_loadbearing``, so a sentence
that is in the file but no longer printed fails there, and a sentence dropped from BOTH fails
here. The provenance half needs this: the anchored-reserve test only rules the reserve's
sentence OUT, so emptying ``_VEGLYS_PROVENANCE`` would leave it green.
sentence OUT, so emptying ``_KLIENTPARK_PROVENANCE`` would leave it green.
"""
fasit = (Path(__file__).resolve().parent / "golden" / "demo-transcript.stdout").read_text(
encoding="utf-8"
)
assert _VEGLYS_PROVENANCE in fasit
assert _KLIENTPARK_PROVENANCE in fasit
assert "med kunnskapsbasen; de øvrige" in fasit