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

@ -52,7 +52,7 @@ from portfolio_optimiser.validator import (
validate_proposal,
)
# Same fixture arithmetic as test_step5_refine_loadbearing: FV42-GSV-E1 codes 05.2 + 03.1 ->
# Same fixture arithmetic as test_step5_refine_loadbearing: KONTOR-IT-E1 codes 05.2 + 03.1 ->
# affected total 1_482_500 -> degenerate Monte Carlo P90 = 444_750. 800_000 parses (< affected
# total) but exceeds P90 -> rejected; 200_000 validates. Both proposals are built via proposal_for,
# so their quantity/unit_cost ARE the project's cost lines and the S4.0 baseline stage passes.
@ -73,7 +73,7 @@ def _fixture() -> tuple[Project, str, str, str, Rejection]:
flip key (the rejected claim value, which appears ONLY once the validator's reason is fed back),
and the rejection the validator itself produces for the bad proposal — computed with the SAME
validator the SUT uses, so the reason is byte-identical to the one the loop feeds back."""
project = load_reference_projects()[0] # FV42-GSV-E1
project = load_reference_projects()[0] # KONTOR-IT-E1
bad = proposal_for(project, _CODES, claimed_saving_nok=_BAD_CLAIM)
corrected = proposal_for(project, _CODES, claimed_saving_nok=_CORRECTED_CLAIM)
rej = validate_proposal(bad)
@ -140,7 +140,7 @@ async def test_run_result_carries_the_falsification_history(tmp_path: Path) -> N
"""RUN-LEVEL WIRING: what generation returns must survive to ``RunResult`` — otherwise the seam
exists but Step 5 is still invisible to the demo. RED if run.py drops ``refinements``.
Drives the ROAD path (a reference project, so the S4.0 baseline is always anchored) with the
Drives the REFERENCE path (a reference project, so the S4.0 baseline is always anchored) with the
same content-keyed proposer the simulation uses."""
project, bad_json, corrected_json, flip_key, _rej = _fixture()