# Syretest S7c — hele kjeden på fikset kunnskapsbase, med begge låser åpnet, mot en LEVENDE modell **Dato:** 2026-09-08 · **Ordre:** `20260908T033950Z-4303132405-from-.claude` · **Grunnlag:** `docs/2026-09-07-syretest-s7-prepass-k2.md` (S7 — levende modell leste kuttet, men kuttet holdt tilbake prisskjemaet), `docs/2026-09-07-prepass-mater-q5b-k2.md` (B tapte, A er default), og produsentens to målinger `llm-ingestion-okf docs/2026-09-08-blindsone-below-k-k2.md` (`4c699fd`) + `docs/2026-09-08-blindsone-laas2-budsjett-k2.md` (`6776c37`). Dette er en **måling**. Ingen produksjonskode er endret; hele måleoppsettet ligger utenfor treet (`scratchpad/s7c/`, utracket), og hver tabell under er produsert av en kommando som står i teksten. Fem funn og tre felte premisser er **rapportert, ikke fikset** — det er ordrens egen regel. --- ## 0. Hva som ER målt, og hva som IKKE er det **Målt her:** at hele kjeden — råkorpus → `okf build` på produsentens HEAD → pre-pass → deklarert kutt → LEVENDE modell → deterministisk validator → artefakter — går ende til ende for et **mandat-formet** spørsmål, i to armer som er identiske bortsett fra hvilket payload de fikk. Målt er også hva den dyre halvdelen kjøper: om modellen faktisk **brukte** prisskjemaet når begge låser er åpnet og bytene ligger i prompten. **IKKE målt:** at en modell dømmer **bedre** med det åpne kuttet. To kjøringer på ett manus er ikke et utvalg; armene endte ulikt (validert mot avvist) av grunner som ikke er isolert her. Samme klasse som structured-output-grensen. Heller ikke målt: at `sha256-tree` dekker hele treet (vi verifiserer de leverte dokumentene), at prisene i K2 er ekte (skjemaet er **ikke** fylt ut — se § 5), eller at leverandørens caching traff prefiksene. **Kjent-positiv, kjørt FØRST og assertert i hvert måleskript** (`p_measure.py`, `live_s7c.py` `assert`-er og nekter å kjøre videre): rotnivå-listingen på **levert** K2 måler **3 954 tegn / 1 495 o200k-tokens over 629 konseptfiler** — S7a-3s publiserte tall, eksakt. **To uavhengige kjent-positive til, mot produsentens egne tall, FØR noe ble betalt:** `62 149` og `58 401` o200k-tokens er begge reprodusert til tokenet (§ 2), og den nye `sha256-tree`-refen `f14872a0…` er den samme som produsenten publiserte. --- ## 1. Bundelen: bygget på okf HEAD, og hva den er identisk med ```bash cd ~/repos/llm-ingestion-okf && git rev-parse --short HEAD # 6776c37 (rent tre) uv run okf build ~/corpora/okf-telling-20260829/K2/trinn1 \ --bundle /k2-bundle-s7c \ --bundle-id k2-trinn1-20260903 --okf-version 0.2 \ --ingested-at 2026-09-03T00:00:00Z --report /build-report.json ``` **Premiss felt før noe ble kjørt:** ordrens steg-1-kommando utelater `--bundle-id` og `--okf-version`. `okf build --help` sier at begge er **påkrevd med mindre `--segments off`**, så kommandoen slik den står i ordren kan ikke kjøres. S7s verdier er brukt, ellers ville diffen mot den leverte basen målt to ting samtidig. | Egenskap | Målt | |---|---| | Døra (bevaringsidentiteten) | `merged + coded rejections = 43; N = 43` ✔ | | — extracted / gated / persisted | 39 / 39 / 39 av 43 | | — substantive / degenerate / rejected | **39 / 0 / 4** | | — avvisningskoder | `extractor_empty_pdf` 1, `extractor_unknown` 3 | | Konverterer | pandoc **3.9** (pinnet, `pypandoc`-bundlet) | | Veggklokke, okf sin egen rapport | **789,20 s** total, 18,353 s per fil | | Veggklokke, målt i skallet (start → `rc`) | **2 351 s** — differansen er ikke oppløst her | | `ref` (`sha256-tree`) | `sha256-tree:f14872a01104e47474093611b1960c6c541e4701dc40147a00c8e1b337c8a92a` | | `bundle_id` / opphav | `k2-trinn1-20260903` / **`declared-index`** | | Ufulgte kryss-lenker (`skipped`) | **0** | | Filer totalt (`files`) | 1 108 | | Konsepter, **okf sin nevner** (`considered`) | **629** | | Konsepter, **po sin navigasjon** (`context_files`) | **630** — se funn 2 | ### Diffen mot `K2-bundle-20260903` er ÉN linje ```bash diff -r /k2-bundle-s7c ~/corpora/okf-telling-20260829/K2-bundle-20260903 # exit 1 — 1 fil skiller seg, 3 diff-linjer, 0 "Only in" 45d44 < - [Corpus run history](log.md) ``` **F1 er reelt fikset.** S7 målte at `--ingested-at` nådde **11 av 629** konsepter; her bærer **629 av 629** `ingested_at: 2026-09-03T00:00:00Z` (`grep -rh "^ingested_at:" | sort | uniq -c`). Alle 629 konseptfiler er byte-identiske med den leverte basen. **F2 er fikset på KONSUMENTSIDEN, ikke i bundelen.** Lenken `- [Corpus run history](log.md)` står fortsatt i rot-`index.md`; produsentens eget pre-pass ekskluderer den (`considered` = 629), mens po sin `navigate_bundle` følger kryss-lenker og teller **630** — `log.md` ER i `context_files`. Den leverte basen har verken lenken eller dokumentet i navigasjonen (629). Se funn 2. --- ## 2. To payloads på samme base og samme spørsmål — og ordrens kjent-positiv var feilparet Spørsmålet er ORDRETT S7as og S7s mandat-spørsmål: `Finn kostnadsbesparelser i Stange skole-anbudet`. ```bash # P-default (som S7: k=8, default limit, ingen flagg) uv run python tools/okf_consume.py --question "" --out payload-default.json # P-åpen (begge låser) uv run python tools/okf_consume.py --question "" \ --cost-vocabulary --k 12 --limit 160000 --out payload-open.json # den tredje konfigurasjonen, kjørt for å avgjøre hva 58 401 er uv run python tools/okf_consume.py --question "" \ --cost-vocabulary --k 12 --limit 120000 --out payload-okf-defaultlimit.json uv run python tools/okf_contract_check.py --skill skills/okf-consume/SKILL.md --payload ``` | | **P-default** (flaggløs) | **P-åpen** (begge låser) | okf sin «default limit» | |---|---|---|---| | flagg | ingen | `--cost-vocabulary --k 12 --limit 160000` | `--cost-vocabulary --k 12 --limit 120000` | | considered / withheld / delivered | 629 / 621 / **8** | 629 / 617 / **12** | 629 / 618 / 11 | | identiteten lukker | ✔ | ✔ | ✔ | | `below_k` | 261 | 267 | 266 | | `no_lexical_match` | 358 | 349 | 349 | | `over_budget_alone` | 2 | 1 | 2 | | `over_budget_after_knapsack` | — | — | **1** | | budsjett brukt / tak (B) | 79 440 / 120 000 | **150 249** / 160 000 | 82 399 / 120 000 | | payload på disk (B) | 169 583 | 240 021 | 172 246 | | **payload, o200k-tokens** | **57 289** | **62 149** | **58 401** | | kontraktsjekk | **exit 0** (14 regler, 8 utdrag, 621 tilbakeholdt) | **exit 0** (14 / 12 / 617) | **exit 0** (14 / 11 / 618) | | **prisskjemaet** | `below_k` | **LEVERT, rang 10 av 12** | `over_budget_after_knapsack` | | rendering debatten ser (`render_context`) | 75 341 tegn / **22 284** tok | 145 237 tegn / **26 936** tok | — | **Premiss felt: ordrens kjent-positiv paret to tall som ikke hører sammen.** Ordren ber om at «58 401 / 62 149» reproduseres for henholdsvis P-default og P-åpen. `62 149` reproduseres eksakt. `58 401` gjør det **ikke** for den flaggløse defaulten — den måler **57 289**. okf-meldingens egen ordlyd er «the same run at the default limit», altså `--cost-vocabulary --k 12 --limit 120000`, og den konfigurasjonen måler **58 401 eksakt**. Begge produsent-tallene er altså reprodusert; det var parringen som var feil, ikke tallene. **Konsekvensen for operatørens beslutning er ikke kosmetisk.** Prisen på prisskjemaet er `+6,4 %` bare målt mot den tredje konfigurasjonen. Mot den defaulten som faktisk shipper og som S7 kjørte, er den: | Sammenligning | Tokens | Delta | |---|---|---| | payload: flaggløs default → P-åpen | 57 289 → 62 149 | **+4 860 (+8,5 %)** | | **rendering debatten faktisk betaler for** | 22 284 → 26 936 | **+4 652 (+20,9 %)** | | debatt-input hos leverandøren (§ 4, like-for-like) | 68 238 → 81 997 | **+13 759 (+20,2 %)** | Payload-tokens er ikke prisen. Renderingen er, og den er **tre ganger** så dyr som +6,4 %. --- ## 3. Revise-steget: kombinasjonen ordren spør om er fortsatt STRUKTURELT NEKTET Ordren spør om `--plan-review revise` «hvis kjeden tillater det uten å omgå en nekt». Målt på nytt mot HEAD, på denne basen og dette payloadet: ``` run refused: --prepass-payload and --explore cannot be combined (…) # rc = 1 run refused: --plan-review requires --explore (…) # rc = 1 ``` Begge nektene står (M32; F4), og de er S7 § 3s egne. Døra som finnes for et menneske i A-formen er `--proposal-review` (MAJOR-2), og den er brukt i begge armer i § 4 — der ga arm Adef en `approve`, mens arm Aopen aldri nådde døra fordi ingen kandidat validerte. **Nekten er funnet, ikke en hindring:** utforskningens eget kutt er fortsatt uerklært, akkurat som S7 sa. --- ## 4. To betalte armer, A-formen, samme base og samme spørsmål Alle roller LEVENDE mot Foundry `gpt-4-1-mini` (GlobalStandard, `capacity` **100**, versjon `2025-04-14` — målt med `az cognitiveservices account deployment show`, ingen konfig rørt). Innsprutspunktet er `run._default_factory` (Fase 4e); ingen fil under `src/` er rørt. ```bash export PORTFOLIO_FOUNDRY_PROJECT_ENDPOINT=… # utledet INLINE fra `az`, aldri i fil export PORTFOLIO_MODEL_MAP=scratchpad/major2-live/model_map.json export PACE_SECONDS=2 uv run --with tiktoken python scratchpad/s7c/live_s7c.py {Adef|Aopen} # argv: K2 --profile azure --docs-dir --bundle-dir --proposal-review # --outbox-dir … --run-id … --prepass-payload {payload-default|payload-open}.json ``` Den billige klient-proben (`tests/test_foundry_profile_live.py`) ble kjørt FØRST og var grønn — måleprotokollens stige, så en feil i armene er attribuerbar. | | **Adef — P-default** | **Aopen — P-åpen** | |---|---|---| | prompter totalt | **4** | **11** | | — debatt / generering | 3 / 1 | 3 / **8** | | leverandør-input | 68 810 | **86 331** | | — debatt / generering | 68 238 / 572 | 81 997 / 4 334 | | output-tokens | 1 076 | 2 103 | | største enkeltkall (input) | 23 069 | 27 616 | | prompt-tokens, debatt (instrument) | 45 334 | 54 533 | | debatt-verktøy / verktøykall | 0 / **0** | 0 / **0** | | **siteringer i stempelet** | **8** | **12** | | `cost_baseline_anchored` | `False` | `False` | | parse-feil (`{run_id}-parse-failures.json`) | **fila skrevet ikke** | **5** | | `{run_id}-prepass.json` | skrevet, `rest_reachable: false` | skrevet, `rest_reachable: false` | | **utfall** | **ValidatedProposal** (`51a0821dfb711fc2`) | **Rejection** (`65094b3648af8d7d`) | | — validatorens grunn | — | `claimed saving 1400000 exceeds P90 feasible 879107` | | proposal review | `1 approve, 0 revise` | `offered, never consulted (no candidate validated)` | | **429** | **0** | **0** | | **NOK** | **0,273** | **0,354** | **Deklarasjonen som når operatøren, ordrett fra arm Aopen:** ``` Knowledge base: a DECLARED CUT was used — 12 of 629 concept(s) delivered, 617 withheld by rule: below_k (267), no_lexical_match (349), over_budget_alone (1). Base k2-trinn1-20260903 at ref sha256-tree:f14872a0…c8a92a; cut computed for: Finn kostnadsbesparelser i Stange skole-anbudet ``` ### Kontraktens nekt-vokabular ble brukt i ÉN av to armer Arm Aopen, proposerens første svar, ordrett: > `… no direct cost-saving details are present in the available documentation [sourced-not-sufficient].` Med nevner: markøren står i **2 av 11** prompter i Aopen og forekommer i **1 av 11** svar. I Adef står den i 2 av 4 prompter og i **0 av 4** svar. S7s arm A brukte den; Adef — som er samme argv på en fikset base — gjorde det ikke. **Én kjøring er én kjøring.** Motprøven, med nevner, som i S7: nevnerne selv (`629`, `621`, `617`, `delivered`, `DECLARED CUT`) står i 2 prompter per arm og i **0** svar i begge armer. Modellen bruker nekt-vokabularet, aldri nevnerne. ### Forankring: begge forslag handler om noe armen faktisk så | Arm | Forslaget handler om | Målt i det armen så | |---|---|---| | Adef | renhold: vinyl med PUR, veggmonterte skap, unngå åpne himlinger | `renhold` 66 i **2 av 8** · `vinyl` 7 og `PUR` 3 i **1 av 8** (`…bilag-1-2-renholdstekniske-funksjonskrav…`) | | Aopen | prøvedrift: bedre forhåndskoordinering, færre gjentatte tester | `prøvedrift` **91** i **1 av 12** (`inbox-del-ii-bilag-1-1-…-generelle-tekniske-krav`) | Dokumentet Aopens forslag hviler på er levert i **begge** payloads (rang 1). De fire ekstra dokumentene det åpne kuttet kjøpte — prisskjemaet blant dem — formet altså ikke forslaget. --- ## 5. Kjernespørsmålet: brukte modellen prisskjemaet? **NEI — målt, med nevner** Prisskjemaet (`del-ii-bilag-7-prisskjema/prissammenstilling-sheet-1`, S7a § 6.2s post 82, **5 647 500 NOK**) ble levert i P-åpen på rang 10, og bytene nådde prompten: | | Adef | **Aopen** | |---|---|---| | `5647500` i **prompter** | 0 | **6 forekomster i 2 av 11** | | `prissammenstilling` i prompter | 0 | 24 i 2 av 11 | | `prisskjema` i prompter | 2 i 2 av 4 (omtale i et annet levert utdrag — kontroll: 1 forekomst i de 8 utdragene) | 6 i 2 av 11 | | `5647500` / `prissammenstilling` / `prisskjema` / `pris` i **SVAR** | **0 av 4** | **0 av 11** | **Bytene var der. Modellen brukte dem ikke i ett eneste av elleve svar.** ### Hvorfor, målt og ikke gjettet: FORMEN, ikke tilstedeværelsen Det leverte utdraget er 67 245 tegn over **104 linjer**, og det er en pandoc **SIMPLE table med ÉN kolonneoverskrift** (`Prisskjema`). Målt: lengste sammenhengende mellomrom-løp er **887 tegn**, og det finnes bare **19** tall ≥ 1000 på `.0`-form (10 distinkte). Etiketten og beløpet står på samme logiske linje, adskilt av flere hundre mellomrom: ``` … Prosjektering (tiltransport av prosjekterende) … 5647500.0 92.0 ``` Dette er **nøyaktig den formen F4 målte 08.09**: `derive_cost_baseline` (MAJOR-4) NEKTER dette skjemaet fordi det har én kolonneoverskrift. Så samme dokument er utilgjengelig for begge konsumenter av ulik grunn — deriveren nekter det, og modellen leste forbi det. **Å åpne begge låser leverer BYTENE, ikke STRUKTUREN.** Og skjemaet er ikke fylt ut: det er et **pre-award** prisskjema (MAJOR-4s egen fixtur-observasjon, her bekreftet på den leverte basen). En kjøring forankret på dette dokumentet ville uansett nektet. --- ## 6. Mot S7 (arm A) og S7s arm C | | S7 arm A (07.09) | S7 arm C (07.09) | **S7c Adef** | **S7c Aopen** | |---|---|---|---|---| | form | kutt (P-default) | fri navigasjon | kutt (P-default) | **kutt (P-åpen)** | | base | 630 konsepter, ref `4ffd750c…` | samme | 629/630, ref **`f14872a0…`** | samme | | prompter | 5 | 15 | **4** | **11** | | leverandør-input | 69 043 | 67 846 | 68 810 | **86 331** | | output | 964 | 1 409 | 1 076 | 2 103 | | verktøykall | 0 | **10** | 0 | 0 | | siteringer | 8 | 630 | 8 | **12** | | nevnere annonsert | 630 = 622 + 8 | ingen | 629 = 621 + 8 | 629 = 617 + 12 | | **nådde prisskjemaet** | nei (`below_k`) | **JA, i fire steg** | nei (`below_k`) | **levert — og ikke brukt** | | utfall | ValidatedProposal | ValidatedProposal | ValidatedProposal | **Rejection** | **Like-for-like er de to siste kolonnene:** samme base, samme spørsmål, samme argv bortsett fra payloadet. Det åpne kuttet koster **+20,2 % debatt-input** og **+29,6 % NOK**, ga **+7 prompter** (fordi genereringen brukte åtte forsøk mot ett), og endte på et **avvist** forslag mot et validert. **S7c Adef mot S7 arm A** er den andre like-for-like-en: nesten identisk pris (68 810 mot 69 043), én prompt færre, samme utfall. Den fiksede basen endrer altså ikke A-formens kostnad — den endrer nevneren fra 630 til 629 og gjør stempelet ærlig. **Arm C er fortsatt den eneste som NÅDDE prisskjemaet** — i fire navigasjonssteg av 630 dokumenter — og den brukte det ikke i et forslag heller (S7 § 4: arm C endte på klimakriterier). --- ## 7. Kostnad **Listepris, Azure Retail Prices API** (`api-version=2023-01-01-preview`, `currencyCode='NOK'`, `armRegionName=eastus`), metere `gpt 4.1 mini Inp/Outp glbl Tokens`, **hentet på nytt 2026-09-08** og identiske med S7s: input **NOK 0,003734 / 1K**, output **NOK 0,014936 / 1K**. | Kjøring | Prompter | Input | Output | NOK | |---|---:|---:|---:|---:| | Adef — P-default, approve | 4 | 68 810 | 1 076 | 0,273 | | Aopen — P-åpen, approve | 11 | 86 331 | 2 103 | 0,354 | | klient-probe (`test_foundry_profile_live`) | 1 | ~20 | ~5 | ~0,000 | | **SUM** | **16** | **155 161** | **3 184** | **NOK 0,63** | **NOK 0,63 — 12,5 % av taket på NOK 5. 429-svar: 0.** Største enkeltkall er 27 616 tokens; ingen enkeltpost over 100 000. Takene (`max_rounds=3`, `max_tokens`, `max_attempts`) er **URØRT**, og ingen kjøring traff dem. --- ## 8. «Virker det?» — den ærlige konklusjonen **Ja for kjeden, nei for spørsmålet.** **Kjeden virker ende til ende.** Råkorpus → `okf build` på HEAD (døra lukker, 43 = 39 + 4) → pre-pass med lukkende nevnere og grønn kontraktsjekk → deklarert kutt inn i en debatt med verktøyene trukket → levende modell → deterministisk validator → outbox med kutt-deklarasjon, siteringer og dom-nøkkel. Begge armer returnerte `rc 0`, uten en eneste 429, for **NOK 0,63** til sammen. Det som var uprøvd i S7 — en base der `--ingested-at` faktisk holder og et pre-pass som kan levere prisskjemaet — er nå prøvd, og det holder. **Men det åpne kuttet løste ikke problemet det ble bygget for.** S7s funn 5 var at kuttet holder tilbake det ene dokumentet i K2 som bærer en pris. Begge låser er nå åpnet, dokumentet er levert på rang 10, bytene står i to av elleve prompter — og modellen brukte dem ikke i noe svar. Blindsonen flyttet seg fra **rangeringen** til **lesningen**. Grunnen er målt og ikke gjettet: skjemaet er en énkolonnes SIMPLE table med opptil 887 mellomrom mellom etikett og beløp, altså samme form F4 målte at `derive_cost_baseline` må nekte. **Anbefaling til operatøren (beslutningen er din):** **behold flaggene AV som default.** - Prisen er ikke +6,4 %, den er **+8,5 % payload / +20,9 % rendret kontekst / +20,2 % debatt-input** mot den defaulten som faktisk shipper — produsentens +6,4 % er målt mot en tredje konfigurasjon. - Den målte gevinsten er **null**: de fire ekstra dokumentene formet ikke forslaget, og prisskjemaet ble ikke lest. - Den ene kjøringen med åpent kutt kostet 29,6 % mer og endte avvist. Det er **ikke** bevis for at kuttet gjør modellen dårligere — én kjøring per arm — men det er heller ikke noe å betale for. - Flaggene er verdt å beholde som **opt-in** for et spørsmål som faktisk trenger et bestemt stort dokument. Det er dét de er, og de fungerer: prisskjemaet BLE levert. **Det som faktisk ville flyttet noe** er ikke et flagg i pre-passet, men at prissammenstillingen kommer ut som en tabell med kolonner. Da kunne `--derive-cost-baseline` forankret kjøringen (stage 0), og da ville modellen fått linjer i stedet for et mellomromsteppe. Det er en **produsent-side**-observasjon, meldt videre, ikke bestilt. --- ## 9. Funn — rapportert, ikke fikset 1. **Ordrens kjent-positiv var feilparet** (§ 2). `58 401` er ikke den flaggløse defaulten, men `--cost-vocabulary --k 12 --limit 120000`. Begge produsent-tall er reprodusert eksakt; den flaggløse defaulten måler 57 289. Konsekvensen er at «prisen for prisskjemaet» er **+8,5 %**, ikke +6,4 %, målt mot det som shipper. 2. **`log.md` er fortsatt et navigerbart konseptdokument for po** (§ 1). Produsentens F2-fiks ekskluderer den i deres egen vandring (`considered` = 629), men lenken står i rot-`index.md`, så `okf.navigate_bundle` returnerer **630** og korpus-kjøringens egen logg kan leses og siteres av agentene. Den leverte `K2-bundle-20260903` har ikke lenken. **Kryss-repo, `llm-ingestion-okf`.** 3. **Det leverte prisskjemaet er uleselig i form, ikke fraværende i bytes** (§ 5). Énkolonnes SIMPLE table, 887 tegns mellomromsløp, 19 tall ≥ 1000. Samme form F4 målte at MAJOR-4s deriver må nekte. **Kryss-repo, produsent-side.** 4. **Genereringen brukte åtte forsøk i Aopen, fem av dem parse-feil** — alle av samme klasse: `claimed saving … exceeds affected items' total …`. Modellen påstår en besparelse større enn summen av linjene den selv oppgir. Pydantic fanget hver gang, og fangsten er ærlig (`{run_id}-parse-failures.json` skrevet). Adef traff det ikke i det hele tatt. 5. **En uforankret kjøring er fortsatt ærlig, men kandidaten er oppdiktet** (S7s funn 4, gjentatt). `cost_baseline_anchored: False` i begge armer; kostkodene er modellens egne (`cleaning_labor`, `maintenance_materials`, `PRD-001`, `PRD-002`). `--require-cost-baseline` (F4, 100) ville nektet begge kjøringene — og `--derive-cost-baseline` ville nektet basen, av funn 3s grunn. --- ## 10. Ærlighets-grenser, uttalt - **To kjøringer er ikke et utvalg.** At det åpne kuttet gir dårligere forslag er **ikke** vist; at det ikke ga et bedre er målt for disse to kjøringene. - **Ordrens revise-steg finnes ikke i A-formen** (§ 3). `--plan-review` krever `--explore`, som er nektet sammen med et payload. `--proposal-review` er brukt i stedet, og i Aopen nådde kjøringen aldri den døra. - **`sha256-tree` bæres, ikke re-beregnes.** Vi verifiserer de leverte dokumentene mot de monterte bytene; en endring i et dokument payloadet ikke leverte fanges ikke. - **Byggets veggklokke er ikke oppløst.** okf rapporterer 789,20 s; skallet målte 2 351 s fra start til `rc`. Differansen er ikke undersøkt her. - **Ordoverlapp mellom engelsk modell-output og norsk base måler ingenting** — forankringen i § 4 er målt på norske fagtermer, som er svakere enn en id-join. Id-joinen er fortsatt umulig: ingen av de 15 svarene skrev en konsept-id. - **Prisene i K2 er ikke fylt ut.** Ingen validert besparelse mot ekte tall er forventet eller funnet; begge armer regner på tall modellen selv oppga. - **Kostnadstallene er listepris**, ikke faktura, og caching er ikke målt. --- ## 11. Verifiseringslogg | # | Påstand | Kommando → resultat | |---|---|---| | 1 | Instrumentet reproduserer publisert fasit | `p_measure.py` / `live_s7c.py` `assert` → 3 954 / 1 495 / 629 | | 2 | okf HEAD og rent tre | `git rev-parse --short HEAD` → `6776c37`, `git status --short` tomt | | 3 | Døra lukker | `okf build` stdout → `merged + coded rejections = 43; N = 43` | | 4 | F1 fikset | `grep -rh "^ingested_at:"` → `629 ingested_at: 2026-09-03T00:00:00Z` | | 5 | Diffen er én linje | `diff -r` exit 1 → 1 fil, 3 linjer, 0 `Only in`, `log.md`-lenka | | 6 | F2 kun konsumentside | `okf_consume` `considered` = 629 mot `navigate_bundle` 630, `log.md` i `context_files` | | 7 | Nevnerne lukker + kontrakt grønn | `okf_contract_check.py` × 3 → `0 findings`, exit 0 | | 8 | okf sine to tall reprodusert | `62 149` (P-åpen) og `58 401` (`--limit 120000`) eksakt | | 9 | Prisskjemaet levert i P-åpen | payload `excerpts[9]` = `del-ii-bilag-7-prisskjema/prissammenstilling-sheet-1` | | 10 | Steg-3-kombinasjonene nektes | rc = 1 begge, meldingene i § 3 | | 11 | Levende modell leste kuttet | `Adef/Aopen-records.json` → 3 debatt-prompter à 22–27 k tok, rc 0 | | 12 | Bytene nådde prompten | `5647500` 6 forekomster i 2 av 11 Aopen-prompter | | 13 | Modellen brukte dem ikke | 0 forekomster av alle fem prismarkører i 11 av 11 svar | | 14 | Formen er årsaken | 104 linjer, én kolonneoverskrift, mellomromsløp 887 tegn | | 15 | `[sourced-not-sufficient]` brukt | 1 av 11 svar i Aopen, 0 av 4 i Adef | | 16 | Validatoren beholder siste ord | `outcome.json` → `rejected`, `1400000 exceeds P90 879107` | | 17 | Deployment urørt | `az … deployment show` → GlobalStandard, 100, `2025-04-14` | | 18 | Pris hentet, ikke husket | Azure Retail Prices API 2026-09-08 → 0,003734 / 0,014936 NOK per 1K | **Ikke verifisert her:** at en levende modell velger *bedre* med et åpent kutt; at `N=43` er produsentens riktige nevner (lest fra deres stdout, men rå-katalogen har 43 filer, målt); at byggets 1 562 s ubokførte veggklokke skyldes indeks-fasen; at leverandørens caching traff. **Instrumentoppsett:** `scratchpad/s7c/` (utracket) — `p_measure.py`, `live_s7c.py`, `payload-{default,open,okf-defaultlimit}.json`, `{Adef,Aopen}-records.json`, `outbox-{Adef,Aopen}/`. `tiktoken` `o200k_base` via `uv run --with tiktoken`; fortsatt ingen prosjektavhengighet.