# P22 — stressrunde 6: de tre funnene fra P21 lukket, og hva lukkingen avdekket > **⚠️ PRISENE ER OPPDIKTET.** Hvert beløp i de fem prisskjemaene under `contexts/*/cost-baseline.json` > er en konstruert størrelsesorden, som hvert setts eget `honesty`-felt sier. **FORMEN er det som ikke > er oppdiktet** — et prisskjema med `quantity`/`unit_cost` per kostkode er hva en norsk > vegkontrakts mengdebeskrivelse faktisk er. > > **Fem betalte kjøringer på ett spørsmål er ikke et utvalg.** Seks kjøringer over fem prosjekter, > én modell, ett deployment. Alt under er hva DENNE konfigurasjonen gjorde, ikke hva systemet gjør. --- ## 1. Kortversjon P22 lukket de tre funnene P21 navnga, i rekkefølgen P21 satte, og kjørte så runde 6 forankret. **DEL A traff hardt.** Stadium 0s ukjent-kode-nekt navngir nå kodene prosjektet faktisk kjøper. `priced` gikk **0 av 20 → 16 av 20** og validerte tilnærminger **0 av 20 → 10 av 20**. Antallet oppdiktede kostkoder falt fra 26 til 12. **DEL B beveget det tallet tre runder ikke hadde beveget.** `declare_requirement` svarer nå med en sammenligning mot kommisjonens egne retninger. Erklæringer som peker på et fasit-konsept gikk **0 av 13 → 0 av 12 → 5 av 16**, og `requirement_hit` per tilnærming **0 av 20 → 3 av 20**. **DEL C halverte gjettingen.** `read_file` mot et dokument basen ikke holder gikk **7 av 52 → 3 av 51**, `read_dir` mot et nivå den ikke holder **8 av 128 → 2 av 97**. To av de tre gjenværende `read_file`-bommene fikk den NYE dokument-klausulen — altså fyrte DEL C levende. **Og lukkingen avdekket noe større enn alt dette.** `must_refuse` — falsifiseringsarmen, den ene tilnærmingen per sett som basen IKKE har grunnlag for — gikk **5 av 5 → 2 av 5**. Tre av dem ble VALIDERT. P21s 5-av-5 var ikke skarp: den ble oppnådd fordi modellen fant på en kostkode, ikke fordi kunnskapsbasen manglet grunnlag. Ordren forutså nøyaktig dette («i dag måtte armen ikke skille noe, gaten avviste 20 av 20»). Nå skiller den, og den sier at **ingenting i gaten taler om hvorvidt basen støtter retningen**. Det er funn 1 i § 4, og det står først. --- ## 2. DEL 0 — premissene re-målt før noe ble bygget Ordren siterte seks tall fra P21-rapporten. Alle er re-målt mot artefaktene. | Ordrens tall | Re-målt | Dom | |---|---|---| | 0 av 20 validerte | 0/20 tilnærminger — OG 0/6 egne forslag | **Holder.** Men neste setnings «26» er en STØRRE populasjon: 20 approach-rader + 6 own-proposals | | 26 avvisninger, alle `unknown cost code` | 26/26 | **Holder** (populasjon = 26, ikke 20) | | `requirement_hit` 0/12 | Feltet er per APPROACH: **0/20**. 12 er antallet ERKLÆRINGER (7 distinkte, 0 treff) | **Nevneren er feil som skrevet.** Begge er null, så konklusjonen står | | gjettede dokumentstier 2/38 → 7/52 | **Holder** under `context_files`-definisjonen. Under dommerens FILSYSTEM-definisjon: 2/38 → **6/52** | To definisjoner i omløp, begge erklært av P21 selv | | `read_dir` 16/104 → 8/128 | **Holder** under `context_files`. Filsystem: 15/104 → 8/128 | samme | | `named` 1/20 | 1/20 | **Holder** | | `priced` 0/20 | 0/20 | **Holder** | **Klassifikator-grensen, validert i begge retninger som ordren krevde.** `priced` og stadium-0-avvisningen er ikke to observasjoner — de er samme betingelse målt to ganger: `priced` krever at HVER kode finnes i settets prisskjema, og stadium 0 avviser når NOEN kode ikke gjør det. Over samme prisskjema er de komplementære ved konstruksjon. Ordrens «funn 1 målt fra den andre siden» er altså strukturelt sant, ikke en observasjon. Ingenting lekker ut av klassen, og ingenting ligger feilaktig inne i den. Alle tall i denne rapporten er målt i denne økten. Runde 4 og 5 er dømt med **samme instrument** som runde 6 (dommeren er urørt i P22, og begge er kjørt på nytt for å bevise det). --- ## 3. Sammenligningstabell, samme dommer | | runde 4 (P20) | runde 5 (P21) | **runde 6 (P22)** | |---|---|---|---| | forankret (`anchored`) | 0 av 6 | 6 av 6 | **6 av 6** | | validerte tilnærminger | 4/20 | 0/20 | **10/20** | | `priced` (alle koder i prosjektets skjema) | 0/20 | 0/20 | **16/20** | | oppdiktede kostkoder | 23 | 26 | **12** | | `requirement_hit` (per tilnærming) | 0/20 | 0/20 | **3/20** | | erklæringer som peker på et fasit-konsept | 0/13 | 0/12 | **5/16** | | `named` | 1/20 | 1/20 | 1/20 | | `grounded` | 2/20 | 1/20 | **3/20** | | `read_file` mot dokument basen ikke holder | 2/38 | 7/52 | **3/51** | | `read_dir` mot nivå basen ikke holder | 16/104 | 8/128 | **2/97** | | gjettede lesestier i alt | 18/142 | 15/180 | **5/148** | | `must_refuse` PASS | 4/5 | 5/5 | **2/5** | | tokens | 896 492 | 1 130 145 | **913 320** | | rc | 0 × 5 | 0 × 5 | **0 × 5** | | rundetak truffet | 0 | 0 | **0** | **Kostnad: ≈ NOK 6,1.** ANTAKELSE — listepris, skalert fra P21s egen antakelse på samme deployment. **Ingen faktura er lest.** --- ## 4. Gjenstående funn, hver med en navngitt løsning ### FUNN 1 (nytt, og det største) — falsifiseringsarmen fanges ikke lenger av noe **Målt:** `must_refuse` 2 av 5. Tre a4-armer ble VALIDERT: | sett | tiltak | kostlinje | utfall | |---|---|---|---| | tunnel-hauglia | «Billigere enhetspris pa impulsventilator» | `TUN-VENT-01` 14 × 465 000 | validated | | fv412 | «Lavere tonnpris pa resirkulert asfalt i bærelaget» | `DEKKE-BAER-01` 6 300 × 980 | validated | | kontrakt-sorasen | «Kutt ved gunstigere indeksregulering» | `12.1` 1 × 6 400 000 | validated | De to som falt, falt på `stage4-p90` (gate-nordvik) og `stage0-baseline` (lindaas/r761). **Dette er en AVDEKKING, ikke en regresjon.** I runde 5 fanget stadium 0 alle fem — men fordi modellen fant på kostkoden, ikke fordi basen mangler grunnlag for tiltaket. Ordren skrev det selv: armen «måtte ikke skille noe». Nå bruker modellen den riktige koden, magnitudene ligger innenfor toleransen, koden står i grunnlagsteksten (baselinens koder er én av stadium 0bs tre kilder), og **ingen stage i gaten stiller spørsmålet falsifiseringsarmen er konstruert for**: har kunnskapsbasen et krav som støtter denne retningen? **Løsning (navngitt, anslag ~1 økt):** en stage som gater på ERKLÆRINGEN, ikke på tallene — et forslag hvis tilnærming erklærte et krav som ikke deler ett ord med tiltaket, eller som ikke erklærte noe krav i det hele tatt, kan ikke bære et `validated`-stempel. DEL B har allerede regnet ut sammenligningen; det som mangler er å la den bety noe. **Dette er en operatørbeslutning**, ikke en selvfølge: DEL B ble bygget som RAPPORT nettopp fordi et krav kan binde et tiltak uten å dele ett ord med navnet noen ga det, og en gate på ordoverlapp ville avvist legitime forslag. En mellomting finnes — gate på FRAVÆR av en erklæring, ikke på dens kvalitet — og den er billigere og ærligere. ### FUNN 2 — `named` står på 1 av 20, fjerde runde **Målt:** 1/20, uendret gjennom fire runder. Ordren sa dette var funn 2 «sett fra den andre siden», og at DEL B ville måle det. **Den spådommen holdt ikke:** erklæringene ble klart bedre (0/12 → 5/16) mens `named` sto stille. De er altså IKKE samme sak. `named` måler om modellens egen `measure`-tekst eller et snippet navngir fasit-referansen; erklæringen er en egen kanal. **Løsning (navngitt, anslag ~0,5 økt):** proposer-prompten ber om at `measure` gjengir tiltaket, ikke kravet. Å be den gjengi det ERKLÆRTE kravets `ref` ordrett i `measure` — slik `approach.label` allerede kreves gjengitt — koster én setning i `_build_messages` og gjør kanalen målbar. Merk at dette gjør `named` til noe modellen blir BEDT om, hvilket svekker den som uavhengig måling; det er en reell kostnad og skal uttales. ### FUNN 3 — tre gjettede dokumentstier står igjen **Målt:** 3 av 51. To fikk DEL Cs nye dokument-klausul, én fikk underkatalog-klausulen. Ingen sto uten hjelp. Restfeilen er altså ikke lenger «nekten sa ingenting», men «modellen gjettet likevel». **Løsning:** ingen foreslått. 5,9 % er under runde 4s nivå, og en gate her ville rammet et verktøykall som allerede blir besvart med de riktige navnene. ### FUNN 4 — `grounded` 3 av 20 **Målt:** 3/20 (runde 4: 2, runde 5: 1). Beveger seg svakt oppover. Ingen løsning foreslått i denne runden; den henger sammen med funn 1 og bør vurderes sammen med den. --- ## 5. Hva hver del kjøpte, målt ### DEL A — nekten navngir kodene **Kjøpte:** at løkka kan konvergere i det hele tatt. `priced` 0/20 → 16/20, validerte 0/20 → 10/20, oppdiktede koder 26 → 12. Dette er den største enkeltbevegelsen noen del har produsert i seks runder. **Kjøpte IKKE:** at forslagene er RIKTIGE. Se funn 1 — halvparten av bevegelsen er at falsifiseringsarmen nå slipper gjennom. ### DEL B — erklæringen som sammenligner **Kjøpte:** erklæringer 0/12 → 5/16, `requirement_hit` 0/20 → 3/20. Første bevegelse på tre runder. **Kjøpte IKKE:** `named` (funn 2), og heller ikke en gate — sammenligningen er en rapport. ### DEL C — dokumentnavn når forfaren mangler underkataloger **Kjøpte:** `read_file`-bom 7/52 → 3/51, `read_dir`-bom 8/128 → 2/97. Klausulen fyrte levende på 2 av de 3 gjenværende bommene. --- ## 6. Ærlighets-grenser * **Fem betalte kjøringer på ett spørsmål er ikke et utvalg.** Seks kjøringer, fem prosjekter, én modell, ett deployment. Ingenting her generaliserer til en annen modell. * **Alle beløp i prisskjemaene er OPPDIKTET.** Formen er ikke. * **Kostnaden er en ANTAKELSE** (listepris, skalert fra P21). Ingen faktura er lest. * **`must_refuse` 2 av 5 er ikke bevis for at systemet er blitt verre.** Det er bevis for at den forrige målingen ikke kunne skille. Begge utsagn er ubehagelige og begge er sanne. * **Ingen del er bevist mot en annen modell.** At en LEVENDE modell korrigerer seg etter en navngitt kodeliste er nå MÅLT for gpt-4-1-mini på dette deploymentet, og for ingen annen. * **Runde 3 er ikke re-dømt.** Å fylle inn `anchored`/`priced`/`stage` fra prosa ville vært å dikte et måleresultat. * **De to lese-definisjonene er fortsatt to.** Alle tall i § 3 bruker `context_files`-definisjonen, som er den DEL C er bygget fra. Dommerens `hallucinated_reads` er filsystem-basert og gir andre tall for de samme kjøringene.