portfolio-optimiser-claude/docs/2026-07-16-beslutningsbrief.md
Kjell Tore Guttormsen 8d5554ba3f docs(portfolio): spec-gap §7 i operatør-køen + paritetsrad 24/25 rettet
Coord-runde 2026-07-25, ingen kodeendring (gate urørt: 603 passed, ruff+mypy rene).

- brief §7: projeksjons-kontrakten over hovedboken som spec-gap, meldt uavhengig
  fra BEGGE stacker. MAF-søskenets ordlyd bevart verbatim; våre tre skjønnsvalg
  målt mot kode (runding av kronebeløp: ingen hos oss, én hos dem — reell
  divergens på identiske inndata). Anbefalt inn i D-A-bolken.
- paritetsplan rad 24/25: STALE «Gjenstår i MAF» rettet etter at MAF eksplisitt
  frigav vårt planverk. Rad 25 merket «hash ikke oppgitt — spurt» framfor antatt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MQu2xxwedckjU56byu1aUG
2026-07-25 07:41:52 +02:00

157 lines
9.7 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.

# Beslutningsbrief til operatøren — hva som venter på deg, og hva det låser opp her (2026-07-16)
> Skrevet i klarspråk, uten funn-ID-er i selve spørsmålene (ID-er kun i fotnoter).
> Beslutningene tas i HOVEDREPOETS delte kø — ingenting under besluttes i dette repoet.
> Kontekst: operatør-mandatet 2026-07-16 er full paritet med MAF-repoet; den nye
> [sesjonsplanen](2026-07-16-sesjonsplan-paritet.md) planlegger rundt gatene under, aldri
> forbi dem. Alt ugatet arbeid (16 sesjoner) kan kjøres uavhengig av alle punktene her.
## 1. Spec-rettelsene i regelverket (den delte «D-A»-bolken)
**Hva det gjelder:** Fire kjente svakheter i det delte regelverket begge søsken bygger fra:
(1) validatoren har en beregnet «maksimalt gjennomførbar besparelse»-grense som aldri
håndheves, og modellen forfatter selv usikkerhetsbåndene som kan blåse den; (2) det finnes
ingen forankring mot prosjektets faktiske kostlinjer, så oppdiktede kostlinjer kan passere
validering; (3) lenkeformen med ledende skråstrek, som standardformatet anbefaler, hoppes over
i stedet for å forstås; (4) læringslageret nøkler alle dommer i en bundle på ett og samme
kandidat-tiltak, så dommer om ulike tiltak blandes.
**Hva det låser opp her:** fire ferdig-spesifiserte byggesesjoner med kjørte moteksempler som
test-fixtures.¹ Rettelse (2) er i tillegg et absolutt krav FØR en eventuell ny live-kjøring.
**Anbefaling:** godkjenn alle fire som én bolk. Kompatibiliteten er ferdig verifisert på denne
siden: regel-strammingen (1) bryter verken fasit-eksemplet eller noen eksisterende testdata.
Etter godkjenning: rettelsene skrives i fellesrepoet, BEGGE søsken henter dem, og BEGGE
testsuiter kjøres — aldri én side alene.
**Ta samtidig stilling til en kollisjon vi har flagget:** planen for semantisk henting (egen
beslutning, se pkt. 5) står i dag i direkte konflikt med regelverkets frosne krav om at
likhets-rangering aldri skal bygge på overflatetekst. Enten må regelverket bevisst amenderes
på det punktet (som del av denne bolken), eller så må semantisk henting re-scopes til å bygge
på strukturelle kjennetegn alene.² **Anbefaling:** re-scoping — det bevarer det frosne
prinsippet og er implementerbart uten regelendring.
## 2. Innholdsmodell-amendmenten (kunnskapsbibliotek + dimensjonskatalog)
**Hva det gjelder:** Utkastet fra 14. juli (ligger klart i hovedrepoet³) som gir regelverket
et kildebelagt kunnskapsbibliotek (tiltaksmønstre/erfaringsnotater/faglige råd), en
dimensjonskatalog som konfig, og «sammendrag først»-lesing så biblioteket kan vokse uten å
drukne prompten. Venter kun på din godkjenning av teksten.
**Hva det låser opp her:** hele bibliotek-/katalog-sesjonen i dette repoet (K13 i den nye
planen) — som også er dette repoets eneste planlagte kilde til dimensjons-begrepet, som igjen
gir ruting og scoping full verdi. Tilsvarende sesjon på MAF-siden (S3.5) venter på det samme.
**Anbefaling:** godkjenn utkastet. Det er konstruert for å holde begge repoenes
spec-integritetsvakter grønne, og fasit-eksemplene endres ikke. Merk at dette repoets egen
spec-vakt bygges i første ugatede sesjon (C1.1) med samme robusthet, så amendmenten kan landes
før eller etter den — rekkefølgen er likegyldig.
## 3. Verktøykasse-repoet (okf-toolkit)
**Hva det gjelder:** Besluttet 14. juli: felles formatverktøykasse i eget repo. Repoet finnes
ennå ikke (verifisert i dag), og briefens fire åpne spørsmål venter på deg: endelig navn,
lisens (MIT-presedens), publiseringsrekkefølge (kjerne først?), og bekreftelse på eget
Forgejo-repo.⁴
**Hva det låser opp her:** skrive-halvdelen av formatlaget, som dette repoet mangler og
MAF-repoet har — selve hovedgevinsten i «minst like godt»-mandatet ditt. Adopsjonssesjonen
(K20) er planlagt og venter kun på at verktøykassa finnes og at du godkjenner koordinert
migrering i begge søsken samtidig.
**Anbefaling:** svar på de fire spørsmålene og kjør repo-init-prompten i briefen. Inntil da
er skrive-halvdelen udekket her, og skråstrek-lenkerettelsen (pkt. 1.3) bygges lokalt med en
eksplisitt merknad om senere flytting inn i verktøykassa.
## 4. Omfanget for ekte datakilder (den delte «D-B»-beslutningen)
**Hva det gjelder:** Om (og hvordan) ingest-laget skal utvides mot virkeligheten:
MCP-kildefamilie, PDF-dokumentkilde, og http/live-kilde med herding — som i dag er bevisst
avvist i begge søsken og krever en bevisst amendment av det frosne ingest-målbildet.
**Hva det låser opp her:** tre konnektor-sesjoner (K14K16). Merk endringen fra forrige plan:
paritetsmandatet ditt betyr at disse nå SKAL speiles her når beslutningen lander — den gamle
planens «ingen HTTP/MCP-økt i dette repoet» er opphevet. Sikkerhetsvakten
(llm-ingestion-guard) wires inn i samme økt som http-kilden — det er dens hovedplass.⁵
**Anbefaling:** som MAF-planens anbefaling (nedskop til mock-herding nå; SQL som første
live-kilde senere) — men med eksplisitt tillegg om at amendmenten skrives felles så begge
søsken bygger samme kildefamilier.
## 5. De øvrige delte beslutningene (vektor-lager, samtidighet, mål/paritet)
**Hva det gjelder / låser opp her:**
- **Vektor-lager** (semantisk henting): låser opp K17 her — MEN se kollisjonen i pkt. 1.
- **Samtidighet/feilmodell:** låser opp K18/K19 her (parallell porteføljekjøring +
kostnadsstyring på tvers). Blir først aktuelt etter at porteføljefundamentet (K1K3, ugatet)
er bygget — ingen hast fra dette repoets side.
- **Mål-semantikk + stack-paritet for ekte kjøring:** låser opp prosentmål-delen av
målkontrakten her, og avgjør om dette repoet i det hele tatt skal kjøre live igjen
(M2-analogen). Uten den beslutningen bygges alt live-forberedende (estimat, preflight,
drill) ferdig offline — og stopper der.
**Anbefaling:** ingen hast på noen av disse tre fra dette repoets side; ta dem når MAF-løpet
trenger dem. Kun koblingen i pkt. 1 (semantisk henting vs. frossen rangeringsregel) bør tas
NÅ, fordi den hører hjemme i samme bolk som spec-rettelsene.
## 6. NYTT beslutningsbehov avdekket av paritetsplanen (foreslås inn i den delte køen)
**Hva det gjelder:** Paritetsplanen gir dette repoet en besparelses-hovedbok, målkontrakt og
outbox (K1/K5) som MAF allerede har — men formatene er i dag stack-lokale på begge sider.
Skal de to søsknenes hovedbok-/outbox-artefakter være SAMMENLIGNBARE på filnivå (delt format i
fellesrepoet), eller holder det at kapabiliteten er lik mens formatene divergerer?
**Hvorfor det er ditt valg:** delt format krever en commons-amendment (mer koordinering, men
direkte sammenlignbare kjøringsartefakter til sammenligningsprotokollen og verdirapporten);
stack-lokalt er raskere og kan konvergeres senere via verktøykasse-repoet.
**Anbefaling:** stack-lokalt NÅ (K1/K5 bygger uten å vente), med eksplisitt
konvergens-vurdering når verktøykassa (pkt. 3) og verdirapportene på begge sider finnes.
Foreslås protokollert som nytt punkt i den delte køen i hovedrepoet — ikke besluttet her.
## 7. SPEC-GAP: projeksjons-kontrakten over hovedboken (meldt uavhengig fra BEGGE stacker)
**Hva det gjelder:** Verdirapporten (K11 her, S5.4 i MAF) er en projeksjon over hovedbok +
outbox + kostestimat. Spec-en sier hva hovedboken INNEHOLDER, men ikke hva en projeksjon over
den må GARANTERE. Begge søsken traff samme hull uavhengig, samme døgn, og måtte ta samme tre
skjønnsvalg — som en spec-tro implementasjon kunne avgjort motsatt. MAF-søskenets ordlyd,
bevart verbatim (coord 2026-07-25T05:09:23Z):
> - Rounding and units in a derived monetary figure: where rounding happens (per row vs on
> the total) is unspecified, and the two give different totals. We picked one.
> - Whether a run with zero qualifying rows produces an empty report or no report at all.
> - Whether the report is a pure projection or may restate provenance fields; we kept it
> pure, but nothing in the spec forces that.
**Ikke gapet:** selve FORM-sjekken av hovedboken. Den finnes på begge sider (gyldig-JSON-men-
feil-shape avvises fail-fast, `valuereport.py:292-297`) — gapet er kontrakten som sitter OVER
den.
**Våre valg, målt mot kode (så divergensen er etterprøvbar, ikke antatt):**
- **Runding:** kronebeløp rundes IKKE i det hele tatt; kun deriverte andeler, til 6 siffer
(`_SHARE_DIGITS`, `valuereport.py:61`). MAF rundet et monetært beløp — reell divergens på
et punkt spec-en ikke uttaler seg om.
- **Null kvalifiserende rader:** rapport produseres ALLTID; hver ekspert-figur står UMERKET
(`None`), aldri en null som ser dømt ut (`valuereport.py:310-328`).
- **Renhet:** payloaden restater ingen provenance-felt (`report_payload`, `valuereport.py:427`)
— samme valg som MAF, men intet i spec-en tvinger det.
**Hvorfor det er ditt valg:** rettelsen hører i det delte regelverket (commons), ikke i to
lokale rapporter. Uten den er «samme kapabilitet» på papiret forenlig med ulike totaler på
identiske inndata — nøyaktig det sammenligningsprotokollen skal måle.
**Anbefaling:** legg punktet i D-A-bolken (samme mal: amendment i commons → koordinert
subtree-pull i BEGGE repo → begge suiter). Ingen av søsknene retter ensidig. Meldt hit fra
begge stacker uavhengig, ikke som ett repos preferanse.
---
**Fotnoter (pekere for etterprøving):**
¹ D-A pkt. 14 ↔ funn C-F2/C-F3/C-F4/C-F5 (`review-2026-07.md` §1) → sesjonene
C2.7/C4.0/C2.8/C3.2 (`2026-07-16-sesjonsplan-paritet.md` §4).
² C-P1 (`review-2026-07.md` §1) — method-spec §3 Steg 1 «structural, never textual» vs
MAF-planens S3.1/D-C.
³ `portfolio-optimiser/docs/plan/2026-07-14-commons-amendment-utkast.md` (§5.2 flagger
D7-speilingen eksplisitt).
`portfolio-optimiser/docs/plan/2026-07-14-toolkit-repo-brief.md` §8.
`docs/2026-07-16-llm-ingestion-guard-plan.md` §4 G1; K16 i den nye sesjonsplanen.