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

@ -125,7 +125,7 @@ def seed_store() -> VerdictStore:
"scope_reduction",
180_000,
"approved",
"asphalt + base course trimmed within feasible range",
"licences + office network ports trimmed within feasible range",
),
(
"V02",
@ -133,7 +133,7 @@ def seed_store() -> VerdictStore:
"rate_renegotiation",
60_000,
"approved",
"renegotiated asphalt unit rate",
"renegotiated office-suite licence unit price",
),
(
"V03",
@ -141,7 +141,7 @@ def seed_store() -> VerdictStore:
"material_substitution",
120_000,
"rejected",
"granite kerb substitution unsafe",
"cheaper monitor model fails the ergonomics spec",
),
(
"V04",
@ -149,7 +149,7 @@ def seed_store() -> VerdictStore:
"scope_reduction",
240_000,
"approved",
"fewer LED masts on low-traffic stretch",
"fewer meeting-room screens in low-use rooms",
),
(
"V05",
@ -157,16 +157,16 @@ def seed_store() -> VerdictStore:
"scope_reduction",
350_000,
"rejected",
"soil replacement is load-bearing, cannot cut",
"user-data migration is mandatory, cannot cut",
),
("V06", {"21.2"}, "rate_renegotiation", 90_000, "approved", "blasting rate renegotiated"),
("V06", {"21.2"}, "rate_renegotiation", 90_000, "approved", "cabling rate renegotiated"),
(
"V07",
{"22.4"},
"material_substitution",
700_000,
"rejected",
"fiber shotcrete spec is mandated",
"access-switch port spec is mandated",
),
(
"V08",
@ -174,7 +174,7 @@ def seed_store() -> VerdictStore:
"scope_reduction",
150_000,
"approved",
"concrete repair area re-measured smaller",
"archive clean-up volume re-measured smaller",
),
(
"V09",
@ -182,7 +182,7 @@ def seed_store() -> VerdictStore:
"material_substitution",
130_000,
"approved",
"alternative membrane qualified",
"alternative backup storage class qualified",
),
(
"V10",
@ -190,7 +190,7 @@ def seed_store() -> VerdictStore:
"rate_renegotiation",
200_000,
"approved",
"combined paving rate discount",
"combined licence and network rate discount",
),
(
"V11",
@ -198,7 +198,7 @@ def seed_store() -> VerdictStore:
"scope_reduction",
95_000,
"rejected",
"rigging is fixed cost, no scope to cut",
"project management is fixed cost, no scope to cut",
),
(
"V12",
@ -206,7 +206,7 @@ def seed_store() -> VerdictStore:
"scope_reduction",
110_000,
"approved",
"drainage length reduced after survey",
"fibre run length reduced after survey",
),
]
return VerdictStore(