portfolio-optimiser/docs/plan/2026-07-14-revisjonspakke-DF-DI.md

189 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Revisjonspakke — D-FD-I: intensjonsanalyse → planverk-oppgradering (2026-07-14)
> **Status:** BESLUTTET i operatør-samtale 2026-07-14. Denne pakka er fasit-protokollen +
> innplasserings-planen. **Ingenting frosset er endret ennå** — amendments skjer bevisst via
> commons (PULL-ONLY) og egne økter, med denne pakka som kilde. Operatøren har gitt
> klarsignal for HELE oppgraderingen («du får lov til å gjøre alt som trengs»); utførelsen
> er parkert på Fable-kvote (92 % brukt før torsdag) — gjenopptas 2026-07-16+.
> **Provenance:** anbefalinger = AI (Fable 5, intensjonsanalyse-økt #8 2026-07-14);
> beslutninger = operatør, protokollert punktvis under. Grunnlag: dokumentanalyse (målbilde,
> method-spec, ingest-målbilde, research §15, review 2026-07, sesjonsplan) + to
> Opus-kartlegginger (kode/bundle-innhold; kryssrepo-OKF-inventar — fanget i §0.2, finnes
> ellers kun i samtalen).
---
## 0. Funnene som utløste pakka (intensjonsnivå — ikke implementasjon; F1F14 er dekket)
1. **F-INT-1 Kunnskapsinnholdet er underspesifisert → kaldstart-problem.** Method-spec §2
lister kontekst-lagets innhold generisk; intet krav om historisk fagkunnskap om
sparemåter per dimensjon. Substrat i dag: ÉN mikro-bundle (`bygg-energi-mikro`), de 4
porteføljeprosjektene er ikke bundles; `Dimension` konstrueres kun i tester (ingen
katalog/loader). Delt kryssprosjekt-fagkunnskap har ingen arkitekturplass (kontekst-laget
er strengt per-prosjekt). Kobler til F5/S3.2 (multi-kandidat).
2. **F-INT-2 OKF-duplikasjon + spec-avvik.** 6 kodelokasjoner håndruller formatet (§0.2);
method-spec avviser OKF-spec-ens anbefalte `/`-lenkeform (review F4/U-1, ligger i D-A).
3. **F-INT-3 Brukervennlighet mangler «ferdig»-definisjon.** Research B9
(onboarding-intervju) falt ut av målbildet; `main()` driver ikke Fase-1-featurene (P6);
README-ens eneste inngang er simuleringen.
4. **F-INT-4 «Betydelig verdi» er ikke operasjonalisert.** Ingen suksesskriterier for
verdibevis; syntetisk domene (D4) kan ikke bevise besparelser; pilot (M3) = 1×1.
5. **F-INT-5 Kjøringskost er en CFO-beslutning.** Reell skala = 50k1M+ NOK per
signering → kostnadsestimat/simulering FØR kjøring er en produktegenskap, ikke nice-to-have.
### 0.2 Kryssrepo-OKF-inventar (Opus-kartlegging 2026-07-14, komprimert)
| # | Lokasjon | Språk/størrelse | Delmengde |
|---|---|---|---|
| A1 | `portfolio-optimiser/src/portfolio_optimiser/okf.py` | Py, 202 l | les + skriv + validér |
| A2 | `portfolio-optimiser-claude/src/portfolio_optimiser_claude/okf.py` | Py, 134 l | **kun les** (mangler skrive-halvdelen/Steg 8-primitiver) |
| B1 | `ktg-plugin-marketplace/okr/` (lib+scripts `.mjs`) | JS | index-generering + validering |
| B2 | `ktg-plugin-marketplace/linkedin-studio/scripts/brain/` | TS | emit + conformance-test |
| C1 | `claude-code-llm-wiki/tools/wiki_ingest/bundle.py` | Py, 436 l | OKF-produsent (ingest→bundle) |
| C2 | `llm-ingestion-pipeline-security/src/llm_ingestion_guard/okf.py` | Py, 579 l | defensiv validator, **reject-by-default** |
≥4 uavhengige Python-`parse_frontmatter` + 2 i JS. Ingen kopier: A-paret og B-paret er
bevisste spec-ikke-kode-søsken; C1/C2 uavhengige med annet formål. C2 konsolideres IKKE
(motsatt sikkerhetsfilosofi by design). To eksisterende konvergens-beslutninger («del spec,
ikke kode»: marketplace-brief 2026-06-26 + D7) **reverseres bevisst av D-G for den tolerante
kjernen** — operatør-godkjent 2026-07-14. Gjenbruksmal: `llm-ingestion-guard` (pip-pakke,
stdlib-only kjerne, valgfrie adaptere). Terminologi: **Google Open Knowledge Format v0.1**.
---
## 1. D-F — Kunnskapsinnholdsmodell (BESLUTTET)
**Operatør-fasit:**
1. Ny innholdsmodell i delt spec (commons): kunnskapstyper for **tiltaksmønstre,
erfaringsnotater, faglige råd** — alt med påkrevd kildebelegg. Målet: alt fageksperter
har av eksplisitt kunnskap + mest mulig taus kunnskap, erfaringer, råd — «så mye kontekst
som mulig som KAN være relevant», systematisert så det forblir håndterlig.
2. **Kun lesestoff** for AI-forslagsstilleren. Kalkulatorens (validatorens) regler røres
ikke — evt. bibliotek→validator-kobling er en egen framtidig beslutning.
3. **Streng separasjon fra dommene** (ufravikelig): bibliotek flyter via `bundle_context`;
organisasjonens korreksjoner KUN via den gatede ExpeL-folden. Blandes aldri.
4. Delt **dimensjonsbibliotek materialiseres inn** i hver prosjekt-bundle via ingest-mønsteret
(`generated: true`, manifest-ref, re-materialisering eier egne filer) — IKKE
kryssbundle-lenker (navigasjonen forblir flat/same-dir), IKKE manuell duplisering.
5. **Dimensjonskatalog som konfig** (skjema-validert fail-fast: id, label,
allowed_measure_types, allowed_code_prefixes). Rammeverket shipper eksempel-katalog;
deployer eier sin. Biblioteksfiler tagges med eksisterende `dimension:`-frontmatter.
6. **Trinnvis lesing (nytt krav):** sammendrag-først (én linje per kunnskapsfil),
fulltekst hentes ved behov — så basen kan bli stor uten prompt-drukning. Dagens
«render alt navigert» skalerer ikke til ambisjonen.
7. **Shipped eksempel: energi-dimensjonen i tilnærmet realistisk skala** — flere
bygg/prosjekter, 1530 tiltak i biblioteket, **med rådataene** (målinger,
kostnadslinjer, notater som filer/DB-fixtures) så HELE kjeden testes/demonstreres:
rådata → ingest → base → forslag → validering → dom → læring. AI forfatter innholdet
med kildeverifisering (søk-først + provenance; operatør er ikke domeneekspert).
8. Taus kunnskap: biblioteket tar det nedskrivbare; genuint taus kunnskap fanges via
dommene (rationale-prosaen) — det er læringssløyfas eksisterende kanal.
**Innplassering:** beslutning nå; bygging i Fase 3-bolken (etter S2.0/S2.1/S2.5),
koordinert med S3.2 (multi-kandidat, F5). Spec-amendment i commons FØRST (D7-speiling
flagges). Amendment-utkastet skrives i utrullings-økta (§5).
## 2. D-G — OKF: felles modul, fabrikk, evaluator (BESLUTTET)
**Operatør-fasit:**
1. **Standard-kompatibel** («vi må være kompatibel med standarden») — F4/`/`-lenkeformen
må rettes (forsterker D-A pkt. 3). **Egne utvidelser oppå** (innboks-konseptet,
ingest-sikkerhet, evaluator-felt) dokumenteres eksplisitt SOM utvidelser — pensjoneres
hvis standarden senere løser dem.
2. **Felles OKF-kode: JA.** Begge søsknene deler én modul (endrer D7s «from spec
alone»-avgrensning bevisst — formatlaget ligger under det som sammenlignes). Claude-repoet
skal være **minst like godt** som MAF-repoet (operatørens favoritt); delt modul gir det
skrive-halvdelen det mangler i dag (A2).
3. **Eget nytt repo** (tredje signatur-repo, arbeidstittel `okf-toolkit` — operatør
navngir): delt modul (tolerant les/naviger/skriv-kjerne) + **formatprøve**
(conformance-testsett alle konsumenter kjører) + **bundle-evaluatoren** +
**bundle-fabrikken**. Guard-malen: installerbar pakke, avhengighetsfri kjerne,
Forgejo. Potensielt nyttig for alle som tar i bruk Google OKF. Guard forblir eget repo
(sikkerhetskomponent, brukes som avhengighet).
4. **Bundle-fabrikken (viktigst nå, operatør):** bruker slipper filer/mapper i en
**bundle-innboks** → prosessen gjør ALT (strukturerer, oppsummerer, lenker, stempler,
sikkerhetsvasker — standarden + våre utvidelser) → ferdig base som evaluatoren scorer
høyt på alle dimensjoner. **Ærlighets-grense:** fabrikken bruker AI og lever UTENFOR
optimalisererens deterministiske kjøresti; alt merkes maskingenerert; evaluator +
ekspert er kontrollen.
5. **Evaluatoren har to jobber:** (a) teknisk korrekthet (deterministisk: konformitet,
navigerbarhet, lenke-integritet, kildedekning, ferskhet, sikkerhet, sammendragsdisiplin);
(b) **tilstrekkelighet** («omfattende nok til å være nyttig? hva mangler?») —
AI-vurdert med åpne kriterier. (b) er fagekspertens arbeidsliste under oppbygging.
6. **Rekkefølge:** modul + formatprøve først (liten jobb, fjerner 6-steders-duplikasjonen),
fabrikk + evaluator deretter — bygget mot energi-caset (D-F pkt. 7) som første kunde.
## 3. D-H — Oppsett og brukervennlighet (BESLUTTET)
**Operatør-fasit:**
1. **Oppsett gjøres ALLTID av et lite team** av tekniske eksperter + fageksperter sammen
(spesielt MAF-siden er komplisert). Leveransen er en **oppskrift** (dokumentert
team-prosess), IKKE en veiviser. Ærlig forventning i README: en god kunnskapsbase tar
**12 uker dedikert arbeid** — kvaliteten på investeringen avgjør resultatet.
(Onboarding-intervju/B9 og guidet dom-kommando: FORKASTET.)
2. **Fagpersonens grensesnitt er kun:** hva de skal bidra med faglig, hvordan og hvor.
De leverer **filer i egne formater** — aldri skjema/JSON. Evaluatorens
tilstrekkelighets-feedback styrer bidragene.
3. **Dommer:** eksperten leverer fri-format-fil → **fabrikken** AI-oversetter til det
strenge domsformatet (store volum gjør manuell oversettelse urealistisk). Godkjenning i
praksis = **stikkprøver** i generert bundle. Vaktpost: den strukturerte dommen peker
ALLTID på ekspertens originalfil (provenance), så stikkprøven kan sammenligne «hva
eksperten skrev» mot «hva systemet forsto». Dommen er menneskets; AI er oversetter.
4. **Demo-stien:** fersk klon → unzip energi-eksemplet i bundle-innboksen → fabrikken
bygger → hele sløyfa kjører. Demoen er ærlig fordi den viser den reelle prosessen med
ferdig innhold.
5. **Lese-løsning:** Obsidian/VS Code holder først (bundles er ren markdown). Dedikert
lese-visning = senere byggekloss i toolkit-repoet.
## 4. D-I — Verdibevis + kostnadsstyring (BESLUTTET)
**Operatør-fasit:**
1. **Nivå 2 som publiserings-påstand:** «på et realistisk case finner og kvalitetssikrer
systemet reelle besparelses-kandidater» (modellerte tall, ærlig formulert — aldri
salgsspråk over beleggsnivået). **Nivå 3** (ekte referanse/pilot) er uttalt håp —
målgruppen er LinkedIn-nettverket som skal VILLE teste det (generelt problem, åpen
invitasjon). Pilot står åpen; alt bygges klart for den som kommer først (operatør kan
ikke starte internt; krever CFO-signert budsjett).
2. **Verdirapport per kjøring = kjerne** (løftet fra review-forslag 1): hovedbok-basert —
modellert → ekspert-korrigert → realisert per prosjekt/dimensjon, målprogresjon,
**læringseffekt tallfestet** (godkjenningsandel per kjøring; krymper
modellert-vs-forventet-gapet?), og **kost-mot-verdi** («kjøringen kostet X,
identifiserte kvalitetssikret modellert besparelse Y»).
3. **Kostnadssimulering FØR kjøring (MÅ-krav, operatør):** what-if over modell-mappet —
estimert kost for en gitt portefølje-kjøring under ulike **modeller og effortnivåer**,
med dokumenterte kvalitets-avveininger per modellvalg. Ærlighetsregler: prisdata som
konfig (aldri hardkodet; verifiseres mot leverandørpriser med kilde+dato);
kvalitetsutsagn merkes som veiledning med kilde, aldri som målt fakta uten belegg.
Adopsjonssti dokumenteres: start liten (én dimensjon, ett prosjekt, lavt tak) → eskaler
med tilliten. Kobler til S3.4/S3.5 (kost på tvers) og M1/M2.
## 5. Innplassering i planverket (apply-liste — status 2026-07-15: pkt. 1, 2, 4 UTFØRT; pkt. 3 = utkast skrevet, venter operatør-godkjenning; pkt. 56 uendret)
1. **Sesjonsplanen** (`2026-07-10-sesjonsplan-fase2-6.md`): nye §2-oppføringer D-FD-I med
status BESLUTTET (fasit her); nye sesjoner skisseres: S3.5+ *bibliotek/innholdsmodell*
(etter commons-amendment; koordinert S3.2), S3.x *kostnadssimulering* (S3.4-familien),
S5.x *verdirapport* (etter S2.1-outbox + ledger), S5.3 utvides med oppskrift-dok;
avhengighetsgraf + sekvens oppdateres. **S2.0/S2.1/S2.5 forblir uendret byggbare.**
2. **Roadmapen** (`2026-07-06-reell-kjoring-analyse-plan.md`): revisjonsblokk 2026-07-14
(D-FD-I + F-INT-funnene).
3. **Commons** (egen økt, PULL-ONLY): amendment-utkast for innholdsmodellen (D-F pkt. 16)
+ utvidelses-policy (D-G pkt. 1) — operatør godkjenner utkastet FØR commons-commit;
D7-søsken-speiling flagges.
4. **Toolkit-repo:** egen brief + repo-init (utenfor dette repoets sesjonskø; blokkerer
fabrikk-avhengige deler av D-F/D-H).
5. **README:** oppdateres først når nivå-2-beviset finnes (D-I pkt. 1 — ingen påstander før
belegg).
6. Frosne dokumenter røres KUN via pkt. 3-regimet. D-A/D-B-køen står uendret (D-A pkt. 3
får forsterket begrunnelse fra D-G).
## 6. Verifisering (pakkas egne kriterier)
- Hver D-beslutning over har: operatør-fasit + belegg/kobling til eksisterende funn-ID-er. ✅
- Utrullings-økta er ferdig når: sesjonsplanen viser D-FD-I + nye sesjoner med
TDD/detach-punkt per husregel; roadmapen har revisjonsblokk; commons-amendment-utkast
foreligger til operatør-godkjenning; toolkit-brief foreligger. Testbart: `grep -n "D-F"
docs/plan/2026-07-10-sesjonsplan-fase2-6.md` treffer; full suite fortsatt grønn (ingen
kodeendring i denne pakka).
- Nøkkelantakelse å teste i utrullings-økta: trinnvis-lesing-kravet (D-F pkt. 6) kan
spesifiseres uten å bryte method-spec §3 Steg 1s render-kontrakt — hvis ikke, er det
del av commons-amendmenten (flagges eksplisitt).