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

@ -0,0 +1,4 @@
name: driftskrav-2027
bundle_id: eksempel-driftskrav-2027
name: prosesskatalog-2027
bundle_id: eksempel-prosesskatalog-2027

View file

@ -0,0 +1,25 @@
{
"project_id": "drift-og-avtale-2027",
"items": {
"DOA-KJOL-01": {
"quantity": 24600.0,
"unit_cost": 285.0
},
"DOA-RACK-01": {
"quantity": 18400.0,
"unit_cost": 210.0
},
"DOA-MILJO-01": {
"quantity": 1.0,
"unit_cost": 5900000.0
},
"DOA-LISENS-01": {
"quantity": 4100.0,
"unit_cost": 640.0
},
"DOA-KABEL-01": {
"quantity": 2050.0,
"unit_cost": 1380.0
}
}
}

View file

@ -0,0 +1,7 @@
# Prosjektdokumenter
TOM med vilje. Scenarioet er MS Office + PDF, men ingen av dem kan mates
inn her: `--docs-dir`-omveien er fraradet (P13 - den omgar stigen `list_bundles -> read_bundle
-> read_dir -> read_file` og de to gatene, §4.1a-dimensjonen og verdict-laget). Veien et ekte
prosjektdokument skal ta er gjennom okf-ingest inn i en kunnskapsbase, altsa en base til - ikke
en katalog ved siden av. Se `docs/invarianter.md`.

View file

@ -0,0 +1,68 @@
{
"project_id": "drift-og-avtale-2027",
"must_cite": [
{
"approach_id": "a1-frikjoling",
"rationale": "Kjølingen er prosjektert som mekanisk kjøling hele året. Et riktig svar må gjengi hva D200 krever av frikjøling før mekanisk kjøling kan reduseres.",
"concepts": [
{
"path": "krav/D200/id-32af2111-39dc-5b04-b999-831c28098d24.md",
"title": "Krav 4.4—1 Frikjøling",
"ref": "Krav 4.4—1"
},
{
"path": "krav/D200/id-5240880d-7d1d-5628-b5f8-b8ea6634da47.md",
"title": "Krav 4.4—2 Frikjøling",
"ref": "Krav 4.4—2"
}
]
},
{
"approach_id": "a2-gjenbruk-rackskap",
"rationale": "Rackskapene er prosjektert nye. Et riktig svar må gjengi hva D200 krever av rackskap før gjenbruk av de eksisterende kan vurderes.",
"concepts": [
{
"path": "krav/D200/id-bd656331-8ef1-5f08-9579-3bbd120dcb5d.md",
"title": "Krav 6.4—1 Rackskap",
"ref": "Krav 6.4—1"
},
{
"path": "krav/D200/id-939d91ec-54a7-590a-bd28-0866ee0af1fc.md",
"title": "Krav 6.4—3 Rackskap",
"ref": "Krav 6.4—3"
}
]
},
{
"approach_id": "a3-driftsmiljo-omfang",
"rationale": "Det midlertidige driftsmiljøet er priset som en frittstående etablering. Et riktig svar må gjengi hva Prosesskatalogen P900 legger i etablering og i drift av midlertidig driftsmiljø, slik at et delt omfang kan beskrives uten at noe faller mellom to prosesser.",
"concepts": [
{
"path": "P900/12-11/_1_id-66990bc0-cf3f-5384-b73f-90ae8620de29.md",
"title": "Etablering av midlertidig driftsmiljø",
"ref": "12.11"
},
{
"path": "P900/12-12/_1_id-c79e8270-f1dd-5aac-99ec-38733e3f6e5b.md",
"title": "Drift av midlertidig driftsmiljø",
"ref": "12.12"
}
]
}
],
"honesty": "Alt i dette settet er KONSTRUERT: Eksempelvirksomheten, driftssenteret, brukertallet og alle fem kostlinjene (DOA-KJOL-01, DOA-RACK-01, DOA-MILJO-01, DOA-LISENS-01, DOA-KABEL-01) er oppdiktet, og beløpene er satte størrelsesordener. Også kunnskapsbasene er oppdiktet: begge er generert av examples/syntetiske-kunnskapsbaser/generate.py. Kravene og prosessene i must_cite er lest ordrett ut av basenes egen frontmatter (driftskrav-2027 for a1/a2, prosesskatalog-2027 for a3). Verken D200 eller P900 bærer priser, så kodene finnes ikke i noen av basene. Dette settet spenner TO baser: a1/a2 rutes mot driftskrav-2027 og a3/a4 mot prosesskatalog-2027, og det er hele grunnen til at settet finnes -- det måler at ÉN kommisjon kan kjøres over flere kunnskapsbaser. Den fjerde tilnærmingen a4-indeksregulering og dens kostkode DOA-INDEKS-01 er også KONSTRUERT, og med vilje: den er falsifiseringsarmen, en kostlinje INGEN av de to basene bærer grunnlaget for. 'enhetspris' er IKKE brukt som anker fordi prosesskatalog-2027 bærer ordet i 57 av sine 301 konsepter -- et anker som holder for et sett med én base, holder ikke nødvendigvis for et sett med to. Settets cost-baseline.json (5 linjer) er prosjektets prisskjema, og SAMME fil gjelder begge basene i multi-base-passet (ett prosjekt, ett prisskjema). Mengdene og enhetsprisene er OPPDIKTEDE størrelsesordener. a4s DOA-INDEKS-01 har ingen linje.",
"must_refuse": [
{
"approach_id": "a4-indeksregulering",
"anchors": [
"indeksregulering",
"konsumprisindeks",
"markedspris",
"timepris",
"kalkyle",
"prisstigning"
],
"rationale": "D200 beskriver driftskrav og P900 beskriver hva en prosess omfatter -- ingen av dem regulerer priser. Verken indeksregulering, konsumprisindeks, markedspris, timepris, kalkyle eller prisstigning finnes i noen av de to basene. Spørsmålene denne tilnærmingen står for: Hvilken indeks skal avtalesummen reguleres etter? | Hva er timeprisen for driftspersonell i 2027? | Hvilken prisstigning er lagt til grunn i kalkylen?"
}
]
}

View file

@ -0,0 +1,46 @@
{
"objective": "Kutt kostnad i moderniseringen av Eksempelvirksomhetens driftssenter (2 100 brukere) uten å bryte et eneste krav i driftskravene D200 eller å beskrive det midlertidige driftsmiljøet annerledes enn Prosesskatalogen P900 gjør.",
"success_criteria": "Minst én tilnærming validerer, og hver validerte tilnærming peker på kravet eller prosessen i SIN EGEN base som faktisk binder den — driftskravene i D200, driftsmiljøet i P900.",
"approaches": [
{
"id": "a1-frikjoling",
"label": "Frikjøling i stedet for mekanisk kjøling store deler av året",
"description": "Kjølingen er prosjektert som mekanisk kjøling hele året. Vi vil vite hva D200 faktisk krever av frikjøling.",
"affected_codes": [
"DOA-KJOL-01"
],
"claimed_saving_nok": 2100000.0,
"bundle_id": "eksempel-driftskrav-2027"
},
{
"id": "a2-gjenbruk-rackskap",
"label": "Gjenbruk av eksisterende rackskap i stedet for nye",
"description": "Rackskapene er prosjektert nye. Spørsmålet er hvilke krav D200 stiller til rackskap, og om de eksisterende kan tilfredsstille dem.",
"affected_codes": [
"DOA-RACK-01"
],
"claimed_saving_nok": 1350000.0,
"bundle_id": "eksempel-driftskrav-2027"
},
{
"id": "a3-driftsmiljo-omfang",
"label": "Redusert omfang av midlertidig driftsmiljø: felles miljø med en annen flytting",
"description": "Det midlertidige driftsmiljøet er priset som en frittstående etablering. Vi vil vite hva Prosesskatalogen P900 legger i etablering og drift av midlertidig driftsmiljø, slik at omfanget kan deles uten at noe faller mellom to prosesser.",
"affected_codes": [
"DOA-MILJO-01"
],
"claimed_saving_nok": 1750000.0,
"bundle_id": "eksempel-prosesskatalog-2027"
},
{
"id": "a4-indeksregulering",
"label": "Lavere indeksregulering av avtalesummen",
"description": "Vi vil kutte ved å legge en lavere indeksregulering og en lavere markedspris til grunn for avtalesummen.",
"affected_codes": [
"DOA-INDEKS-01"
],
"claimed_saving_nok": 900000.0,
"bundle_id": "eksempel-prosesskatalog-2027"
}
]
}