portfolio-optimiser/.claude/projects/2026-07-03-s11-sammenligning-rapport/brief.md

181 lines
8.4 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.

---
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.