docs(s11): brief + plan for S11 sammenligningen — trippel-reviewet, klar for exec

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AaQCFnfsh3tfq1VfzdJpoi
This commit is contained in:
Kjell Tore Guttormsen 2026-07-03 12:28:06 +02:00
commit 695c7590b5
2 changed files with 624 additions and 0 deletions

View file

@ -0,0 +1,181 @@
---
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.