portfolio-optimiser/docs/2026-09-16-p22-stressrunde-6.md
Kjell Tore Guttormsen 3f04f90261 docs(p22): stress round 6 -- the three findings closed, and what the closing exposed
Five paid runs, rc 0 on all five, 913 320 tokens, no round cap hit, anchored 6 of 6.

DEL A hit hard: naming the project's own cost codes in stage 0's refusal took `priced` from 0 of 20
to 16 of 20 and validated approaches from 0 of 20 to 10 of 20, with invented cost codes down from 26
to 12. The largest single movement any part has produced in six rounds.

DEL B moved a number three rounds had not: declarations pointing at an answer-key concept went
0 of 13 -> 0 of 12 -> 5 of 16, and requirement_hit per approach 0 of 20 -> 3 of 20.

DEL C halved the guessing: read_file against a document the base does not hold went 7 of 52 to
3 of 51, read_dir against a level it does not hold 8 of 128 to 2 of 97. Two of the three remaining
read_file misses got the NEW document clause, so DEL C fired live.

AND THE CLOSING EXPOSED SOMETHING LARGER. must_refuse -- the falsification arm, the one approach per
set the base has no ground for -- went 5 of 5 to 2 of 5. Three were VALIDATED. P21's 5 of 5 was not
sharp: it was achieved because the model invented a cost code, not because the base lacks ground.
The order predicted exactly this. Now the arm discriminates, and it says nothing in the gate speaks
to whether the base supports the direction. That is finding 1 and it stands first, with a named
solution and an operator decision attached.

Also recorded: the order's own cited figures re-measured with denominators before anything was built
on them. "requirement_hit 0 of 12" mixes a per-approach field (0 of 20) with the declaration count
(0 of 12); "0 of 20 validated" and "26 rejections" are two different populations (20 approach rows
vs 20 + 6 own-proposals); and the read-miss figures hold under the context_files definition while
the judge's filesystem one gives 6 of 52, not 7. Rounds 4 and 5 are re-judged with the same
instrument; round 3 is deliberately NOT, because filling in anchored/priced/stage from prose would
be inventing a measurement.

Honesty limits: five paid runs on one question are not a sample; every amount in the price schedules
is invented and the FORM is what is not; the cost figure is an ASSUMPTION at list price with no
invoice read; and must_refuse 2 of 5 is not evidence the system got worse, it is evidence the
previous measurement could not discriminate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 01:50:40 +02:00

10 KiB
Raw Blame History

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.