refactor(examples): replace sector-specific example material with generic, fictitious examples
The context sets, the packaged knowledge bases and the example bundles are replaced by one fictitious example set about IT operations in an invented organisation: three context sets (serverrom-2027, driftsavtale-2027 and the two-base drift-og-avtale-2027), two synthetic knowledge bases under src/portfolio_optimiser/data/kunnskapsbaser and two example bundles under src/portfolio_optimiser/data/bundles. Numbers, codes and structural values in tests and fixtures are kept; names, ids and wording change. Dated measurement documents that only recorded runs on the replaced material are deleted. Gate figures measured on the new set are not comparable with earlier ones. The exclusion gate from the previous commit is green: 0 tracked files hit outside the shared/ subtree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
058dd25570
commit
37547fe292
1147 changed files with 24138 additions and 9503 deletions
|
|
@ -7,7 +7,7 @@ står i § 8, og ingen tall er sitert fra `STATE.md`. **Mandat: MÅL, IKKE BYGG.
|
|||
den ucommittede F15-diffen `tests/test_maf_version_guard.py` 28+/15−, som ordren ba meg se og ikke
|
||||
røre, pluss to fremmede utrackede stier).
|
||||
|
||||
**Baseline:** [syretesten 25.08](2026-08-25-syretest-vei-ab.md) ·
|
||||
**Baseline:** syretesten 25.08 (funnene står i [invariant-hovedboken](invarianter.md)) ·
|
||||
[katalogkostnaden 26.08](2026-08-26-katalogkostnaden.md) ·
|
||||
[misjonsreview 25.08](2026-08-25-fable-misjonsreview.md). Golden `demo-transcript.stdout`
|
||||
**byte-uendret** (`ea8c534773acdbe41ae68f2c55724d69aaf8be4f`, målt `shasum` ved øktstart).
|
||||
|
|
@ -32,7 +32,7 @@ siteres kun frontmatter-NØKLER.
|
|||
| M1 | Åpner navigatøren en base etter `444fea7`? | **Fra CLI-døra: nei, og det KAN den ikke** (konstant tekst per rolle kan ikke emittere et verktøykall). **Fra biblioteket: ja, alle fire verktøy, på alle fire baser.** | CLI: 0 verktøykall, 0 approaches, 1 runde × 4 baser. Bibliotek: `list_bundles`/`read_bundle`/`read_file`/`quick_validate` 1/1/1/1 × 4 baser, 1 rutet approach hver |
|
||||
| M2 | Blir FORSLAGET bedre av `--plan-review revise`, eller bare planen? | **Bare planen — og planen operatøren viser er ULESELIG:** `<agent_framework._types.Message object at 0x…>` på terminalen, i `{run_id}-exploration.json` og i den parkerte `{run_id}-plan-review.json` | Feedback nådde 5 manager-prompts, 0 hypotesiser-prompts; mandat identisk i begge armer; 3 av 4 CLI-artefakter byte-identiske |
|
||||
| M3 | Hvor lander feedback på et LEVERT forslag? | **I NESTE kjøring** (innboks → `VerdictStore` → hypotese-prompt), bevist med kontroll. **Ingen vei til «forbedret forslag i samme kjøring» for et menneske** — kun validatorens egen avvisning sløyfes tilbake | Run B: ekspertteksten i proposerens prompt; kontroll uten innboks: 0. In-run: 1 refinement, 4 proposer-kall |
|
||||
| M4 | Tokenprofil per fase | **Bundle-konteksten re-sendes 3× i debatten og 7× i utforskningen = 73–93 % av alle prompt-tokens.** Ledgeren offline er 8 tok/kall (skriptet) — ekte usage finnes kun fra 14.08 (15 306) | Tunnel: debatt 40 605 tok (93 % kontekst), utforskning 103 649 tok (85 %); tre største poster navngitt i § 4 |
|
||||
| M4 | Tokenprofil per fase | **Bundle-konteksten re-sendes 3× i debatten og 7× i utforskningen = 73–93 % av alle prompt-tokens.** Ledgeren offline er 8 tok/kall (skriptet) — ekte usage finnes kun fra 14.08 (15 306) | Energi-B: debatt 40 605 tok (93 % kontekst), utforskning 103 649 tok (85 %); tre største poster navngitt i § 4 |
|
||||
| M5 | Klar for K2? | **Nei — og det største hullet er ikke `adjudication`:** ingen kode lager `validator-input.json`/`cost-baseline.json` fra et ingestert korpus, og uten dem nekter pipelinen | Produsentens segmenterte v0.2-golden navigeres (3 filer, 0 hopp), `adjudication` leses som streng, 0 konsumenter i `src/` |
|
||||
| M6 | Vises MCP-kallet i provenance? Egress-linjen? | **Ja, begge — målt mot en EKTE stdio-subprosess** (første gang på kjørestien; B4-testen bruker en stand-in) | `Contacts: prisregister (lookup_unit_price)` · `external_calls=[{prisregister, lookup_unit_price}]` i resultat OG outbox · serverens svar i neste prompt |
|
||||
|
||||
|
|
@ -44,9 +44,10 @@ grønne fordi de bare krever `plan != ""`.
|
|||
|
||||
## 1. M1 — `--explore` etter `444fea7`
|
||||
|
||||
**Oppsett.** Fire baser: `shared/examples/{bygg-energi-mikro, veglys-fv-soer, tunnel-hauglia}` +
|
||||
`~/repos/vegnormal-okf/build/B-n200-2024-gren-1-1-importert` (grenbasen katalogmålingen 26.08 brukte;
|
||||
10 filer). Kontrakt: `max_rounds=6, max_tokens=100000, max_stall_count=2, max_reset_count=1,
|
||||
**Oppsett.** Fire baser: `shared/examples/bygg-energi-mikro`, to energi-eksempelbaser som den gang
|
||||
lå i commons (her `energi-a` og `energi-b`; i dag erstattet av de fiktive `klientpark-energi` og
|
||||
`driftssenter-kjoling` — tallene under er målt på de gamle) + én grenbase fra et kravkorpus brukt
|
||||
under utviklingen (her `kravgren-1-1`, grenbasen katalogmålingen 26.08 brukte; 10 filer). Kontrakt: `max_rounds=6, max_tokens=100000, max_stall_count=2, max_reset_count=1,
|
||||
max_plan_revisions=0, enable_plan_review=false`. Instrumentet (§ 8, vedlegg A) teller hvert
|
||||
verktøykall ved å wrappe `FunctionTool.func` ETTER konstruksjon — verktøylisten agentene får er
|
||||
uendret — og hvert modellkall per rolle.
|
||||
|
|
@ -57,9 +58,9 @@ streng per rolle, som er den ENESTE offline-formen CLI-en tilbyr):
|
|||
| Base | rc | Modellkall (manager/proposer/checker) | Verktøykall | Artefakt: runder / `quick_validations` / `tokens_spent` | Notis |
|
||||
|---|---:|---|---:|---|---|
|
||||
| bygg-energi-mikro | 0 | 8 (4/3/1) | **0** | 1 / 0 / 32 | «concluded after 1 round(s); **0 approach(es)**» |
|
||||
| veglys-fv-soer | 0 | 8 (4/3/1) | **0** | 1 / 0 / 32 | samme |
|
||||
| tunnel-hauglia | 0 | 8 (4/3/1) | **0** | 1 / 0 / 32 | samme |
|
||||
| B-n200-2024-gren-1-1 (PROJECT_ID=PROBE) | 1 | 4 (4/0/0) | **0** | 1 / 0 / 32 | utforskningen FULLFØRER, så `run refused: IR projection not found in bundle: 'validator-input.json'`; `m1a-exploration.json` skrevet fra `finally` ✅ |
|
||||
| energi-a | 0 | 8 (4/3/1) | **0** | 1 / 0 / 32 | samme |
|
||||
| energi-b | 0 | 8 (4/3/1) | **0** | 1 / 0 / 32 | samme |
|
||||
| kravgren-1-1 (PROJECT_ID=PROBE) | 1 | 4 (4/0/0) | **0** | 1 / 0 / 32 | utforskningen FULLFØRER, så `run refused: IR projection not found in bundle: 'validator-input.json'`; `m1a-exploration.json` skrevet fra `finally` ✅ |
|
||||
|
||||
To ting er målt her, og de er ulike: (i) `444fea7` lukket krasjen — rc er 0/1 med ren nekt, ingen
|
||||
traceback (4/4); (ii) sløyfa er **vakuøs ved konstruksjon** på denne døra: en `ScriptedChatClient`
|
||||
|
|
@ -80,9 +81,9 @@ tre ledgere navigator→hypothesiser→satisfied):
|
|||
| Base | Verktøykall (`list_bundles`/`read_bundle`/`read_file`/`quick_validate`) | Modellkall (mgr/nav/hyp) | Runder | Approaches (label, `bundle_id`) | `quick_validate`-dom | Navigatørens prompt-tokens per kall |
|
||||
|---|---|---|---:|---|---|---|
|
||||
| bygg | **1/1/1/1** | 12 (6/4/2) | 3 | 1 (`probe-direction-B`, `bygg-energi-mikro`) | validated, **anchored=false**, P10/P50/P90 68 543 / 95 444 / 121 057 | 3 → 144 → 4 031 → 4 783 |
|
||||
| veglys | **1/1/1/1** | 12 (6/4/2) | 3 | 1 (…, `veglys-fv-soer`) | validated, anchored=true | 3 → 122 → 10 553 → 11 869 |
|
||||
| tunnel | **1/1/1/1** | 12 (6/4/2) | 3 | 1 (…, `tunnel-hauglia`) | validated, anchored=true | 3 → 148 → 12 767 → 14 429 |
|
||||
| B-n200-gren-1-1 | **1/1/1/1** | 12 (6/4/2) | 3 | 1 (…, `B-n200-2024-gren-1-1-importert`) | validated, anchored=false, **P10 = P50 = P90 = 300** | 3 → 137 → 2 476 → 3 050 |
|
||||
| energi-a | **1/1/1/1** | 12 (6/4/2) | 3 | 1 (…, `energi-a`) | validated, anchored=true | 3 → 122 → 10 553 → 11 869 |
|
||||
| energi-b | **1/1/1/1** | 12 (6/4/2) | 3 | 1 (…, `energi-b`) | validated, anchored=true | 3 → 148 → 12 767 → 14 429 |
|
||||
| kravgren-1-1 | **1/1/1/1** | 12 (6/4/2) | 3 | 1 (…, `kravgren-1-1`) | validated, anchored=false, **P10 = P50 = P90 = 300** | 3 → 137 → 2 476 → 3 050 |
|
||||
|
||||
Katalogresultatet (`index_excerpt`) står i navigatørens NESTE prompt i 4/4 baser (målt på
|
||||
innholdet, ikke på `.text`). Sømmen bærer altså et verktøykall ende til ende — også mot en
|
||||
|
|
@ -190,23 +191,23 @@ eksempelbundlene; `bundle_context` re-målt i dag til nøyaktig de tallene).
|
|||
| Base | Sum prompt-tok | debatt(proposer) ×2 | debatt(checker) ×1 | utforskning(manager) ×4 | generering ×1 | Kontekst re-sendt |
|
||||
|---|---:|---:|---:|---:|---:|---|
|
||||
| bygg (ctx 3 861) | 14 283 | 7 868 (55 %) | 3 986 (28 %) | 2 243 (16 %) | 186 (1 %) | 3× = **81 %** |
|
||||
| veglys (ctx 10 406) | 34 001 | 20 984 (62 %) | 10 556 (31 %) | 2 243 (7 %) | 218 (1 %) | 3× = **92 %** |
|
||||
| tunnel (ctx 12 595) | 40 605 | 25 376 (62 %) | 12 759 (31 %) | 2 243 (6 %) | 227 (1 %) | 3× = **93 %** |
|
||||
| energi-a (ctx 10 406) | 34 001 | 20 984 (62 %) | 10 556 (31 %) | 2 243 (7 %) | 218 (1 %) | 3× = **92 %** |
|
||||
| energi-b (ctx 12 595) | 40 605 | 25 376 (62 %) | 12 759 (31 %) | 2 243 (6 %) | 227 (1 %) | 3× = **93 %** |
|
||||
|
||||
**Utforskning med verktøykall (bibliotek-armen, M1 B):**
|
||||
|
||||
| Base | Sum prompt-tok | manager-ledger ×3 | hypothesiser ×2 | navigator ×4 | manager-final ×1 | plan+facts ×2 | Kontekst re-sendt |
|
||||
|---|---:|---:|---:|---:|---:|---:|---|
|
||||
| bygg | 36 919 | 12 064 (33 %) | 9 786 (27 %) | 8 961 (24 %) | 5 292 (14 %) | 816 (2 %) | 7× = **73 %** |
|
||||
| veglys | 86 013 | 26 262 (31 %) | 23 984 (28 %) | 22 547 (26 %) | 12 404 (14 %) | 816 (1 %) | 7× = **85 %** |
|
||||
| tunnel | 103 649 | 31 394 (30 %) | 29 116 (28 %) | 27 347 (26 %) | 14 976 (14 %) | 816 (1 %) | 7× = **85 %** |
|
||||
| B-n200-gren (ctx 2 307) | 24 761 | 8 532 (34 %) | 6 254 (25 %) | 5 666 (23 %) | 3 493 (14 %) | 816 (3 %) | 7× = **65 %** |
|
||||
| energi-a | 86 013 | 26 262 (31 %) | 23 984 (28 %) | 22 547 (26 %) | 12 404 (14 %) | 816 (1 %) | 7× = **85 %** |
|
||||
| energi-b | 103 649 | 31 394 (30 %) | 29 116 (28 %) | 27 347 (26 %) | 14 976 (14 %) | 816 (1 %) | 7× = **85 %** |
|
||||
| kravgren-1-1 (ctx 2 307) | 24 761 | 8 532 (34 %) | 6 254 (25 %) | 5 666 (23 %) | 3 493 (14 %) | 816 (3 %) | 7× = **65 %** |
|
||||
|
||||
«Kontekst re-sendt» = antall prompts som inneholder en 160-tegns skive fra midten av
|
||||
`okf.bundle_context(base)` × kontekstens tokens, delt på summen. Én `read_bundle` gjør hele
|
||||
konteksten til et `function_result`, og det resultatet rir med i **hver** senere prompt: navigatørens
|
||||
egne (2), begge hypotesiserens (2, fordi de deler samtalehistorikk), og alle managerens
|
||||
ledger-/final-prompts (3). Hele utforskningen koster **8,2 × kontekststørrelsen** (tunnel:
|
||||
ledger-/final-prompts (3). Hele utforskningen koster **8,2 × kontekststørrelsen** (energi-b:
|
||||
103 649 / 12 595), debatten **3,2 ×**.
|
||||
|
||||
**De tre største postene, navngitt:**
|
||||
|
|
@ -214,7 +215,7 @@ ledger-/final-prompts (3). Hele utforskningen koster **8,2 × kontekststørrelse
|
|||
prompt-tokens (proposer ×2 + checker ×1). Kilde: `workflow.py` GroupChat, konteksten i
|
||||
deltakernes melding, ikke i `instructions` (målt `instructions_chars` 61/307).
|
||||
2. **Managerens progress-ledger-prompts bærer hele samtalen inkl. verktøyresultater** — 3 × 5 766
|
||||
(bygg) / 3 × 15 450 (tunnel) tokens, 30–34 % av utforskningen. MAF-Magentic-atferd
|
||||
(bygg) / 3 × 15 450 (energi-b) tokens, 30–34 % av utforskningen. MAF-Magentic-atferd
|
||||
(`_magentic.py`), ikke vår kode.
|
||||
3. **Hypotesiseren arver navigatørens verktøyresultater** — 2 × 4 795 / 2 × 14 441 tokens, 25–28 %.
|
||||
|
||||
|
|
@ -222,20 +223,20 @@ ledger-/final-prompts (3). Hele utforskningen koster **8,2 × kontekststørrelse
|
|||
|
||||
| Par | Felles prefiks (tok) | Av | Lesning |
|
||||
|---|---:|---|---|
|
||||
| debatt proposer #1 vs #2 (bygg / tunnel) | **3 877 / 12 612** | 3 877 / 12 612 | hele første tur er et re-sendt prefiks (100 %) |
|
||||
| debatt proposer #1 vs #2 (bygg / energi-b) | **3 877 / 12 612** | 3 877 / 12 612 | hele første tur er et re-sendt prefiks (100 %) |
|
||||
| debatt proposer #1 vs checker | 3 877 / 12 612 | 3 986 / 12 759 | 97–99 % delt |
|
||||
| manager ledger #1 vs #2 | 215 | 751 / 5 547 (bygg) | før første verktøyresultat deles nesten ingenting |
|
||||
| manager ledger #2 vs #3 (bygg / tunnel) | **5 010 / 14 656** | 5 766 / 15 450 | 87–95 % delt |
|
||||
| manager ledger #2 vs #3 (bygg / energi-b) | **5 010 / 14 656** | 5 766 / 15 450 | 87–95 % delt |
|
||||
| hypothesiser #1 vs #2 | 4 795 / 14 441 | 9 786 / 29 116 | 49–50 % |
|
||||
|
||||
Anslag, per base tunnel: **leverandør-prefiks-caching** (uendret kode, bare byte-stabile prefikser,
|
||||
Anslag, for energi-b: **leverandør-prefiks-caching** (uendret kode, bare byte-stabile prefikser,
|
||||
som allerede er tilfellet) kunne treffe ≈ 2 av 3 kontekstkopier i debatten (≈ 25 200 av 40 605 =
|
||||
62 %) og ≈ 2 av 3 ledger-kopier i utforskningen (≈ 29 300 av 103 649 = 28 %); hypotesiserens
|
||||
andre kall ≈ 14 400 (14 %). Samlet ≈ **40 % av utforskningen og ≈ 60 % av debatten** er
|
||||
prefiks-cachebart i dag. **Kontekstbudsjett** virker på multiplikatorens grunntall: et tak på
|
||||
`read_bundle` av samme form som katalogtaket (`_CATALOGUE_EXCERPT_CHARS`) — f.eks. konseptliste +
|
||||
`read_file` per konsept i stedet for hele `bundle_context` — kutter alle 7 kopiene samtidig; ved
|
||||
tunnel er hver kopi 12 595 tokens. **Ikke målt her:** hva en levende manager faktisk kaller og hvor
|
||||
energi-b er hver kopi 12 595 tokens. **Ikke målt her:** hva en levende manager faktisk kaller og hvor
|
||||
mange runder den bruker; tallene over er én navigatør-tur + én hypotesiser-tur.
|
||||
|
||||
## 5. M5 — klar for K2?
|
||||
|
|
@ -373,7 +374,7 @@ prefiks-cachebart som koden står, resten krever et kontekstbudsjett på `read_b
|
|||
> med i; (2) bygg `read_bundle` om til samme form som katalogen: konseptliste (`name`, `type`,
|
||||
> `title`, lengde) med `read_file` som neste trinn, tak i TESTEN ikke i koden
|
||||
> (`test_catalogue_cost_loadbearing.py`-formen); (3) gate: `tests/test_read_bundle_cost_loadbearing.py`
|
||||
> — `read_bundle` over tunnel-basen < 1 500 o200k-tokens, kontroll at én konseptfil alene sprenger
|
||||
> — `read_bundle` over energi-b-basen < 1 500 o200k-tokens, kontroll at én konseptfil alene sprenger
|
||||
> taket, og at `read_file` fortsatt gir hele fila. **Ikke utløs:** `okf.bundle_context` selv (den
|
||||
> bærer debattens kontekst og goldenene), nav-goldenene, `run.py`. Debattens 3× er GroupChat-formen
|
||||
> og en egen beslutning (kontekst i `instructions` vs melding endrer ikke tokens, bare cache-treff).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue