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:
parent
058dd25570
commit
37547fe292
1147 changed files with 24138 additions and 9503 deletions
|
|
@ -1,4 +0,0 @@
|
|||
name: n200-2024
|
||||
bundle_id: vegnormal-n200-2024
|
||||
name: r761-2025
|
||||
bundle_id: vegnormal-r761-2025
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
{
|
||||
"project_id": "dekke-og-kontrakt-lindaas-2027",
|
||||
"must_cite": [
|
||||
{
|
||||
"approach_id": "a1-tynnere-forsterkningslag",
|
||||
"rationale": "Overbygningen er prosjektert med full forsterkningslagstykkelse over hele strekningen. Et riktig svar må gjengi hva N200 krever av forsterkningslag før tykkelsen kan reduseres.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N200/id-13c94f7a-2d24-48a1-b258-db66cb2392d7.md",
|
||||
"title": "Krav 3.3.3—1 Forsterkningslag",
|
||||
"ref": "Krav 3.3.3—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N200/id-222bca41-dff8-4b54-fb28-88da74969c9c.md",
|
||||
"title": "Krav 4.6—1 Forsterkningslag",
|
||||
"ref": "Krav 4.6—1"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a2-filterlag-sprengstein",
|
||||
"rationale": "Filterlaget er prosjektert med innkjøpt sortert materiale. Et riktig svar må gjengi hva N200 krever av filterlag før stedlig sprengstein kan vurderes.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N200/id-6d7520d6-d224-4e49-f7ba-22863b49cf92.md",
|
||||
"title": "Krav 4.3—1 Filterlag",
|
||||
"ref": "Krav 4.3—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N200/id-4f1ff497-68a0-4953-c946-3bdf49e16516.md",
|
||||
"title": "Krav 4.3—5 Filterlag",
|
||||
"ref": "Krav 4.3—5"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a3-riggomfang",
|
||||
"rationale": "Riggen er priset som en frittstående etablering. Et riktig svar må gjengi hva R761 Prosesskoden legger i tilrigging og i drift av rigg, slik at et delt omfang kan beskrives uten at noe faller mellom to prosesser.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "R761/12-11/_1_id-377d3c43-eb37-4337-a476-0818a6a30490.md",
|
||||
"title": "Tilrigging",
|
||||
"ref": "12.11"
|
||||
},
|
||||
{
|
||||
"path": "R761/12-12/_1_id-0d8e750e-18b1-49b9-b838-f5c29f21ff29.md",
|
||||
"title": "Drift av rigg og midlertidige bygninger",
|
||||
"ref": "12.12"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"honesty": "Prosjektet fv. 218 Lindaas er KONSTRUERT av meg: vegnummer, lengde, AADT og alle fire kostlinjene (LIND-FORST-01, LIND-FILT-01, LIND-RIGG-01, LIND-INDEKS-01) er oppdiktet, og beloepene er satte stoerrelsesordener. Kravene og prosessene i must_cite er lest ordrett ut av basenes egen frontmatter (n200-2024 for a1/a2, r761-2025 for a3). Verken N200 eller R761 baerer priser, saa kodene finnes ikke i noen av basene. Dette er det FOERSTE settet som spenner TO baser: a1/a2 rutes mot n200-2024 og a3/a4 mot r761-2025, og det er hele grunnen til at settet finnes -- P17b maaler at EN kommisjon kan kjoeres over flere kunnskapsbaser. Den fjerde tilnaermingen a4-indeksregulering og dens kostkode LIND-INDEKS-01 er ogsaa KONSTRUERT, og med vilje: den er falsifiseringsarmen, en kostlinje INGEN av de to basene baerer grunnlaget for. MAALT 15.09: 'enhetspris' ble FORKASTET som anker fordi r761-2025 baerer ordet i 70 av 2 756 konsepter -- et anker som holder for ett sett med EN base holder ikke noedvendigvis for et sett med to. P21: settet har naa sin egen cost-baseline.json (5 linjer) — prosjektets prisskjema, og SAMME fil gjelder begge basene i multi-base-passet (ett prosjekt, ett prisskjema). Mengdene og enhetsprisene er OPPDIKTEDE stoerrelsesordener; verken N200 eller R761 baerer priser. a4s LIND-INDEKS-01 har ingen linje.",
|
||||
"must_refuse": [
|
||||
{
|
||||
"approach_id": "a4-indeksregulering",
|
||||
"anchors": [
|
||||
"indeksregulering",
|
||||
"konsumprisindeks",
|
||||
"markedspris",
|
||||
"tonnpris",
|
||||
"kalkyle",
|
||||
"prisstigning"
|
||||
],
|
||||
"rationale": "N200 beskriver materialkrav og R761 Prosesskoden beskriver hva en prosess omfatter -- ingen av dem regulerer priser. Verken indeksregulering, konsumprisindeks, markedspris, tonnpris, kalkyle eller prisstigning finnes i noen av de to basene. Spoersmaalene denne approachen staar for: Hvilken indeks skal kontraktssummen reguleres etter? | Hva er markedsprisen paa sprengstein i dette omraadet? | Hvilken prisstigning er lagt til grunn i kalkylen?"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"objective": "Kutt kostnad i vegprosjektet fv. 218 Lindås (4,1 km, ÅDT 2 100) uten å bryte et eneste materialkrav i N200 eller å beskrive riggen annerledes enn R761 Prosesskoden 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 — materialkravene i N200, riggomfanget i R761.",
|
||||
"approaches": [
|
||||
{
|
||||
"id": "a1-tynnere-forsterkningslag",
|
||||
"label": "Tynnere forsterkningslag på strekningen med fast fjell",
|
||||
"description": "Overbygningen er prosjektert med full forsterkningslagstykkelse over hele strekningen, også der undergrunnen er fast fjell. Vi vil vite hva N200 faktisk krever av forsterkningslag.",
|
||||
"affected_codes": [
|
||||
"LIND-FORST-01"
|
||||
],
|
||||
"claimed_saving_nok": 2100000.0,
|
||||
"bundle_id": "vegnormal-n200-2024"
|
||||
},
|
||||
{
|
||||
"id": "a2-filterlag-sprengstein",
|
||||
"label": "Filterlag av stedlig sprengstein i stedet for innkjøpt materiale",
|
||||
"description": "Filterlaget er prosjektert med innkjøpt sortert materiale. Spørsmålet er hvilke krav N200 stiller til filterlag, og om stedlig sprengstein kan tilfredsstille dem.",
|
||||
"affected_codes": [
|
||||
"LIND-FILT-01"
|
||||
],
|
||||
"claimed_saving_nok": 1350000.0,
|
||||
"bundle_id": "vegnormal-n200-2024"
|
||||
},
|
||||
{
|
||||
"id": "a3-riggomfang",
|
||||
"label": "Redusert riggomfang: felles rigg med naboentreprisen",
|
||||
"description": "Riggen er priset som en frittstående etablering. Vi vil vite hva R761 Prosesskoden legger i tilrigging og drift av rigg, slik at omfanget kan deles med naboentreprisen uten at noe faller mellom to prosesser.",
|
||||
"affected_codes": [
|
||||
"LIND-RIGG-01"
|
||||
],
|
||||
"claimed_saving_nok": 1750000.0,
|
||||
"bundle_id": "vegnormal-r761-2025"
|
||||
},
|
||||
{
|
||||
"id": "a4-indeksregulering",
|
||||
"label": "Lavere indeksregulering av kontraktssummen",
|
||||
"description": "Vi vil kutte ved å legge en lavere indeksregulering og en lavere markedspris til grunn for kontraktssummen.",
|
||||
"affected_codes": [
|
||||
"LIND-INDEKS-01"
|
||||
],
|
||||
"claimed_saving_nok": 900000.0,
|
||||
"bundle_id": "vegnormal-r761-2025"
|
||||
}
|
||||
]
|
||||
}
|
||||
4
contexts/drift-og-avtale-2027/bundle.txt
Normal file
4
contexts/drift-og-avtale-2027/bundle.txt
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
name: driftskrav-2027
|
||||
bundle_id: eksempel-driftskrav-2027
|
||||
name: prosesskatalog-2027
|
||||
bundle_id: eksempel-prosesskatalog-2027
|
||||
|
|
@ -1,23 +1,23 @@
|
|||
{
|
||||
"project_id": "dekke-og-kontrakt-lindaas-2027",
|
||||
"project_id": "drift-og-avtale-2027",
|
||||
"items": {
|
||||
"LIND-FORST-01": {
|
||||
"DOA-KJOL-01": {
|
||||
"quantity": 24600.0,
|
||||
"unit_cost": 285.0
|
||||
},
|
||||
"LIND-FILT-01": {
|
||||
"DOA-RACK-01": {
|
||||
"quantity": 18400.0,
|
||||
"unit_cost": 210.0
|
||||
},
|
||||
"LIND-RIGG-01": {
|
||||
"DOA-MILJO-01": {
|
||||
"quantity": 1.0,
|
||||
"unit_cost": 5900000.0
|
||||
},
|
||||
"LIND-ASF-01": {
|
||||
"DOA-LISENS-01": {
|
||||
"quantity": 4100.0,
|
||||
"unit_cost": 640.0
|
||||
},
|
||||
"LIND-GRFT-01": {
|
||||
"DOA-KABEL-01": {
|
||||
"quantity": 2050.0,
|
||||
"unit_cost": 1380.0
|
||||
}
|
||||
|
|
@ -4,4 +4,4 @@ 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/2026-09-12-p14-kontekstsett.md` § 1.4.
|
||||
en katalog ved siden av. Se `docs/invarianter.md`.
|
||||
68
contexts/drift-og-avtale-2027/fasit.json
Normal file
68
contexts/drift-og-avtale-2027/fasit.json
Normal 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?"
|
||||
}
|
||||
]
|
||||
}
|
||||
46
contexts/drift-og-avtale-2027/mandate.json
Normal file
46
contexts/drift-og-avtale-2027/mandate.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
2
contexts/driftsavtale-2027/bundle.txt
Normal file
2
contexts/driftsavtale-2027/bundle.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
name: prosesskatalog-2027
|
||||
bundle_id: eksempel-prosesskatalog-2027
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"project_id": "kontrakt-sorasen-2027",
|
||||
"project_id": "driftsavtale-2027",
|
||||
"items": {
|
||||
"12.1": {
|
||||
"quantity": 1.0,
|
||||
|
|
@ -4,4 +4,4 @@ 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/2026-09-12-p14-kontekstsett.md` § 1.4.
|
||||
en katalog ved siden av. Se `docs/invarianter.md`.
|
||||
70
contexts/driftsavtale-2027/fasit.json
Normal file
70
contexts/driftsavtale-2027/fasit.json
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
"project_id": "driftsavtale-2027",
|
||||
"bundle": "prosesskatalog-2027",
|
||||
"bundle_id": "eksempel-prosesskatalog-2027",
|
||||
"must_cite": [
|
||||
{
|
||||
"approach_id": "a1-driftsmiljo-omfang",
|
||||
"rationale": "Midlertidig driftsmiljø er priset som rund sum over 22 måneder. Vi vil vite hva Prosesskatalogen legger i prosessen før vi kan kutte.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "P900/12-1/_1_id-ce714504-40a5-514d-b2b6-c09e3ca5d30a.md",
|
||||
"title": "Midlertidig driftsmiljø",
|
||||
"ref": "12.1"
|
||||
},
|
||||
{
|
||||
"path": "P900/12-12/_1_id-c79e8270-f1dd-5aac-99ec-38733e3f6e5b.md",
|
||||
"title": "Drift av midlertidig driftsmiljø",
|
||||
"ref": "12.12"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a2-gjenbruk-maskinvare",
|
||||
"rationale": "Avtalen har både uttak av maskinvare fra det gamle miljøet og levering av nye diskhyller. Spørsmålet er hva Prosesskatalogen krever av lagringslaget.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "P900/22-1/_2_id-54d8a548-5073-589e-88f7-f012675f4348.md",
|
||||
"title": "Uttak av maskinvare fra eksisterende miljø",
|
||||
"ref": "22.1"
|
||||
},
|
||||
{
|
||||
"path": "P900/52-1/_5_id-3d667f4a-deb2-537f-8ff1-7060f172918e.md",
|
||||
"title": "Lagringslag",
|
||||
"ref": "52.1"
|
||||
},
|
||||
{
|
||||
"path": "P900/52-11/_5_id-19db3908-344d-588f-ad53-81420862c48c.md",
|
||||
"title": "Lagringslag av nye diskhyller",
|
||||
"ref": "52.11"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a3-plattform-standardisering",
|
||||
"rationale": "Serverne er beskrevet utskiftet. Vi vil vite hva prosessen for standardisering av plattform omfatter.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "P900/51-1/_5_id-7077645c-6f89-5b54-a4fa-69a565222707.md",
|
||||
"title": "Standardisering av plattform",
|
||||
"ref": "51.1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"honesty": "Alt i dette settet er KONSTRUERT: Eksempelvirksomheten, datasenterflyttingen, overgangsperioden og alle beløpene er oppdiktede størrelsesordener. Også kunnskapsbasen er oppdiktet: prosesskatalog-2027 er generert av examples/syntetiske-kunnskapsbaser/generate.py. Til forskjell fra de to andre settene er affected_codes her prosessnumre fra katalogen selv (12.1, 12.12, 22.1, 51.1, 52.11), lest ut av basens egen prosessnr-frontmatter — men P900 er en beskrivelseskatalog uten priser, så kodene står i basen mens beløpene ikke gjør det. must_cite er lest ordrett ut av basen. Den fjerde tilnærmingen a4-indeksregulering og dens kostkode INDEKS-01 er også KONSTRUERT, og med vilje: den er falsifiseringsarmen, en kostlinje basen ikke bærer grunnlaget for. Settets cost-baseline.json (5 linjer) er avtalens prisskjema, kodet med de samme prosessnumrene, slik en avtale som gjøres opp prosess for prosess prises. Mengdene og enhetsprisene er OPPDIKTEDE størrelsesordener; P900 bærer ingen priser, så ingen av tallene er lest noe sted. a4s INDEKS-01 har ingen linje.",
|
||||
"must_refuse": [
|
||||
{
|
||||
"approach_id": "a4-indeksregulering",
|
||||
"anchors": [
|
||||
"indeksregulering",
|
||||
"kalkyle",
|
||||
"kostnadsestimat",
|
||||
"markedspris",
|
||||
"nåverdi",
|
||||
"prisstigning"
|
||||
],
|
||||
"rationale": "P900 er en prosesskatalog: den beskriver hva som skal leveres og gjøres opp, ikke hva det koster. Kostnadsestimat, markedspris, prisstigning, indeksregulering og nåverdi finnes ikke i basen. Spørsmålene denne tilnærmingen står for: Hvilket kostnadsestimat ligger til grunn for posten for midlertidig driftsmiljø? | Hva er markedsprisen på nye diskhyller i 2027? | Hvordan skal avtalesummen indeksreguleres gjennom overgangsperioden?"
|
||||
}
|
||||
]
|
||||
}
|
||||
48
contexts/driftsavtale-2027/mandate.json
Normal file
48
contexts/driftsavtale-2027/mandate.json
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"objective": "Kutt kostnad i driftsavtalen for flyttingen av Eksempelvirksomhetens datasenter (22 måneders overgangsperiode) ved å endre hvordan arbeidet beskrives etter Prosesskatalogen, uten å endre hva som leveres.",
|
||||
"success_criteria": "Minst én tilnærming validerer, og hver validerte tilnærming peker på de prosessene i P900 som faktisk styrer leveransen og oppgjøret for den posten.",
|
||||
"approaches": [
|
||||
{
|
||||
"id": "a1-driftsmiljo-omfang",
|
||||
"label": "Redusert omfang av midlertidig driftsmiljø og kortere overgangsperiode",
|
||||
"description": "Midlertidig driftsmiljø er priset som rund sum over 22 måneder. Vi vil vite hva Prosesskatalogen legger i prosessen før vi kan kutte.",
|
||||
"affected_codes": [
|
||||
"12.1",
|
||||
"12.12"
|
||||
],
|
||||
"claimed_saving_nok": 4200000.0,
|
||||
"bundle_id": "eksempel-prosesskatalog-2027"
|
||||
},
|
||||
{
|
||||
"id": "a2-gjenbruk-maskinvare",
|
||||
"label": "Gjenbruk av uttatt maskinvare som lagringslag i stedet for nye diskhyller",
|
||||
"description": "Avtalen har både uttak av maskinvare fra det gamle miljøet og levering av nye diskhyller. Spørsmålet er hva Prosesskatalogen krever av lagringslaget.",
|
||||
"affected_codes": [
|
||||
"22.1",
|
||||
"52.11"
|
||||
],
|
||||
"claimed_saving_nok": 6800000.0,
|
||||
"bundle_id": "eksempel-prosesskatalog-2027"
|
||||
},
|
||||
{
|
||||
"id": "a3-plattform-standardisering",
|
||||
"label": "Standardisering av plattform i stedet for utskifting av servere",
|
||||
"description": "Serverne er beskrevet utskiftet. Vi vil vite hva prosessen for standardisering av plattform omfatter.",
|
||||
"affected_codes": [
|
||||
"51.1"
|
||||
],
|
||||
"claimed_saving_nok": 1300000.0,
|
||||
"bundle_id": "eksempel-prosesskatalog-2027"
|
||||
},
|
||||
{
|
||||
"id": "a4-indeksregulering",
|
||||
"label": "Kutt ved gunstigere indeksregulering av avtalesummen",
|
||||
"description": "Vi vil kutte ved å legge en gunstigere indeksregulering til grunn for avtalesummen.",
|
||||
"affected_codes": [
|
||||
"INDEKS-01"
|
||||
],
|
||||
"claimed_saving_nok": 2500000.0,
|
||||
"bundle_id": "eksempel-prosesskatalog-2027"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
name: n200-2024
|
||||
bundle_id: vegnormal-n200-2024
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"project_id": "fv412-dekkefornyelse-2027",
|
||||
"items": {
|
||||
"DEKKE-ASF-01": {
|
||||
"quantity": 10800.0,
|
||||
"unit_cost": 1150.0
|
||||
},
|
||||
"DEKKE-BAER-01": {
|
||||
"quantity": 6300.0,
|
||||
"unit_cost": 980.0
|
||||
},
|
||||
"DEKKE-FROST-01": {
|
||||
"quantity": 37800.0,
|
||||
"unit_cost": 215.0
|
||||
},
|
||||
"DEKKE-GRV-01": {
|
||||
"quantity": 12600.0,
|
||||
"unit_cost": 145.0
|
||||
},
|
||||
"DEKKE-SKILT-01": {
|
||||
"quantity": 1.0,
|
||||
"unit_cost": 1450000.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
"project_id": "fv412-dekkefornyelse-2027",
|
||||
"bundle": "n200-2024",
|
||||
"bundle_id": "vegnormal-n200-2024",
|
||||
"must_cite": [
|
||||
{
|
||||
"approach_id": "a1-resirkulert-asfalt",
|
||||
"rationale": "Beskrivelsen forutsetter nytt bituminøst bærelag. Vi vil vite hva N200 tillater av resirkulert asfalt.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N200/id-4b5dd93e-dc57-4a68-e4be-0af5279dd191.md",
|
||||
"title": "Krav 4.7.2—1 Resirkulert asfalt i bærelag",
|
||||
"ref": "Krav 4.7.2—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N200/id-4ede1d67-be20-43f5-c238-8bd24cabe3d2.md",
|
||||
"title": "Krav 4.8—1 Asfaltdekker",
|
||||
"ref": "Krav 4.8—1"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a2-barelag-gjenbruk",
|
||||
"rationale": "Eksisterende bærelag er antatt utskiftet i sin helhet. Spørsmålet er hvilke krav N200 stiller til bærelag før gjenbruk kan vurderes.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N200/id-dd38bce0-e39b-4e7f-b0fa-6d2845274dec.md",
|
||||
"title": "Krav 3.3.2—1 Bærelag",
|
||||
"ref": "Krav 3.3.2—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N200/id-18e0246c-851d-4d6b-dea9-f63a74041f1b.md",
|
||||
"title": "Krav 3.3.2—1_1 Bærelag",
|
||||
"ref": "Krav 3.3.2—1_1"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a3-frostsikring-tykkelse",
|
||||
"rationale": "Frostsikringen er prosjektert med full tykkelse over hele strekningen. Vi vil vite hva N200 krever.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N200/id-087e62da-e780-4d42-c785-5be9490a4000.md",
|
||||
"title": "Krav 3.2.2—1 Frostsikring med ubundne materialer",
|
||||
"ref": "Krav 3.2.2—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N200/id-c2f574a8-27e5-48e1-9d26-80a73512fdcf.md",
|
||||
"title": "Krav 3.2.2—2 Frostsikring med ubundne materialer",
|
||||
"ref": "Krav 3.2.2—2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"honesty": "Prosjektet fv. 412 dekkefornyelse er KONSTRUERT av meg: vegnummer, lengde, ÅDT og alle tre kostlinjene (DEKKE-ASF-01, DEKKE-BAER-01, DEKKE-FROST-01) er oppdiktet, og beløpene er satte størrelsesordener. Kravene i must_cite er lest ordrett ut av n200-2024-basens egen frontmatter. N200 bærer ingen priser, så kodene finnes ikke i basen. P16: den fjerde tilnaermingen a4-tonnpris-asfalt og dens kostkode DEKKE-ASF-ENHET er ogsaa KONSTRUERT, og med vilje: den er falsifiseringsarmen, en kostlinje basen ikke baerer grunnlaget for. Beloepet er en satt stoerrelsesorden. P21: settet har naa sin egen cost-baseline.json (5 linjer) — prosjektets prisskjema. Mengdene og enhetsprisene der er OPPDIKTEDE stoerrelsesordener, satt slik at hver av a1-a3 har sin kostlinje og a4 IKKE har en; N200 baerer ingen priser, saa ingen av tallene er lest noe sted.",
|
||||
"must_refuse": [
|
||||
{
|
||||
"approach_id": "a4-tonnpris-asfalt",
|
||||
"anchors": [
|
||||
"driftskostnad",
|
||||
"enhetspris",
|
||||
"kalkyle",
|
||||
"kostnadsestimat",
|
||||
"markedspris",
|
||||
"vedlikeholdskostnad"
|
||||
],
|
||||
"rationale": "N200 beskriver materialkrav, ikke priser. Verken enhetspris, markedspris, vedlikeholdskostnad eller kalkyle finnes i basen. Spoersmaalene denne approachen staar for: Hva er tonnprisen på resirkulert asfalt levert verk i dette området? | Hva blir den årlige vedlikeholdskostnaden for det valgte dekket? | Hvilket kostnadsestimat ligger til grunn for dekkefornyelsen?"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"objective": "Kutt kostnad i dekkefornyelsen på fv. 412 (6,3 km, ÅDT 3 400) uten å bryte et eneste krav i N200.",
|
||||
"success_criteria": "Minst én tilnærming validerer mot N200, og hver validerte tilnærming peker på de kravene i N200 som faktisk binder materialvalget.",
|
||||
"approaches": [
|
||||
{
|
||||
"id": "a1-resirkulert-asfalt",
|
||||
"label": "Økt andel resirkulert asfalt i bærelaget",
|
||||
"description": "Beskrivelsen forutsetter nytt bituminøst bærelag. Vi vil vite hva N200 tillater av resirkulert asfalt.",
|
||||
"affected_codes": [
|
||||
"DEKKE-ASF-01"
|
||||
],
|
||||
"claimed_saving_nok": 2750000.0,
|
||||
"bundle_id": "vegnormal-n200-2024"
|
||||
},
|
||||
{
|
||||
"id": "a2-barelag-gjenbruk",
|
||||
"label": "Gjenbruk av eksisterende bærelag i stedet for utskifting",
|
||||
"description": "Eksisterende bærelag er antatt utskiftet i sin helhet. Spørsmålet er hvilke krav N200 stiller til bærelag før gjenbruk kan vurderes.",
|
||||
"affected_codes": [
|
||||
"DEKKE-BAER-01"
|
||||
],
|
||||
"claimed_saving_nok": 1450000.0,
|
||||
"bundle_id": "vegnormal-n200-2024"
|
||||
},
|
||||
{
|
||||
"id": "a3-frostsikring-tykkelse",
|
||||
"label": "Tynnere frostsikringslag av ubundne materialer",
|
||||
"description": "Frostsikringen er prosjektert med full tykkelse over hele strekningen. Vi vil vite hva N200 krever.",
|
||||
"affected_codes": [
|
||||
"DEKKE-FROST-01"
|
||||
],
|
||||
"claimed_saving_nok": 1900000.0,
|
||||
"bundle_id": "vegnormal-n200-2024"
|
||||
},
|
||||
{
|
||||
"id": "a4-tonnpris-asfalt",
|
||||
"label": "Lavere tonnpris pa resirkulert asfalt",
|
||||
"description": "Vi vil kutte ved a legge en lavere tonnpris for resirkulert asfalt til grunn.",
|
||||
"affected_codes": [
|
||||
"DEKKE-ASF-ENHET"
|
||||
],
|
||||
"claimed_saving_nok": 800000.0,
|
||||
"bundle_id": "vegnormal-n200-2024"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
name: n100-2023
|
||||
bundle_id: vegnormal-n100-2023
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
"project_id": "gate-nordvik-2027",
|
||||
"bundle": "n100-2023",
|
||||
"bundle_id": "vegnormal-n100-2023",
|
||||
"must_cite": [
|
||||
{
|
||||
"approach_id": "a1-rundkjoring-forenklet",
|
||||
"rationale": "Krysset er prosjektert signalregulert. Vi vil vite hvilke krav N100 stiller til rundkjøring før vi kan regne på et bytte.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N100/id-a97dabc7-d35a-4e51-c1b9-5fcdf64ac96d.md",
|
||||
"title": "Krav 4.1.2—1 Rundkjøringer",
|
||||
"ref": "Krav 4.1.2—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N100/id-8df9cff1-d7af-4313-df59-c6dee4271831.md",
|
||||
"title": "Krav 4.1.2—2 Rundkjøringer",
|
||||
"ref": "Krav 4.1.2—2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a2-gangfelt-antall",
|
||||
"rationale": "Seks opphøyde gangfelt er prosjektert. Spørsmålet er hva N100 krever av kryssingspunkter for gående på en gate med denne fartsgrensen.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N100/id-2ffbe00a-3275-4653-f248-47c15159ac0e.md",
|
||||
"title": "Krav 4.2.5.1—1 Gangfelt og tilrettelagte kryssingspunkter",
|
||||
"ref": "Krav 4.2.5.1—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N100/id-92533134-32fd-4547-91e6-1f60bd75e9e7.md",
|
||||
"title": "Krav 4.2.5.1—2 Gangfelt og tilrettelagte kryssingspunkter",
|
||||
"ref": "Krav 4.2.5.1—2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a3-trafikkoy-utforming",
|
||||
"rationale": "Trafikkøyene er prosjektert i full bredde i alle armer. Vi vil vite hva N100 faktisk krever.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N100/id-b0586596-18e9-4d4c-a843-ea6018fcad3d.md",
|
||||
"title": "Krav 4.1.2.4—1 Trafikkøy i rundkjøringsarmer",
|
||||
"ref": "Krav 4.1.2.4—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N100/id-a8df58ed-d301-439b-f6b6-675e6f091455.md",
|
||||
"title": "Krav 4.1.2.4—2 Trafikkøy i rundkjøringsarmer",
|
||||
"ref": "Krav 4.1.2.4—2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"honesty": "Prosjektet Nordvikgata er KONSTRUERT av meg: gatenavn, lengde, fartsgrense og alle tre kostlinjene (GATE-KRYSS-01, GATE-GANG-01, GATE-KRYSS-02) er oppdiktet, og beløpene er satte størrelsesordener. Kravene i must_cite er derimot lest ordrett ut av n100-2023-basens egen frontmatter. N100 bærer ingen priser, så kodene finnes ikke i basen. P16: den fjerde tilnaermingen a4-enhetspris-gangfelt og dens kostkode GATE-GANG-ENHET er ogsaa KONSTRUERT, og med vilje: den er falsifiseringsarmen, en kostlinje basen ikke baerer grunnlaget for. Beloepet er en satt stoerrelsesorden. P21: settet har naa sin egen cost-baseline.json (5 linjer) — prosjektets prisskjema. Mengdene og enhetsprisene der er OPPDIKTEDE stoerrelsesordener, satt slik at hver av a1-a3 har sin kostlinje og a4 IKKE har en; N100 baerer ingen priser, saa ingen av tallene er lest noe sted.",
|
||||
"must_refuse": [
|
||||
{
|
||||
"approach_id": "a4-enhetspris-gangfelt",
|
||||
"anchors": [
|
||||
"budsjett",
|
||||
"enhetspris",
|
||||
"indeksregulering",
|
||||
"investeringsramme",
|
||||
"kostnadsestimat",
|
||||
"prisstigning"
|
||||
],
|
||||
"rationale": "N100 er en vegnormal og baerer ingen priser. Ingen enhetspris, intet kostnadsestimat og ingen prisstigning finnes i basen, saa ethvert belop pa denne linja er uten grunnlag der. Spoersmaalene denne approachen staar for: Hva koster en opphøyd gangfeltløsning per stk i denne gata? | Hvilken prisstigning skal legges inn fra prosjektering til utførelse? | Hva er den samlede investeringsrammen for Nordvikgata?"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"objective": "Kutt kostnad i ombyggingen av Nordvikgata (0,9 km bygate, fartsgrense 40 km/t) uten å bryte et eneste krav i N100.",
|
||||
"success_criteria": "Minst én tilnærming validerer mot N100, og hver validerte tilnærming peker på de kravene i N100 som faktisk binder utformingen.",
|
||||
"approaches": [
|
||||
{
|
||||
"id": "a1-rundkjoring-forenklet",
|
||||
"label": "Enklere rundkjøring i stedet for signalregulert kryss",
|
||||
"description": "Krysset er prosjektert signalregulert. Vi vil vite hvilke krav N100 stiller til rundkjøring før vi kan regne på et bytte.",
|
||||
"affected_codes": [
|
||||
"GATE-KRYSS-01"
|
||||
],
|
||||
"claimed_saving_nok": 3100000.0,
|
||||
"bundle_id": "vegnormal-n100-2023"
|
||||
},
|
||||
{
|
||||
"id": "a2-gangfelt-antall",
|
||||
"label": "Færre opphøyde gangfelt på strekningen",
|
||||
"description": "Seks opphøyde gangfelt er prosjektert. Spørsmålet er hva N100 krever av kryssingspunkter for gående på en gate med denne fartsgrensen.",
|
||||
"affected_codes": [
|
||||
"GATE-GANG-01"
|
||||
],
|
||||
"claimed_saving_nok": 640000.0,
|
||||
"bundle_id": "vegnormal-n100-2023"
|
||||
},
|
||||
{
|
||||
"id": "a3-trafikkoy-utforming",
|
||||
"label": "Redusert omfang av trafikkøyer i rundkjøringsarmene",
|
||||
"description": "Trafikkøyene er prosjektert i full bredde i alle armer. Vi vil vite hva N100 faktisk krever.",
|
||||
"affected_codes": [
|
||||
"GATE-KRYSS-02"
|
||||
],
|
||||
"claimed_saving_nok": 410000.0,
|
||||
"bundle_id": "vegnormal-n100-2023"
|
||||
},
|
||||
{
|
||||
"id": "a4-enhetspris-gangfelt",
|
||||
"label": "Billigere enhetspris pa opphoyd gangfelt",
|
||||
"description": "Vi vil kutte ved a legge en lavere enhetspris per opphoyd gangfelt til grunn.",
|
||||
"affected_codes": [
|
||||
"GATE-GANG-ENHET"
|
||||
],
|
||||
"claimed_saving_nok": 300000.0,
|
||||
"bundle_id": "vegnormal-n100-2023"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
name: r761-2025
|
||||
bundle_id: vegnormal-r761-2025
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
# 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/2026-09-12-p14-kontekstsett.md` § 1.4.
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
"project_id": "kontrakt-sorasen-2027",
|
||||
"bundle": "r761-2025",
|
||||
"bundle_id": "vegnormal-r761-2025",
|
||||
"must_cite": [
|
||||
{
|
||||
"approach_id": "a1-rigg-omfang",
|
||||
"rationale": "Rigg og drift er prissatt som rund sum over 22 måneder. Vi vil vite hva Prosesskoden legger i prosessen før vi kan kutte.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "R761/12-1/_1_id-da516f46-786b-4e96-9511-da11ee07750f.md",
|
||||
"title": "Rigg og midlertidige bygninger",
|
||||
"ref": "12.1"
|
||||
},
|
||||
{
|
||||
"path": "R761/12-12/_1_id-0d8e750e-18b1-49b9-b838-f5c29f21ff29.md",
|
||||
"title": "Drift av rigg og midlertidige bygninger",
|
||||
"ref": "12.12"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a2-massebalanse",
|
||||
"rationale": "Beskrivelsen har både uttak i linjen og tilkjørt filtermateriale. Spørsmålet er hva Prosesskoden krever av materialet i filterlaget.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "R761/22-1/_2_id-54b5cb78-ba5e-4d30-a85d-d31facfde14d.md",
|
||||
"title": "Sprengning i linjen",
|
||||
"ref": "22.1"
|
||||
},
|
||||
{
|
||||
"path": "R761/52-1/_5_id-d53022e6-0a09-4b02-bd37-21276fc2e51d.md",
|
||||
"title": "Filterlag",
|
||||
"ref": "52.1"
|
||||
},
|
||||
{
|
||||
"path": "R761/52-11/_5_id-54270fce-705b-4f7c-fff0-0fea94ec0c08.md",
|
||||
"title": "Filterlag av sand og grus",
|
||||
"ref": "52.11"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a3-planum-stabilisering",
|
||||
"rationale": "Undergrunnen er beskrevet utskiftet. Vi vil vite hva prosessen for stabilisering av planum omfatter.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "R761/51-1/_5_id-714020f6-3490-4dde-fe8f-c3d373f07d8f.md",
|
||||
"title": "Stabilisering av planum",
|
||||
"ref": "51.1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"honesty": "Entreprisen Søråsen er KONSTRUERT av meg: kontraktsnavn, lengde, riggperiode og alle tre beløpene er oppdiktede størrelsesordener. Til forskjell fra de tre andre settene er affected_codes her EKTE prosessnumre fra R761 (12.1, 12.12, 22.1, 51.1, 52.11), lest ut av basens egen prosessnr-frontmatter — men R761 er en beskrivelsesstandard uten priser, så kodene er ekte mens beløpene ikke er det. must_cite er lest ordrett ut av basen. P16: den fjerde tilnaermingen a4-indeksregulering og dens kostkode INDEKS-01 er ogsaa KONSTRUERT, og med vilje: den er falsifiseringsarmen, en kostlinje basen ikke baerer grunnlaget for. Beloepet er en satt stoerrelsesorden. P21: settet har naa sin egen cost-baseline.json (5 linjer) — prosjektets prisskjema, kodet med de samme EKTE prosessnumrene, som er slik en norsk vegkontrakt faktisk prises. Mengdene og enhetsprisene er OPPDIKTEDE stoerrelsesordener; R761 baerer ingen priser, saa ingen av tallene er lest noe sted. a4s INDEKS-01 har ingen linje.",
|
||||
"must_refuse": [
|
||||
{
|
||||
"approach_id": "a4-indeksregulering",
|
||||
"anchors": [
|
||||
"indeksregulering",
|
||||
"kalkyle",
|
||||
"kostnadsestimat",
|
||||
"markedspris",
|
||||
"nåverdi",
|
||||
"prisstigning"
|
||||
],
|
||||
"rationale": "R761 er en prosesskode: den beskriver hva som skal utfores og males, ikke hva det koster. Kostnadsestimat, markedspris, prisstigning, indeksregulering og naverdi finnes ikke i basen. Spoersmaalene denne approachen staar for: Hvilket kostnadsestimat ligger til grunn for riggposten i denne kontrakten? | Hva er markedsprisen på tilkjørt filtermateriale i denne regionen i 2027? | Hvordan skal kontraktssummen indeksreguleres gjennom byggeperioden?"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
{
|
||||
"objective": "Kutt kostnad i utførelsesentreprisen Søråsen (veg i dagen, 3,1 km) ved å endre hvordan arbeidet beskrives etter Prosesskoden, uten å endre hva som bygges.",
|
||||
"success_criteria": "Minst én tilnærming validerer, og hver validerte tilnærming peker på de prosessene i R761 som faktisk styrer utførelse og oppgjør for den posten.",
|
||||
"approaches": [
|
||||
{
|
||||
"id": "a1-rigg-omfang",
|
||||
"label": "Redusert riggomfang og kortere riggperiode",
|
||||
"description": "Rigg og drift er prissatt som rund sum over 22 måneder. Vi vil vite hva Prosesskoden legger i prosessen før vi kan kutte.",
|
||||
"affected_codes": [
|
||||
"12.1",
|
||||
"12.12"
|
||||
],
|
||||
"claimed_saving_nok": 4200000.0,
|
||||
"bundle_id": "vegnormal-r761-2025"
|
||||
},
|
||||
{
|
||||
"id": "a2-massebalanse",
|
||||
"label": "Gjenbruk av sprengstein fra linjen som filterlag i stedet for tilkjørt materiale",
|
||||
"description": "Beskrivelsen har både uttak i linjen og tilkjørt filtermateriale. Spørsmålet er hva Prosesskoden krever av materialet i filterlaget.",
|
||||
"affected_codes": [
|
||||
"22.1",
|
||||
"52.11"
|
||||
],
|
||||
"claimed_saving_nok": 6800000.0,
|
||||
"bundle_id": "vegnormal-r761-2025"
|
||||
},
|
||||
{
|
||||
"id": "a3-planum-stabilisering",
|
||||
"label": "Stabilisering av planum i stedet for utskifting av undergrunn",
|
||||
"description": "Undergrunnen er beskrevet utskiftet. Vi vil vite hva prosessen for stabilisering av planum omfatter.",
|
||||
"affected_codes": [
|
||||
"51.1"
|
||||
],
|
||||
"claimed_saving_nok": 1300000.0,
|
||||
"bundle_id": "vegnormal-r761-2025"
|
||||
},
|
||||
{
|
||||
"id": "a4-indeksregulering",
|
||||
"label": "Kutt ved gunstigere indeksregulering av kontraktssummen",
|
||||
"description": "Vi vil kutte ved a legge en gunstigere indeksregulering til grunn for kontraktssummen.",
|
||||
"affected_codes": [
|
||||
"INDEKS-01"
|
||||
],
|
||||
"claimed_saving_nok": 2500000.0,
|
||||
"bundle_id": "vegnormal-r761-2025"
|
||||
}
|
||||
]
|
||||
}
|
||||
2
contexts/serverrom-2027/bundle.txt
Normal file
2
contexts/serverrom-2027/bundle.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
name: driftskrav-2027
|
||||
bundle_id: eksempel-driftskrav-2027
|
||||
|
|
@ -1,23 +1,23 @@
|
|||
{
|
||||
"project_id": "gate-nordvik-2027",
|
||||
"project_id": "serverrom-2027",
|
||||
"items": {
|
||||
"GATE-KRYSS-01": {
|
||||
"SRV-KJOL-01": {
|
||||
"quantity": 1.0,
|
||||
"unit_cost": 9400000.0
|
||||
},
|
||||
"GATE-GANG-01": {
|
||||
"SRV-UPS-01": {
|
||||
"quantity": 6.0,
|
||||
"unit_cost": 310000.0
|
||||
},
|
||||
"GATE-KRYSS-02": {
|
||||
"SRV-KOPI-01": {
|
||||
"quantity": 8.0,
|
||||
"unit_cost": 155000.0
|
||||
},
|
||||
"GATE-DEKKE-01": {
|
||||
"SRV-KABEL-01": {
|
||||
"quantity": 5400.0,
|
||||
"unit_cost": 1250.0
|
||||
},
|
||||
"GATE-VA-01": {
|
||||
"SRV-STROM-01": {
|
||||
"quantity": 900.0,
|
||||
"unit_cost": 4800.0
|
||||
}
|
||||
|
|
@ -4,4 +4,4 @@ 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/2026-09-12-p14-kontekstsett.md` § 1.4.
|
||||
en katalog ved siden av. Se `docs/invarianter.md`.
|
||||
70
contexts/serverrom-2027/fasit.json
Normal file
70
contexts/serverrom-2027/fasit.json
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
"project_id": "serverrom-2027",
|
||||
"bundle": "driftskrav-2027",
|
||||
"bundle_id": "eksempel-driftskrav-2027",
|
||||
"must_cite": [
|
||||
{
|
||||
"approach_id": "a1-kjoling-dimensjonering",
|
||||
"rationale": "Kjøleanlegget er prosjektert etter installert merkeeffekt. Et riktig svar må gjengi hva D200 krever av dimensjonering før et mindre anlegg kan vurderes.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/D200/id-95ebcfc2-07dc-56b5-a3f9-3fe868ce1116.md",
|
||||
"title": "Krav 4.1.1—1 Dimensjonering",
|
||||
"ref": "Krav 4.1.1—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/D200/id-c123e8f3-ed7b-539a-b938-e8a0b2c55e98.md",
|
||||
"title": "Krav 4.1.1—2 Dimensjonering",
|
||||
"ref": "Krav 4.1.1—2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a2-ups-autonomi",
|
||||
"rationale": "Seks UPS-moduler er prosjektert for 30 minutters autonomitid. Spørsmålet er hva D200 krever av autonomitid når serverrommet har nødstrømsaggregat.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/D200/id-b1e2ba25-9825-57b0-a358-569be457d2c8.md",
|
||||
"title": "Krav 3.2.1—1 Autonomitid",
|
||||
"ref": "Krav 3.2.1—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/D200/id-64bf6522-907d-5a49-be19-cc2bbb949c37.md",
|
||||
"title": "Krav 3.2.1—2 Autonomitid",
|
||||
"ref": "Krav 3.2.1—2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a3-kopi-lagringsklasse",
|
||||
"rationale": "Alle sikkerhetskopier ligger på samme raske lagringsklasse. Et riktig svar må gjengi hva D200 krever av lagringsklasser, også unntaket for eldre kopier.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/D200/id-ede8ea4d-009d-56f3-8e9c-3dd5e80a5622.md",
|
||||
"title": "Krav 5.2.2—1 Lagringsklasser",
|
||||
"ref": "Krav 5.2.2—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/D200/id-cab33003-c9b3-5678-ada6-438a6745f144.md",
|
||||
"title": "Krav 5.2.2—1_1 Lagringsklasser",
|
||||
"ref": "Krav 5.2.2—1_1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"honesty": "Alt i dette settet er KONSTRUERT: Eksempelvirksomheten, serverrommet, antall rackskap, driftsklassene og alle fem kostlinjene (SRV-KJOL-01, SRV-UPS-01, SRV-KOPI-01, SRV-KABEL-01, SRV-STROM-01) er oppdiktet, og beløpene er satte størrelsesordener. Også kunnskapsbasen er oppdiktet: driftskrav-2027 er generert av examples/syntetiske-kunnskapsbaser/generate.py. Kravene i must_cite er lest ordrett ut av basens egen frontmatter. D200 bærer ingen priser, så kodene finnes ikke i basen. Den fjerde tilnærmingen a4-enhetspris-rackskap og dens kostkode SRV-RACK-ENHET er også KONSTRUERT, og med vilje: den er falsifiseringsarmen, en kostlinje basen ikke bærer grunnlaget for, og den har ingen linje i settets cost-baseline.json. Mengdene og enhetsprisene der er OPPDIKTEDE størrelsesordener, satt slik at hver av a1-a3 har sin kostlinje og a4 IKKE har en; ingen av tallene er lest noe sted.",
|
||||
"must_refuse": [
|
||||
{
|
||||
"approach_id": "a4-enhetspris-rackskap",
|
||||
"anchors": [
|
||||
"budsjett",
|
||||
"enhetspris",
|
||||
"indeksregulering",
|
||||
"investeringsramme",
|
||||
"kostnadsestimat",
|
||||
"prisstigning"
|
||||
],
|
||||
"rationale": "D200 er en samling driftskrav og bærer ingen priser. Ingen enhetspris, intet kostnadsestimat og ingen prisstigning finnes i basen, så ethvert beløp på denne linja er uten grunnlag der. Spørsmålene denne tilnærmingen står for: Hva koster et rackskap per stk i dette serverrommet? | Hvilken prisstigning skal legges inn fra prosjektering til levering? | Hva er den samlede investeringsrammen for ombyggingen?"
|
||||
}
|
||||
]
|
||||
}
|
||||
46
contexts/serverrom-2027/mandate.json
Normal file
46
contexts/serverrom-2027/mandate.json
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"objective": "Kutt kostnad i ombyggingen av serverrommet til Eksempelvirksomheten (42 rackskap, driftsklasse 1 og 2) uten å bryte et eneste krav i driftskravene D200.",
|
||||
"success_criteria": "Minst én tilnærming validerer mot driftskravene, og hver validerte tilnærming peker på de kravene i D200 som faktisk binder løsningen.",
|
||||
"approaches": [
|
||||
{
|
||||
"id": "a1-kjoling-dimensjonering",
|
||||
"label": "Kjøleanlegg dimensjonert etter målt varmelast",
|
||||
"description": "Kjøleanlegget er prosjektert etter installert merkeeffekt. Vi vil vite hvilke krav D200 stiller til dimensjonering før vi kan regne på et mindre anlegg.",
|
||||
"affected_codes": [
|
||||
"SRV-KJOL-01"
|
||||
],
|
||||
"claimed_saving_nok": 3100000.0,
|
||||
"bundle_id": "eksempel-driftskrav-2027"
|
||||
},
|
||||
{
|
||||
"id": "a2-ups-autonomi",
|
||||
"label": "Kortere autonomitid i UPS-anlegget",
|
||||
"description": "Seks UPS-moduler er prosjektert for 30 minutters autonomitid. Spørsmålet er hva D200 krever av autonomitid når serverrommet har nødstrømsaggregat.",
|
||||
"affected_codes": [
|
||||
"SRV-UPS-01"
|
||||
],
|
||||
"claimed_saving_nok": 640000.0,
|
||||
"bundle_id": "eksempel-driftskrav-2027"
|
||||
},
|
||||
{
|
||||
"id": "a3-kopi-lagringsklasse",
|
||||
"label": "Eldre sikkerhetskopier på en rimeligere lagringsklasse",
|
||||
"description": "Alle sikkerhetskopier ligger på samme raske lagringsklasse. Vi vil vite hva D200 faktisk krever av lagringsklasser.",
|
||||
"affected_codes": [
|
||||
"SRV-KOPI-01"
|
||||
],
|
||||
"claimed_saving_nok": 410000.0,
|
||||
"bundle_id": "eksempel-driftskrav-2027"
|
||||
},
|
||||
{
|
||||
"id": "a4-enhetspris-rackskap",
|
||||
"label": "Billigere enhetspris på rackskap",
|
||||
"description": "Vi vil kutte ved å legge en lavere enhetspris per rackskap til grunn.",
|
||||
"affected_codes": [
|
||||
"SRV-RACK-ENHET"
|
||||
],
|
||||
"claimed_saving_nok": 300000.0,
|
||||
"bundle_id": "eksempel-driftskrav-2027"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
name: n500-2024
|
||||
bundle_id: vegnormal-n500-2024
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
{
|
||||
"project_id": "tunnel-hauglia-2027",
|
||||
"items": {
|
||||
"TUN-VENT-01": {
|
||||
"quantity": 14.0,
|
||||
"unit_cost": 465000.0
|
||||
},
|
||||
"TUN-FROST-01": {
|
||||
"quantity": 360.0,
|
||||
"unit_cost": 21500.0
|
||||
},
|
||||
"TUN-LYS-01": {
|
||||
"quantity": 2400.0,
|
||||
"unit_cost": 1850.0
|
||||
},
|
||||
"TUN-SPRENG-01": {
|
||||
"quantity": 168000.0,
|
||||
"unit_cost": 410.0
|
||||
},
|
||||
"TUN-SIKRING-01": {
|
||||
"quantity": 2400.0,
|
||||
"unit_cost": 6900.0
|
||||
},
|
||||
"TUN-PORTAL-01": {
|
||||
"quantity": 2.0,
|
||||
"unit_cost": 3850000.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
# 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/2026-09-12-p14-kontekstsett.md` § 1.4.
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
{
|
||||
"project_id": "tunnel-hauglia-2027",
|
||||
"bundle": "n500-2024",
|
||||
"bundle_id": "vegnormal-n500-2024",
|
||||
"must_cite": [
|
||||
{
|
||||
"approach_id": "a1-ventilasjon-dimensjonering",
|
||||
"rationale": "Prosjekteringsgrunnlaget forutsetter full lengdeventilasjon over hele profilet. Vi vil vite om N500 tillater en lavere installert effekt for dette tunnelprofilet og denne ÅDT-en.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N500/id-bfb0edb4-15ad-4fb1-96e8-a1ffb65f2b40.md",
|
||||
"title": "Krav 10.4.3—1 Mekanisk ventilasjon (impulsventilator)",
|
||||
"ref": "Krav 10.4.3—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N500/id-e897fcb1-36ab-4198-ee5f-764833cce9d2.md",
|
||||
"title": "Krav 10.4.3—2 Mekanisk ventilasjon (impulsventilator)",
|
||||
"ref": "Krav 10.4.3—2"
|
||||
},
|
||||
{
|
||||
"path": "krav/N500/id-15ccfe60-c88c-4174-8b28-5c660e6a7d9e.md",
|
||||
"title": "Krav 10.4.3—3 Mekanisk ventilasjon (impulsventilator)",
|
||||
"ref": "Krav 10.4.3—3"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a2-frostsikring-lengde",
|
||||
"rationale": "Frostsikringen er lagt 180 m inn fra hver portal. Spørsmålet er hva N500 faktisk krever av frostmengde og isolasjonsløsning.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N500/id-92e2836a-90af-4797-df73-981ab02da81d.md",
|
||||
"title": "Krav 8.1.2—1 Frostdimensjonering",
|
||||
"ref": "Krav 8.1.2—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N500/id-7c24c166-3659-414c-fe81-07373f33b2b5.md",
|
||||
"title": "Krav 8.4.2—1 Frostisolering med PE-skum eller XPS",
|
||||
"ref": "Krav 8.4.2—1"
|
||||
},
|
||||
{
|
||||
"path": "krav/N500/id-2b68ddbd-2037-469f-a181-b5db969dc829.md",
|
||||
"title": "Krav 8.4.2—2 Frostisolering med PE-skum eller XPS",
|
||||
"ref": "Krav 8.4.2—2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"approach_id": "a3-belysning-adaptiv",
|
||||
"rationale": "Belysningsanlegget er dimensjonert for konstant nivå. Vi vil vite hvilke kvalitetskrav N500 stiller før vi kan kutte installert effekt.",
|
||||
"concepts": [
|
||||
{
|
||||
"path": "krav/N500/id-dc16192f-4ef6-41e7-b47f-be8f1cd581fb.md",
|
||||
"title": "Krav 10.3.2—5 Belysningens kvalitet",
|
||||
"ref": "Krav 10.3.2—5"
|
||||
},
|
||||
{
|
||||
"path": "krav/N500/id-d77adb34-725c-4826-eb26-5fc72f27e711.md",
|
||||
"title": "Krav 10.3.3—1 Belysning av tunnelveggene",
|
||||
"ref": "Krav 10.3.3—1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"honesty": "Prosjektet Hauglia-tunnelen er KONSTRUERT av meg: navn, lengde, ÅDT og alle tre kostlinjene (TUN-VENT-01, TUN-FROST-01, TUN-LYS-01) er oppdiktet, og de tre beløpene er plausible størrelsesordener jeg har satt, ikke tall fra et prosjekt. Det som IKKE er konstruert er kravene: hver konsept-sti, tittel og kravnummer i must_cite er lest ordrett ut av n500-2024-basens egen frontmatter. N500 bærer ingen priser, så kodene finnes ikke i basen — settet er derfor bevisst IKKE kjørbart via --proposals-from-mandate. P16: den fjerde tilnaermingen a4-enhetspris-ventilator og dens kostkode TUN-VENT-ENHET er ogsaa KONSTRUERT, og med vilje: den er falsifiseringsarmen, en kostlinje basen ikke baerer grunnlaget for. Beloepet er en satt stoerrelsesorden. P21: settet har naa sin egen cost-baseline.json (6 linjer) — prosjektets prisskjema. Mengdene og enhetsprisene der er OPPDIKTEDE stoerrelsesordener, satt slik at hver av a1-a3 har sin kostlinje og a4 IKKE har en; N500 baerer ingen priser, saa ingen av tallene er lest noe sted.",
|
||||
"must_refuse": [
|
||||
{
|
||||
"approach_id": "a4-enhetspris-ventilator",
|
||||
"anchors": [
|
||||
"driftskostnad",
|
||||
"enhetspris",
|
||||
"markedspris",
|
||||
"nåverdi",
|
||||
"timepris"
|
||||
],
|
||||
"rationale": "N500 er en vegnormal og baerer ingen priser, ingen markedspriser, ingen timepriser og ingen naverdiberegning. Et belop pa denne linja har intet grunnlag i basen. Spoersmaalene denne approachen staar for: Hva koster en impulsventilator per stk levert og montert i norsk tunnelentreprise? | Hva er nåverdien over 20 år av å velge adaptiv LED framfor fast belysningsnivå? | Hvilken timepris skal legges til grunn for elektromontør i dette prosjektet?"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"objective": "Kutt kostnad i byggefasen for Hauglia-tunnelen (2,4 km ettløps vegtunnel, ÅDT 7 200) uten å bryte et eneste krav i N500.",
|
||||
"success_criteria": "Minst én tilnærming validerer mot N500, og hver validerte tilnærming peker på de kravene i N500 som faktisk binder den.",
|
||||
"approaches": [
|
||||
{
|
||||
"id": "a1-ventilasjon-dimensjonering",
|
||||
"label": "Redusert antall impulsventilatorer ved ny dimensjonering av lengdeventilasjon",
|
||||
"description": "Prosjekteringsgrunnlaget forutsetter full lengdeventilasjon over hele profilet. Vi vil vite om N500 tillater en lavere installert effekt for dette tunnelprofilet og denne ÅDT-en.",
|
||||
"affected_codes": [
|
||||
"TUN-VENT-01"
|
||||
],
|
||||
"claimed_saving_nok": 1850000.0,
|
||||
"bundle_id": "vegnormal-n500-2024"
|
||||
},
|
||||
{
|
||||
"id": "a2-frostsikring-lengde",
|
||||
"label": "Kortere frostsikret sone ved begge portaler",
|
||||
"description": "Frostsikringen er lagt 180 m inn fra hver portal. Spørsmålet er hva N500 faktisk krever av frostmengde og isolasjonsløsning.",
|
||||
"affected_codes": [
|
||||
"TUN-FROST-01"
|
||||
],
|
||||
"claimed_saving_nok": 2400000.0,
|
||||
"bundle_id": "vegnormal-n500-2024"
|
||||
},
|
||||
{
|
||||
"id": "a3-belysning-adaptiv",
|
||||
"label": "Adaptiv LED-belysning i stedet for fast installert nivå",
|
||||
"description": "Belysningsanlegget er dimensjonert for konstant nivå. Vi vil vite hvilke kvalitetskrav N500 stiller før vi kan kutte installert effekt.",
|
||||
"affected_codes": [
|
||||
"TUN-LYS-01"
|
||||
],
|
||||
"claimed_saving_nok": 1200000.0,
|
||||
"bundle_id": "vegnormal-n500-2024"
|
||||
},
|
||||
{
|
||||
"id": "a4-enhetspris-ventilator",
|
||||
"label": "Billigere enhetspris pa impulsventilator",
|
||||
"description": "Vi vil kutte ved a legge en lavere enhetspris per impulsventilator til grunn.",
|
||||
"affected_codes": [
|
||||
"TUN-VENT-ENHET"
|
||||
],
|
||||
"claimed_saving_nok": 900000.0,
|
||||
"bundle_id": "vegnormal-n500-2024"
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue