--- type: trekbrief brief_version: "2.2" created: 2026-07-03 task: "S11 — Sammenligningen + rapport: begge stacker målt på pinned commons-ref etter S3-protokollen; norsk forretningsrapport med verifiseringslogg" slug: s11-sammenligning-rapport project_dir: .claude/projects/2026-07-03-s11-sammenligning-rapport/ research_topics: 0 research_status: skipped auto_research: false interview_turns: 11 source: interview framing: preserve phase_signals: - phase: research effort: high model: fable - phase: plan effort: high model: fable - phase: execute effort: high model: fable - phase: review effort: high model: fable --- # Task: S11 — Sammenligningen + rapport (program-leveransen) > Generated by `/trekbrief` on 2026-07-03. > This brief is the contract between requirements and planning. `/trekplan` > reads it to produce the implementation plan. Every decision in the plan must > trace back to content in this brief. ## TL;DR S11 er sesjonsplanens neste steg, uendret (framing: preserve): mål begge stacker (MAF her + Claude SDK-søskenet) på identisk pinned commons-ref `db86e15` etter den forhåndsbundne S3-protokollen (M1–M4), sammenstill med S10-artefaktene i søskenets `runs/s10/`, og skriv én norsk forretningsrapport med verifiseringslogg der hver tallpåstand har reproduserende kommando/kilde. Ingen kode-endringer i noen stack. ## Intent S11 er program-SLUTTLEVERANSEN (målbilde §1): en rettferdig sammenligning av to uavhengige implementasjoner av samme metode — MAF-stacken i dette repoet og Claude Agent SDK-søskenet i `~/repos/portfolio-optimiser-claude` — på identisk delt kjerne. Resultatet dokumenteres i en norsk forretningsrapport som operatøren kan dele. Troverdigheten hviler på to ting: målestokken (sammenligningsprotokollen fra S3) ble definert FØR begge stacker fantes, slik at ingen stack kunne forme metrikken etter eget resultat, og hver tallpåstand i rapporten bærer sin egen reproduserende kommando/kilde (verifiseringslogg). Operatøren lever av tillit; rapporten må derfor være nøktern, uten salgsspråk, og aldri påstå mer enn bevisene bærer. ## Goal Når S11 er ferdig finnes én norsk forretningsrapport i dette repoet (`docs/rapport/2026-07-03-sammenligningsrapport.md`) som måler begge stacker på pinned commons-ref `db86e15` etter protokollens fire metrikker (M1 validator-samsvar mot golden, M2 konvergens/runder, M3 tokenforbruk mot tak, M4 kvalitativ vurdering), gjengir liveness-asymmetri-erklæringen ordrett, sammenstiller S10-artefaktene fra søskenets `runs/s10/` (kun Claude-siden merket som live-observasjon), og har en verifiseringslogg der HVER tallpåstand peker på kommandoen/kilden som reproduserer den. Begge repo er verifisert grønne (pytest + ruff + mypy) på pinned ref som del av økta, og MAF offline-sim + D7 offline-speil er kjørt på samme ref som tallkilde for M1–M3 (offline-kategorien). ## Non-Goals - **Ingen re-kjøring av S10.** Artefaktene i `runs/s10/` er fasit (protokoll §4.2/§4.5); re-kjøring er kun tillatt ved teknisk transportfeil, som ikke foreligger — kjøringen lyktes 2026-07-03. - **Ingen S12-/release-arbeid** (LICENSE, `[project.scripts]`, CHANGELOG-polering) — gated på operatør-enighet, egen økt. - **Ingen endringer i delt kjerne/commons og ingen re-pinning** — `db86e15` står. (Endres kjernen måtte begge sider re-pinnes og re-kjøres; det gjør vi ikke.) - **Ingen nye features eller refaktorering i noen av stackene** — S11 måler det som ER. - **Ingen statistiske påstander om modellatferd** — S10 er én kjøring; den beviser eksistens, ikke tendens (protokoll §4.1). ## Constraints - **Protokollen er normativ og fryst i økta:** `docs/plan/2026-07-03-sammenligningsprotokoll.md` kan ikke justeres under S11 — endring ville ugyldiggjøre «definert før begge stacker»-premisset som bærer rapportens troverdighet. - **Kostnadsdisiplin D6:** alt i S11 kjøres offline; null API-spend. - **Språk:** rapporten er norsk (forretningsdokument, jf. dokumentspråk-preferansen); kode, kommandoer og filnavn i verifiseringsloggen er engelsk som de er. - **Kategori-disiplin (protokoll §2):** M2/M3-tall fra offline-kjøringer sammenlignes KUN med offline-tall på motparten; kryss-kategori-sammenligning (offline vs live) er forbudt i rapporten. - **Skrivearbeid skjer i DETTE repoet.** Søskenrepoet er read-only i S11; eneste unntak er STATE.md-oppdatering der ved sesjonslutt (local-only fil). - **Push til Forgejo per driftsmodellen.** Push-frysen fra 2026-07-03 er observert opphevet (søskenets S10-commits er pushet; Forgejo 15.0.3 oppe) — dette repoets stale STATE.md korrigeres ved sesjonslutt. ## Preferences - Rapport plasseres under `docs/rapport/` i dette repoet (ny katalog er akseptabelt). - Metrikk-tall i tabellform; begrunnelse og tolkning i prosa rundt tabellene. - Nøkternt språk uten superlativer — «fullt ut», «uten unntak» o.l. er røde flagg (verifiseringsplikten). ## Non-Functional Requirements - **Reproducerbarhet:** hver M1–M3-tallrad i verifiseringsloggen skal kunne kjøres på nytt av en leser med begge repo klonet, og gi samme tall (deterministisk kjerne + fangede artefakter). - **Ærlighet:** ingen påstand i rapporten (eller i README/STATE etterpå) skal påstå mer enn koden/bevisene gjør — spesielt ingen antydning om live-atferd på MAF-siden. ## Success Criteria - **SC1 — Rapport med ordrett erklæring:** `docs/rapport/2026-07-03-sammenligningsrapport.md` finnes, og liveness-asymmetri-erklæringen fra protokoll §3 gjengis ordrett — verifiserbart ved at blokksitatets tekst diff-er tomt mot protokollens §3-blokk. - **SC2 — Begge repo grønne på pinned ref:** `uv run pytest`, `uv run ruff check .` og `uv run mypy src` avslutter alle med exit 0 i BEGGE repo, og commons-ref er verifisert identisk på begge sider (subtree-commits fra `db86e15` — `git log --grep="db86e15"` viser squash-committen i begge). - **SC3 — Offline-kjøringer utført på pinned ref:** MAF offline-sim (`uv run python -m portfolio_optimiser.simulation`) og søskenets D7 offline-speil er kjørt i økta; M1–M3-tallene i rapporten stammer fra disse kjøringene og fra de committede S10-artefaktene (`runs/s10/*.json`) — aldri fra hukommelse. - **SC4 — Verifiseringslogg komplett:** hver tallpåstand i rapporten har en rad i verifiseringsloggen med reproduserende kommando/kilde; stikkprøve: hver M1–M3-rad kan kjøres på nytt og gir samme tall. - **SC5 — Kategori- og liveness-disiplin:** rapporten inneholder ingen påstand om live-atferd på MAF-siden og ingen kryss-kategori-sammenligning — kontrollert eksplisitt mot protokoll §2/§4 i review-fasen. ## Research Plan No external research needed — the codebase and this brief contain sufficient context for planning. (Alle kilder er lokale og committet: begge repo, protokollen, sesjonsplanen §S11, `shared/method-spec.md`, S10-artefaktene i søskenets `runs/s10/`. Lokal kodeoppdagelse — f.eks. nøyaktig invokasjon av D7-offline-speilet i søskenrepoet — håndteres av /trekplan-utforskningen.) ## Open Questions / Assumptions - **[ASSUMPTION] «D7 offline-speil»** antas å være søskenrepoets offline to-runs-bevis (sim-ekvivalenten fra S9-laget); eksakt kjørekommando avdekkes i plan-utforskningen av søskenrepoet — den er ikke navngitt i sesjonsplanen. - **[ASSUMPTION] Push-frysen er opphevet** — avledet av at søskenets S10-commits er pushet til Forgejo (0/0 mot origin) og at Forgejo 15.0.3 svarer. Om antakelsen er feil, parkeres push og operatør varsles; commits skjer uansett lokalt. - **[ASSUMPTION] Dette repoets STATE.md er stale** (sier «S6 er neste»); søskenets STATE (S10 fullført, S11 neste, arbeidssted = dette repoet) er autoritativ og lagt til grunn. Korrigeres ved sesjonslutt. ## Prior Attempts None — fresh task. (Målestokken ble bevisst definert i S3, før begge stacker fantes; det er en forutsetning, ikke et tidligere forsøk.) ## Metadata - **Created:** 2026-07-03 - **Interview turns:** 11 - **Auto-research opted in:** no - **Source:** trekbrief interview --- ## How to continue Manual (default): ```bash # No research topics — go straight to plan: /trekplan --project .claude/projects/2026-07-03-s11-sammenligning-rapport/ # Then execute: /trekexecute --project .claude/projects/2026-07-03-s11-sammenligning-rapport/ ``` Auto (opt-in during `/trekbrief`): research and planning run automatically; only execution is manual.