# P21 — stressrunde 5, FORANKRET: fem betalte kjøringer mot prosjektets eget prisskjema **Dato:** 2026-09-15 · **Ordre:** `20260915T063839Z-5960711173-from-.claude` · **Økt:** 125 **Kode:** `7b4f85d` (DEL A+B) · `ac0bfdb` (DEL C) · rapporten i denne commiten **Miljø:** Foundry `gpt-4-1-mini`, `PACE_SECONDS=2`, endepunkt hentet INLINE fra `az` (ekte vert aldri i sporet fil). Klientprobe: 1 passed før første betalte kall. **Skript:** `scratchpad/p21/stress5.sh` · `scratchpad/p21/judge5.sh` · `scratchpad/p21/rejudge4.sh` --- ## 0. Kortversjonen Fire betalte runder hadde kjørt **uforankret, alle sammen**: validatorens stadium 0 — det ene stadiet som skiller en oppdiktet kostlinje fra en linje prosjektet faktisk kjøper — ble hoppet over i hver eneste, fordi prisen ble lett etter i KUNNSKAPSBASEN og en vegnormal bærer ingen priser. P21 ga prosjektet sitt eget prisskjema (`--cost-baseline`), og runde 5 er den første forankrede. **Det forankringen kjøpte, målt:** * **`must_refuse` (a4) bestått 5 av 5, og alle fem på `stage0-baseline`** — mot 4 av 5 i runde 4, der alle fire som besto falt på stadium 0b (P7s grunnings-sjekk) og den femte VALIDERTE. * **`stop_reason` tom 6 av 6**, `own-proposal` evaluert 6 av 6 — som i runde 4. * **C1 fyrte LIVE og endret atferd:** distinkte dokumenter åpnet før en erklæring gikk fra `1 · 1 · 1 · 2 · 5 · 13` til `3 · 3 · 5 · 7 · 11 · 12`. Tre erklæringer ble NEKTET underveis (15 kall, 12 registrert), og modellen leste mer og erklærte på nytt. * **C2:** `read_dir`-kall mot et nivå basen ikke holder falt fra **16 av 104 (15,4 %)** til **8 av 128 (6,3 %)**. **Og det den kostet, målt like tydelig: 0 av 20 tilnærminger validerte** (runde 4: 4 av 20). Hver eneste av de 26 avvisningene — 20 tilnærminger + 6 `own-proposal` — leser `unknown cost code '': not in project

's cost baseline (N known codes)`. Ingen kjøring kom forbi stadium 0, fordi **prisskjemaet aldri når prompten** og avvisningen oppgir **hvor mange** koder prosjektet har, aldri **hvilke**. Det er § 4 funn 1, og det har en navngitt løsning. --- ## 1. Hva som ble kjørt | sett | base(r) | run-id | utboks | |---|---|---|---| | gate-nordvik-2027 | n100-2023 | `gate-nordvik-2027-07` | `scratchpad/p21-stress/gate-nordvik-2027` | | tunnel-hauglia-2027 | n500-2024 | `tunnel-hauglia-2027-07` | `…/tunnel-hauglia-2027` | | fv412-dekkefornyelse-2027 | n200-2024 | `fv412-dekkefornyelse-2027-07` | `…/fv412-dekkefornyelse-2027` | | kontrakt-sorasen-2027 | r761-2025 | `kontrakt-sorasen-2027-07` | `…/kontrakt-sorasen-2027` | | dekke-og-kontrakt-lindaas-2027 | n200 + r761 (`--across-bundle`) | `lindaas-03` | `…/lindaas` | Alle fem med `--max-rounds 5 --max-tokens 600000 --cost-baseline contexts//cost-baseline.json`. Fri `--live-dry-run` på alle fem først: rc 0 og `Cost baseline: N line(s) from …` i alle fem, inkludert multi-base-passet, der linja printes ÉN gang for passet (ett prosjekt, ett prisskjema). Alle fem betalte kjøringer: **rc 0**. --- ## 2. Runde 3 / 4 / 5, samme instrument Runde 4 er **dømt på nytt med P21-dommeren** (`scratchpad/p20-stress/*/verdict-p21.out`), så de to kolonnene under er målt med samme verktøy. Runde 3 står som publisert i P19/P20 og er IKKE re-dømt — den mangler `anchored`/`priced`/`stage`, og å fylle dem inn fra prosa ville vært å dikte et måleresultat. | | runde 3 | runde 4 | **runde 5** | |---|---|---|---| | `anchored` | (ikke målt) | **False 6/6** | **True 6/6** | | validerte tilnærminger | 1/32¹ | 4/20 | **0/20** | | fasit-grunnet (a) | 1/32¹ | 2/20 | 1/20 | | `requirement_hit` | 0/13 | 0/13 | **0/12** | | `named` (b′) | — | 1/20 | 1/20 | | hallusinerte koder | — | 23 | 26 | | `priced` | — | 0/20 | **0/20** | | a4 `must_refuse` bestått | 2/4 | 4/5 | **5/5** | | a4 — hvilket stadium fanget | (ikke målt) | `stage0b` ×4, ingen ×1 | **`stage0-baseline` ×5** | | gjettede lesestier (dommeren) | — | 17 | **14** | | `stop_reason` tom | 0/5 | 6/6 | 6/6 | | parse-feil-filer | 4 av 6 (1 rad) | 4 av 6 (1 rad) | 4 av 6 (2 rader) | | tokens | 2 679 305 | 896 492 | **1 130 145** | ¹ runde 3 + P17b talte over 32 rader; runde 4 og 5 er 20 rader (fire sett à fire + to à to). De to nevnerne er ulike og tallene er ikke direkte sammenlignbare — de står som publisert. Per sett i runde 5: gate 102 048 · tunnel 178 157 · fv412 117 398 · sorasen 305 135 · lindaas/n200 133 635 · lindaas/r761 293 772. **Kostnad, med antakelsen uttalt:** P20 anslo 896 492 tokens ≈ **NOK 6** til listepris for `gpt-4-1-mini`. Samme antakelse, skalert: 1 130 145 tokens ≈ **NOK 7,6**. **Ingen faktura er lest** — dette er et anslag, ikke en måling av hva som ble belastet. --- ## 3. Hva hver del kjøpte (mål, ikke tilskriv) ### DEL A+B — forankringen **Kjøpte:** stadium 0 dømmer igjen. Det er ikke utledet fra at flagget ble sendt, men lest av artefaktene: `provenance.cost_baseline_anchored` er `true` i alle seks utbokser, og alle 26 avvisninger bærer stadium 0s egen setning. Falsifiseringsarmen faller nå på det stadiet som vet hva prosjektet KJØPER, i stedet for på det som bare vet hva som stod i teksten. **Kjøpte IKKE:** en høyere andel riktige svar. Tvert imot — se § 4 funn 1. **Ærlighets-grense, uttalt:** «a4 5 av 5» er sant og svakere enn det ser ut. Nevneren er en gate som avviste 20 av 20, så armen måtte ikke SKILLE noe denne runden. Den skarpe formen av dette kriteriet krever en runde der a1–a3 kan validere; den kommer først når funn 1 er lukket. ### DEL C1 — erklæringen som må ha lett **Kjøpte:** at erklæringen koster en titt. Målt i de seks sporene: | sett | distinkte dokumenter før erklæring (r4 → r5) | declare-kall r5 | registrert r5 | |---|---|---|---| | gate-nordvik | 1 → **3** | 2 | 2 | | tunnel-hauglia | 1 → **5** | 3 | 2 | | fv412 | 1 → **3** | 3 | 2 | | sorasen | 13 → 12 | 2 | 2 | | lindaas/n200 | 2 → **7** | 3 | 2 | | lindaas/r761 | 5 → **11** | 2 | 2 | **Tre erklæringer ble nektet live** (15 kall, 12 registrert), og i alle tre tilfellene leste modellen mer og erklærte på nytt — nekten er en tur den kunne rette, som var hele formen. **Kjøpte IKKE:** riktige erklæringer. `requirement_hit` er fortsatt **0 av 12**. Å lese tre dokumenter i stedet for ett gjør ikke det tredje til det riktige. Se § 4 funn 2. ### DEL C2 — nekten som navngir naboene **Kjøpte:** færre gjetninger på katalognivå. `read_dir` mot et nivå basen ikke holder falt fra **16 av 104** til **8 av 128** — raten fra 15,4 % til 6,3 %. Den ellevedelte `R761/4-3`, `4.3`, `4-2`, `4-1`, `4-0`, `4-5`, `4-6`-vandringen fra runde 4 gjentok seg ikke. **Kjøpte IKKE:** færre gjettede DOKUMENT-stier. `read_file` mot et dokument basen ikke holder gikk fra 2 av 38 til **7 av 52** (5,3 % → 13,5 %). Totalt gikk sti-bærende kall mot noe som ikke finnes fra 18 av 143 til 15 av 180. Uttalt: to ulike definisjoner er i omløp i denne rapporten — dommerens `hallucinated_reads` (filsystem-basert: 17 → 14) og målingen over (`context_files`-basert: 18 → 15). Begge peker samme vei; ingen av dem er den andre. --- ## 4. Gjenstående funn, hver med en navngitt løsning ### FUNN 1 (nytt, og det største) — prisskjemaet når aldri prompten **Målt:** alle 26 avvisninger er `unknown cost code`. Ingen av de 26 foreslåtte kodene står i prosjektets skjema; modellen fant på `signalregulering_konstruksjon`, `elevated_crosswalks`, `VENTIL_IMP`, `RIGG01`, `Filtermateriale`, `bærelag_asfalt`, `MASSE_FORSTERKNING` og tjue til. Den kunne ikke gjort annet: skjemaet sendes til VALIDATOREN, aldri til proposeren, og stadium 0s avvisning oppgir **antallet** kjente koder («5 known codes») og **ikke ett eneste kodenavn**. Steg 5 mater avvisningen ordrett inn i neste forsøks prompt — men en beskjed som sier «du gjettet feil, det finnes fem riktige» kan ikke korrigeres. Kontrast MAGNITUDE-avvisningen, som NAVNGIR baseline-verdien og derfor lot løkka konvergere i økt 94. **Løsning (navngitt, anslag ~0,5 økt):** la stadium 0s ukjent-kode-avvisning NAVNGI kodene prosjektet faktisk har, slik magnitude-armen allerede navngir verdien — `…not in project P's cost baseline (known codes: RIGG, ASFALT, …)`. Ett sted (`validator.py` `_reconcile_against_baseline`), ingen ny flate, og Steg 5 bærer det videre gratis. Ved store skjemaer må listen bindes (samme regel som katalog-utdraget: et fast vindu, aldri en andel). **Alternativ løsning (anslag ~1 økt), som IKKE anbefales alene:** rendre skjemaet inn i proposer-prompten. Den gir modellen kodene før første forsøk i stedet for etter det første bomskuddet, men den er en ny prompt-flate med egen kostnad per kjøring, og den fjerner ikke behovet for at avvisningen er korrigerbar. ### FUNN 2 (uendret fra P19/P20) — `requirement_hit` er 0 **Målt:** 0 av 12 erklæringer navngir et fasit-konsept, tredje runde på rad. C1 gjorde at kjøringene leser mer (1 → 3–11 dokumenter), og det flyttet ikke treffet. **Løsning (navngitt, anslag ~0,5 økt):** `declare_requirement` svarer allerede med dokumentets EGEN tittel og `req_number` (P20/A1). Neste trinn er å gjøre svaret til en SAMMENLIGNING: ta approachens label og si om det erklærte kravet i det hele tatt handler om den — «du erklærte *Krav 1.1—1 Generelle krav* for *Enklere rundkjøring*; ingen ord fra labelen finnes i dokumentets tittel eller `req_number`». Det er en rapport, ikke en gate (en gate på ordoverlapp ville nektet legitime erklæringer), og den kan bygges og måles offline mot de seks sporene. ### FUNN 3 (svakere enn i runde 4, ikke lukket) — gjettede DOKUMENT-stier **Målt:** `read_file` mot et dokument som ikke finnes gikk 2/38 → 7/52. C2 hjelper på katalognivå og ikke her, fordi den nærmeste listbare forfaren til en gjettet dokumentsti ofte HOLDER dokumenter og ingen underkataloger — og da utelates nabolista (bevisst; en tom klausul er en setning uten innhold). **Løsning (navngitt, anslag ~0,3 økt):** når forfaren holder dokumenter og ingen underkataloger, navngi i stedet inntil fem av DOKUMENTENE på det nivået, rangert på samme måte. Samme funksjon, samme kilde (`context_files` gjennom `in_dimension`), samme egenskap: hvert navn den gir fra seg resolverer. ### FUNN 4 (uendret) — `named` er 1 av 20 **Målt:** bare sorasens `a3-planum-stabilisering` navnga et fasit-krav i sitt eget `measure`. **Løsning:** ingen egen — dette er funn 2 sett fra den andre siden. Lukkes funn 2, er dette det som måler om det virket. --- ## 5. Ærlighets-grenser * **Fem betalte kjøringer på ett spørsmål er ikke et utvalg.** Én modell (`gpt-4-1-mini`), ett deployment, ett manus. * **Alle beløp i de fem prisskjemaene er OPPDIKTET.** Hvert setts `honesty`-felt sier det. Det som IKKE er oppdiktet er FORMEN: hver a1–a3 har sin kostlinje, a4 har ingen, og sorasens koder er ekte R761-prosessnumre fordi en norsk vegkontrakt prises slik. * **«a4 5 av 5» er målt under en gate som avviste alt.** Se § 3. * **Ingen faktura er lest.** NOK-tallet er et anslag med antakelsen uttalt. * **Runde 3 er ikke re-dømt** og de tre kolonnene i § 2 er derfor ikke alle sammenlignbare. * **Ordrens D2 ber om `priced` som hovedtall.** Den er 0 av 20, og det er ikke en egenskap ved skjemaene: det er funn 1 målt fra den andre siden.