DEL C. P18 gave read_dir a window (filter/offset/limit) and then measured its
own paid round without being able to see it used: five of 31 documents read
lay outside the default window, so the window HAD been widened and the trace
could not say with which knob. ToolCall now carries the three arguments,
always present and empty/zero when not passed -- an absent key and "not
narrowed" must not read the same -- and the judge counts filter_calls and
paged_calls. _number_argument is a SIBLING of _string_argument, not a widening
of it: a model may send limit as 10 or as "10", and a reader that knew one
shape would report a paged call as unpaged.
DEL D. P18's finding 4 was WRONG AS WRITTEN. provenance.token_usage has been
stamped on every proposal artefact since S3.4 and stands in every one of round
2's; what was missing is a READER. The judge reads it now (round 2 measured:
289 054 tokens against round 1's 2 679 305, -89 %), and the P18 report gets a
dated correction UNDER its original paragraph rather than instead of it.
What was genuinely absent is {run_id}-coverage.json. settle prints the
coverage report and ApproachOutcome has carried not_evaluated since Trekk A3,
but neither ever reached a file, so a judge could see an approach had no
artefact and could not tell a budget stop from an approach nobody ordered.
Written from the finally IFF a mandate was given. stop_reason comes from a
CALLER-OWNED sink rather than from in_flight, and that is a measurement:
_evaluate_mandate SWALLOWS BudgetExceeded once something has been produced, so
run_project's own in_flight never sees it.
Load-bearing measured (10 arms), four mutations all red against the whole
suite, green control 1744/5 and the golden byte-unchanged. D-i stood GREEN
first -- the vacuous-gate class, 25th time: the arm called write_coverage
itself and therefore chose the reason it then asserted.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
352 lines
20 KiB
Markdown
352 lines
20 KiB
Markdown
# P18 — stressrunde 2: hva hver fiks kjøpte, målt mot runde 1
|
||
|
||
**Ordre** `20260914T105139Z-769818730` · **økt 121** · 14.09.2026
|
||
**Forrige runde:** `docs/2026-09-14-p16-stressrunde-1.md` (økt 120)
|
||
**Commits:** `9b47e5a` (DEL A) · `7a7c988` (DEL B+C) · denne rapporten
|
||
|
||
> **Ærlighet først.** Alt under er målt i denne økten. Der et tall kommer fra runde 1 står det
|
||
> hvor. Der en effekt **ikke** kan tilskrives en fiks, står det. Ingen betalt kjøring er gjentatt
|
||
> for å få et penere tall, og ingen fasit er endret.
|
||
|
||
---
|
||
|
||
## 0. Premissene ordren hviler på — re-målt før noe ble bygget
|
||
|
||
| Ordrens premiss | Målt 14.09 | Status |
|
||
|---|---|---|
|
||
| `okf.directory_listing(n100, 'krav/N100')` = 69 250 tegn | 69 250 | ✅ eksakt |
|
||
| `R761` i 2 756 av 2 756 dokumenter | 2 756/2 756 | ✅ |
|
||
| `validator.py` 0b er ren delstreng | `item.code not in grounding` | ✅ |
|
||
| `FileNotFoundError` utenfor `_RETURNABLE_REFUSALS` | bekreftet, 10 kall reiste den | ✅ |
|
||
| `run.py` krever `--docs-dir` også med `--bundle-dir` | bekreftet | ✅ |
|
||
| «0 av 26 fasit-konsepter åpnet i **24** `read_file`-kall» | 0 av 26, men **32 kall** | ⚠️ nevner rettet |
|
||
| «les toppnivå i en **egen** leser, som `own_frontmatter`» | P15 (`f13dc64`) gjorde allerede toppnivå til vinner | ❌ **premiss felt** |
|
||
| «P16s **20** rader» (B2-spiken) | 16 `affected_item`-koder over 13 forslagsartefakter | ⚠️ nevner rettet |
|
||
|
||
De tre avvikene er nevnere og et premiss, ikke uenighet om retningen. «24 kall» er de fire
|
||
kjøringenes **distinkte stier**; kallene er 32. Det felte premisset betydde at en egen
|
||
toppnivå-leser ville vært den andre kopien kø-(p) forbyr — `BundleFile.frontmatter` **er** allerede
|
||
konseptets eget felt.
|
||
|
||
---
|
||
|
||
## 1. DEL A — navigasjonsstigen
|
||
|
||
### A1/A2: én listing koster O(vindu), ikke O(nivå)
|
||
|
||
S7a-3 bandt kostnaden til oppføringer på ETT nivå. P16 målte hva ett nivå koster på et **levert**
|
||
korpus. Målt her, samme kall før og etter:
|
||
|
||
| Base | Nivå | Oppføringer | **Før** | **Etter (default)** | Fall |
|
||
|---|---|---:|---:|---:|---:|
|
||
| n200-2024 | `krav/N200` | 1 132 dok | 169 974 tegn | **1 537** | −99,1 % |
|
||
| r761-2025 | `R761` | **2 728 kataloger** | 110 912 tegn | **479** | −99,6 % |
|
||
| n100-2023 | `krav/N100` | 445 dok | 69 250 tegn | **1 493** | −97,8 % |
|
||
| n500-2024 | `krav/N500` | 269 dok | 39 853 tegn | **1 453** | −96,4 % |
|
||
|
||
**R761-raden er grunnen til at vinduet dekker begge slag.** En paginering bare over dokumenter
|
||
ville latt det største målte nivået stå upaginert — 110 912 tegn er større enn de 69 250 ordren ble
|
||
skrevet for. Dyreste enkeltkall noen kaller nå kan gjøre: **7 639 tegn** (`limit=50`, klemt).
|
||
|
||
Default 10 er valgt **mot taket**, ikke rundt: én oppføring er 121–209 tegn (median 145) over de
|
||
fire basene. n100 lander på 1 493 (ordrens bundne krav), n500 1 453, R761 479 — og **n200 på 1 537,
|
||
2,5 % over**, fordi taket er et *tegn*-budsjett og vinduet er et *antall*. Det står som målt, ikke
|
||
justert bort.
|
||
|
||
`filter` er en **delstreng**, ikke et mønster (`_ground_against_input`s grunn ett hakk ned: en form
|
||
regelen ikke kjenner returnerer ingenting, og en tom listing leses som «basen har ikke dette»).
|
||
Ordrens kjent-positiv, målt: `filter="rundkjøring"` på `krav/N100` gir **6 av 445** rader og 985
|
||
tegn, og de to `a1`-fasit-konseptene er blant dem. Kjent-negativ: et filter uten treff gir
|
||
`total_matches: 0` og tom liste — et **svar**, aldri en nekt.
|
||
|
||
### A3: en gjettet sti er en nekt, ikke «Error: Function failed.»
|
||
|
||
MÅLT før: **10 av 32** `read_file`-kall i P16s fire kjøringer navnga en sti basen ikke holder (8
|
||
distinkte; én er et ett-tegns UUID-avvik, `4d7f` for `4e7f`). Hvert av dem nådde modellen som MAFs
|
||
ugjennomsiktige streng, og telte mot de tre påfølgende verktøyfeilene som avslutter en forespørsel.
|
||
|
||
MÅLT etter, samme 32 kall spilt av: **10 navngitte nekter, 22 dokumenter fortsatt servert.** Nekten
|
||
navngir den nærmeste katalogen som faktisk *holder* dokumenter — valgt av `context_files`, aldri av
|
||
filsystemet, så den aldri kan levere en sti `read_dir` selv ville nektet, og aldri kan reklamere for
|
||
`type: verdict`-laget.
|
||
|
||
**Runde 2, levende:** `hallucinated_reads` er **0 i alle fem kjøringer** (runde 1: 3 · 3 · 4 · 2).
|
||
Nekten rakk aldri å fyre — modellen navnga bare stier en listing hadde gitt den.
|
||
|
||
### Ble vinduet faktisk BRUKT?
|
||
|
||
Sporet registrerer `name` + `bundle_id` + `path`, ikke `filter`/`offset`/`limit`, så spørsmålet kan
|
||
ikke leses direkte. Det kan måles indirekte: **5 av 31 `read_file`-kall i runde 2 åpnet dokumenter
|
||
som ligger UTENFOR default-vinduet** på sitt nivå (fv412 2 av 2, gate-nordvik-03 3 av 8). Modellen
|
||
kunne ikke ha navngitt dem uten å ha bedt om mer — altså brukte den `offset` eller `filter`.
|
||
**Hvilken av de to, vet vi ikke.** Se § 6, funn 1.
|
||
|
||
---
|
||
|
||
## 2. DEL B — stadium 0b
|
||
|
||
`R761` — basens eget navn, i alle 2 756 dokumenter — bar 250 000 NOK gjennom hele gaten til
|
||
`validated` i runde 1. Regelen nå: en kode grunner kun hvis den er ≥ 3 tegn **og** står i færre enn
|
||
5 % av dokumentene grunnlaget består av, med et **absolutt gulv på 10 dokumenter**.
|
||
|
||
**N og A er målt:**
|
||
|
||
* korteste ekte identifikator over alle fire kontekstsett: **4 tegn** (`12.1`, `52.1`) → N = 3 ligger
|
||
ett under målingen;
|
||
* dokumentfrekvens for hvert kodeformet token i hver base: **1 692 distinkte, og ingen når 5 %.**
|
||
Høyeste noe sted 6/446 = **1,35 %**; høyeste en fasit navngir 3/446 = **0,67 %**; `R761` **100 %**.
|
||
|
||
**Kjent-positiv (offline, P16s eget artefakt spilt av mot basen kjøringen fikk):**
|
||
|
||
```
|
||
Rejection: ungrounded identifier 'R761': it appears in 2756 of the 2756 documents
|
||
this run was given — a token that is in every document identifies none of them
|
||
```
|
||
|
||
**Kjent-negativ: 26 av 26** `must_cite`-referanser grunner fortsatt.
|
||
|
||
### B2 — spiken som felte ordrens egen alternativ-hypotese
|
||
|
||
Ordren ba om å **måle** (b) «grunnlag = det kjøringen ÅPNET». Målt over P16s 16 kode-rader:
|
||
|
||
| Regel | grunner | REFUSED (fraværende) | REFUSED (inert) |
|
||
|---|---:|---:|---:|
|
||
| 0b som den ble sendt (P7) | 2 | 14 | — |
|
||
| 0b med B1 | **1** | 14 | **1** |
|
||
| 0b over det kjøringen ÅPNET | 2 | 14 | — |
|
||
|
||
`R761` står i **hvert åpnede dokument også**, så **(b) ville ikke fanget defekten**. B1 gjør den
|
||
inert og lar samtidig den ekte prosesslinja `65 ASFALTDEKKER` (29/2 756 = 1,05 %) grunne.
|
||
**(b) er ikke et substitutt for B1.** Målt, ikke bygget — som ordren ba om.
|
||
|
||
---
|
||
|
||
## 3. DEL C
|
||
|
||
**C1** — `--docs-dir` er valgfri når `--bundle-dir` er gitt. På bundle-stien **leses** `docs_dir`
|
||
aldri; retrieval, chunk-verktøyet og «no citable content»-sjekken bor alle i veg-grenen. Alle fem
|
||
betalte kjøringer i runde 2 brukte ett-flagg-formen. To-flagg-formen (README) er uendret, og
|
||
veg-grenen nekter fortsatt uten en ekte `--docs-dir` (egen arm).
|
||
|
||
**C2** — dommerens snippet-arm teller kun under `citation_scope == "narrowed"`. **Isolert målt** ved
|
||
å re-dømme runde 1 med den nye dommeren:
|
||
|
||
| Kjøring | `named` gammel dommer | `named` ny dommer | hvorav modellens egen prosa |
|
||
|---|---:|---:|---:|
|
||
| kontrakt-sorasen-01 | **3** | **1** | 1 |
|
||
| de tre andre | 0 | 0 | 0 |
|
||
|
||
**2 av de 3 var helbase-artefaktet** — `12.1` står i R761s bodyer, så merket var «sitert» før noe
|
||
modellkall. Den ene som står igjen er `named_in_measure`: modellen sa det selv.
|
||
|
||
---
|
||
|
||
## 4. DEL D — stressrunde 2 (fem betalte kjøringer)
|
||
|
||
Samme fire sett, samme mandater, **samme parametre på alle fire** (`--max-rounds 3
|
||
--max-tokens 600000`), `gpt-4-1-mini`, profile `azure`, `PACE_SECONDS=2`.
|
||
|
||
| # | Sett | Base | rc | Veggtid | Maks RSS | Runde 1 (veggtid) |
|
||
|---|---|---|---:|---:|---:|---:|
|
||
| 1 | gate-nordvik-**02** | n100 | **0** | 70 s | 148 MB | 140,1 s (3/600k) |
|
||
| 2 | tunnel-hauglia-02 | n500 | **0** | 69 s | 140 MB | 73,5 s (3/600k) |
|
||
| 3 | fv412-**02** | n200 | **0** | 89 s | 172 MB | 176,0 s (**2**/900k) |
|
||
| 4 | kontrakt-sorasen-02 | r761 | **0** | 137 s | 267 MB | 218,7 s (3/**900k**) |
|
||
| 5 | gate-nordvik-**03** (varians) | n100 | **0** | 103 s | 148 MB | — |
|
||
|
||
**0 av 5 døde på taket** (runde 1: **3 av 7**) — og to av settene kjørte nå på et **lavere** tak enn
|
||
runde 1 måtte gi dem. Det er den eneste klart tilskrivbare effekten av DEL A på den betalte stien.
|
||
|
||
**To sett er direkte sammenlignbare** (identiske parametre i begge runder): n100 **140,1 s → 70 s**
|
||
og n500 **73,5 s → 69 s**. n200 og r761 fikk i runde 1 henholdsvis `2`/900 000 og `3`/900 000 for å
|
||
komme i mål; i runde 2 klarte begge `3`/600 000. Veggtid er ikke tokenforbruk (funn 4), så n100s
|
||
halvering er et *signal*, ikke en måling av hva listingene kostet.
|
||
|
||
### Dommen, sett mot sett
|
||
|
||
| Kjøring | (a) grounded | (b′) named | hallusinerte koder | gjettede lesestier | a4 |
|
||
|---|---:|---:|---:|---:|---|
|
||
| **Runde 1** gate-nordvik-01 | 0/4 | 0 | 4 | **3** | ✅ |
|
||
| **Runde 1** tunnel-hauglia-01 | 0/4 | 0 | 3 | **2** | ✅ |
|
||
| **Runde 1** fv412-01 | 0/4 | 0 | 3 | **3** | ✅ |
|
||
| **Runde 1** kontrakt-sorasen-01 | 0/4 | 3 → *1 med ny dommer* | 5 | **4** | ❌ **validert** |
|
||
| **Runde 2** gate-nordvik-02 | 0/4 | 0 | 3 | **0** | ✅ |
|
||
| **Runde 2** tunnel-hauglia-02 | 0/4 | 0 | 5 | **0** | ❌ **validert** |
|
||
| **Runde 2** fv412-02 | 0/4 | 0 | 5 | **0** | ✅ |
|
||
| **Runde 2** kontrakt-sorasen-02 | 0/4 | 1 | 4 | **0** | ✅ |
|
||
| **Runde 2** gate-nordvik-03 | 0/4 | 0 | 4 | **0** | ✅ |
|
||
|
||
**Varians (02 mot 03, identiske parametre):** utfallet er *ikke* stabilt. 02 nådde a4 aldri
|
||
(rundeboka tok slutt), 03 evaluerte den og avviste den. Kodene modellen fant på er ulike
|
||
(`gangfelt-opphevet` mot `OPPHOYD-GANGFELT`), verktøykallene er 12 mot 24, og 02 etterlot en
|
||
`parse-failures.json` (modellen foreslo et **negativt** beløp) mens 03 ikke gjorde det. De åpnede
|
||
stiene overlapper delvis: begge åpnet `id-b84139f4…` og `id-6592f8a6…`; 03 åpnet i tillegg tre
|
||
dokumenter utenfor default-vinduet. **Én ekstra kjøring er ikke et utvalg** — dette sier at variasjon
|
||
finnes, ikke hvor stor den er.
|
||
|
||
### a4-armen: én feil i hver runde, på hvert sitt sett
|
||
|
||
**r761 er reparert, men ikke av B1 — og det skal sies.** I runde 2 foreslo modellen koden
|
||
`Kontraktsum`, ikke `R761`, så avvisningen kom fra «appears nowhere»-armen som fantes fra før. B1s
|
||
virkning på nettopp den raden er bevist **offline** (§ 2), ikke levende.
|
||
|
||
**Ny feil: tunnel-hauglia a4 ble VALIDERT** på koden `impulsventilator`. Målt: den står i **3 av
|
||
270** dokumenter — altså genuint til stede, langt under 5 %, og B1 kan ikke og skal ikke felle den.
|
||
Samme klasse: fv412 `a1` ble validert på `bituminøst bærelag` (**4 av 1 133**).
|
||
|
||
**Det er ikke en grunnings-defekt, det er en forankrings-defekt.** Begge er *vanlige norske ord fra
|
||
standardens prosa*, ikke kostlinjer. Ingen av de fire basene bærer en kostbaseline, så stadium 0
|
||
hoppes over, og ingenting binder en «kode» til en pris noen har skrevet. Se § 6, funn 2.
|
||
|
||
---
|
||
|
||
## 5. Hva hver fiks kjøpte — kort
|
||
|
||
| Fiks | Målt virkning | Tilskrivbar? |
|
||
|---|---|---|
|
||
| A1 vindu | 39 853–169 974 → 479–1 537 tegn per listing; 0 av 5 kjøringer døde på taket (var 3 av 7) | **Ja** (fritt + betalt) |
|
||
| A2 filter | 445 → 6 rader for ordrens kjent-positiv; 5 av 31 leste dokumenter lå utenfor default-vinduet | Delvis — at vinduet ble utvidet er målt, at **filteret** gjorde det er ikke |
|
||
| A3 nekt | 10 av 32 replayede kall gir nå navngitt nekt; **0** gjettede stier i runde 2 (var 12) | **Ja** |
|
||
| B1 inert-token | P16s a4-artefakt går fra `validated` til `rejected` offline; 26/26 fasit-referanser beholdt | **Ja, offline.** Ikke levende i runde 2 |
|
||
| C1 `--docs-dir` | fem betalte kjøringer på ett-flagg-formen | **Ja** |
|
||
| C2 dommer | kontrakt-sorasen-01 `named` 3 → 1 | **Ja** (isolert) |
|
||
|
||
**Det (a) ikke kjøpte: 0 av 26 fasit-konsepter åpnet, i begge runder.** Se § 6, funn 3.
|
||
|
||
---
|
||
|
||
## 6. Gjenstående stygt — hvert funn med en navngitt løsning
|
||
|
||
**Funn 1 — sporet sier ikke HVORDAN nivået ble snevret inn.** `ToolCall` bærer `name`, `bundle_id`
|
||
og `path`. `filter`/`offset`/`limit` registreres ikke, så «brukte modellen filteret?» må måles
|
||
indirekte (§ 1). **Løsning:** utvid `ExplorationToolRecorder`s `_string_argument`-lesning til de tre
|
||
nye argumentene og legg dem i `trace_payload` ved siden av `path` — samme søm S7a-3 pkt. 3 alt bygde.
|
||
**Anslag:** én ordre, ~2 t, én ny load-bearing-fil med tre armer (registrer · dropp · koerser).
|
||
|
||
**Funn 2 — en «kostkode» kan være et vanlig ord fra prosaen.** `impulsventilator` (3/270) og
|
||
`bituminøst bærelag` (4/1 133) ble begge validert. B1 kan ikke felle dem (de er sjeldne), og stadium
|
||
0 er hoppet over fordi ingen av basene bærer en kostbaseline. **To løsninger, ulik pris:**
|
||
(i) *forme-krav i 0b* — en kode må matche `_IDENTIFIER_FORMS` **når inputen tilbyr slike former**
|
||
(P8s `GroundingOffer` måler nettopp det). Billig (~3 t), men bryter P7s egen regel om at gaten ikke
|
||
skal handle om fasonger, og kan felle en ekte kode i et korpus med en form vi ikke har målt.
|
||
(ii) *gjør `--require-cost-baseline` obligatorisk for stresstesten* — ærlig, men F4 målte at ingen
|
||
vegnormal bærer kostlinjer, så alle fire settene ville nektet. **Anbefaling: (i), som en RAPPORT
|
||
først** (`GroundingOffer` sier alt hvor mange identifikator-formede tokens inputen har), og som gate
|
||
kun etter en måling på et korpus som faktisk bærer koder.
|
||
|
||
**Funn 3 — 0 av 26 fasit-konsepter åpnet, uendret.** Modellen navigerer nå riktig og billig, men
|
||
den leter ikke etter *kravet som binder*; den leter etter noe å sette en pris på. Det er en
|
||
prompt-/rolle-sak, ikke en stige-sak. **Løsning:** gi hypotesisereren en eksplisitt instruks om å
|
||
navngi kravet før den foreslår et kutt, og la `quick_validate` returnere «du har ikke sitert noe
|
||
krav» som rådgivende dom. **Anslag:** én ordre, ~4 t, og den må måles betalt (2 kjøringer ≈ NOK 5).
|
||
|
||
**Funn 4 — en kjøring som lykkes sier ikke hva den brukte.** `token_usage` finnes bare i
|
||
`BudgetExceeded`-meldingen, altså kun når kjøringen *feiler*. Alle fem kjøringene i runde 2 ga rc 0,
|
||
så **denne rapporten kan ikke oppgi tokenforbruk per kjøring.** **Løsning:** legg `tokens_spent` og
|
||
`rounds` på `RunResult` og i `{run_id}-runconfig.json` (eller en `-usage.json`). **Anslag:** ~1,5 t.
|
||
|
||
**Funn 5 — `--max-rounds 3` gjør at a4 og own-proposal ofte aldri evalueres.** Fire av fem
|
||
kjøringer rapporterte «budget exhausted before this approach was evaluated» for minst én rad. Det er
|
||
rundeboka (`max_rounds*4`), ikke tokentaket. **Løsning:** ingen kodeendring — det er en
|
||
parameterbeslutning; men dommerens `not_evaluated`-rad bør skille «rundebok» fra «tokentak».
|
||
**Anslag:** ~1 t.
|
||
|
||
---
|
||
|
||
## 7. Kostnad — IKKE VERIFISERT
|
||
|
||
Ingen faktura er lest, og **tokenforbruket per kjøring er ikke tilgjengelig** (funn 4). Runde 1
|
||
brukte 2 679 305 tokens på sju kjøringer ≈ NOK 15 (anslag fra listepris). Runde 2 er fem kjøringer
|
||
med kortere veggtid og billigere listinger; **et anslag på under NOK 10 er en antakelse, ikke en
|
||
måling**, og oppgis bare fordi ordren ber om et anslag med uttalt antakelse.
|
||
|
||
### Rettelse 15.09 (P19 D1) — feltet FANTES, og tallene står her
|
||
|
||
**Setningen over er feil som skrevet, og funn 4 var feil som formulert.**
|
||
`provenance.token_usage` (`provenance.py:60`, satt i `run.py` fra `meter.tokens`) er stemplet på
|
||
HVERT `-proposal.json` siden S3.4, også ved rc 0, og står i hver eneste av runde 2 sine. Det som
|
||
manglet var ikke feltet, men en LESER: ingenting i treet leste det. P19 D1 gir `stress.py` den
|
||
lesningen, og `{run_id}-verdict.json` bærer nå `token_usage`.
|
||
|
||
Målt 15.09 mot artefaktene runde 2 etterlot:
|
||
|
||
| kjøring | token_usage |
|
||
| --- | --- |
|
||
| gate-nordvik-2027-02 | 35 406 |
|
||
| tunnel-hauglia-2027-02 | 45 642 |
|
||
| fv412-dekkefornyelse-2027-02 | 44 468 |
|
||
| kontrakt-sorasen-2027-02 | 73 627 |
|
||
| gate-nordvik-2027-03 | 89 911 |
|
||
| **sum** | **289 054** |
|
||
|
||
Mot runde 1 sine **2 679 305** (§ 3 i P16-rapporten) er det **−89 %**, og det er den største målte
|
||
effekten av P18s navigasjonsarbeid. Anslaget «under NOK 10» står som anslag; det som ikke lenger er
|
||
en antakelse er forbruket. **Tilføyelse, ikke omskriving:** avsnittet over står som det ble
|
||
skrevet, fordi en rapport som retter seg selv i stillhet ikke er en rapport.
|
||
|
||
Det som IKKE fantes og nå er bygget (P19 D2) er den andre halvdelen: `settle` printer
|
||
coverage-rapporten og `ApproachOutcome` har båret `not_evaluated` siden Trekk A3, men ingen av dem
|
||
nådde en FIL. `{run_id}-coverage.json` bærer dem nå, med `stop_reason` fra `BudgetExceeded.kind`.
|
||
|
||
---
|
||
|
||
## 8. Verifisering
|
||
|
||
* `uv run pytest -q` → **1699 passed / 5 skipped** (1670 på `cfd9079`; +29, 0 fjernet — strengt supersett)
|
||
* `uv run ruff check src tests` + `ruff format --check` rene · `uv run mypy src` rent (38 filer)
|
||
* `shasum -a 1 tests/golden/demo-transcript.stdout` (av **INNHOLDET**, ikke git-blob) =
|
||
`ea8c534773acdbe41ae68f2c55724d69aaf8be4f` — **BYTE-UENDRET**
|
||
* Mutasjoner: se § 9
|
||
* Fire gratis `--live-dry-run` før betaling, alle rc 0, med identiske `Grounding offer`-tall som
|
||
runde 1 (435 / 272 / 982 / 3 identifikatorer) — kontrollen på at `Grounding`-strukturen ikke
|
||
endret hva gaten måler
|
||
|
||
---
|
||
|
||
## 9. Mutasjoner
|
||
|
||
Hver mutasjon kjørt mot **HELE** suiten i et isolert git-worktree, én om gangen, med grønn kontroll
|
||
foran seg. Kontroll DEL A: **1685 passed / 5 skipped** (`9b47e5a`). Kontroll DEL B+C:
|
||
**1698 passed / 5 skipped** (`7a7c988`).
|
||
|
||
### DEL A — sju mutasjoner, alle røde, hver med sin egen signatur
|
||
|
||
| # | Mutasjon | Røde | Signatur |
|
||
|---|---|---:|---|
|
||
| A1 | ingen vindu i det hele tatt (før-P18) | **8** | de fire leverte nivåene + begge S7a-3-armene + klemmen + offset |
|
||
| A2 | bundet, men VAKUØST (tom side) | **26** | 12 filer, hvorav ni eldre enn dette arbeidet |
|
||
| A3 | `total` droppet (nevneren) | **11** | inkl. filter-negativen og begge S7a-3-armene |
|
||
| A4 | filteret leser bare tittelen | **1** | `test_the_filter_reads_the_reference_number_and_not_only_the_title` ALENE |
|
||
| A5 | en fraværende sti reiser igjen | **4** | to nye + begge armene i den omskrevne tripwire-fila |
|
||
| A6 | et filter uten treff NEKTER | **1** | `test_a_filter_that_matches_nothing_is_an_answer_and_not_a_refusal` ALENE |
|
||
| A7 | filteret snevrer ikke kataloger | **1** | `test_a_filter_narrows_directories_too` ALENE |
|
||
|
||
A2 er den viktigste: en tom listing består HVERT kostnadstak perfekt og gir navigatøren ingenting.
|
||
At den felles av 26 armer i tolv filer — de fleste skrevet lenge før denne ordren — er dét som gjør
|
||
bindingen noe annet enn en gate som bare kan bli grønn.
|
||
|
||
### DEL B+C — ti mutasjoner, ni røde, **én grønn som ble et funn**
|
||
|
||
| # | Mutasjon | Røde | Signatur |
|
||
|---|---|---:|---|
|
||
| B1 | regelen detachet | **3** | kjent-positiv + diskriminatoren + lengde-armen |
|
||
| B2 | flagg ALT som er til stede | **77** | hele pipelinen — kontrollen som beviser at regelen ikke bare kan nekte |
|
||
| B3 | andels-konjunktet droppet | **2** | kjent-positiv + diskriminatoren |
|
||
| B4 | det ABSOLUTTE gulvet droppet | **74** | hver pre-P18-fixtur brekker — gulvet er dét som gjør regelen URØRENDE for dem i stedet for å unnta dem |
|
||
| B5 | nevneren ut av grunnen | **1** | kjent-positiv ALENE |
|
||
| B6 | `run.py` komponerer ÉN blob igjen | **0 → 1** | **se under** |
|
||
| B7 | lengde-konjunktet droppet | **1** | `test_a_token_too_short…` ALENE |
|
||
| C1 | `--docs-dir` påkrevd igjen | **2** | begge C1-armene |
|
||
| C1b | CLI-en videresender aldri basen | **2** | de samme to — rc og sømmen er to ulike påstander |
|
||
| C2 | snippet-armen ignorerer scopet | **1** | `test_e_a_whole_base_snippet_does_not_name_the_concept` ALENE |
|
||
|
||
**B6 VAR GRØNN, og det er repoets vakuøs-gate-klasse for SEKSTENDE gang.** Å reversere `run.py` til
|
||
én blob lot HELE suiten stå grønn (1 698 passed / 5 skipped). Komposisjons-armen driver
|
||
`_grounding_text` med en `Grounding` den bygger *selv*, så den kan ikke se hva KJØRINGEN leverte —
|
||
og en blob har nøyaktig én grense, så gulvet kan aldri nås, andelen aldri fyre, og defekten er
|
||
tilbake intakt. **Regelen er ikke bedre enn grensene den får.**
|
||
|
||
Arm (h) er gaten som manglet: en crafted base med TOLV konseptfiler som alle bærer samme token — per
|
||
dokument **12 av 17** og inert, som blob **1 av 1** og grunnende — med en kontroll på en kode bare
|
||
ÉN fil bærer, som fortsatt må validere. Målt rød mot nøyaktig den mutasjonen. Mutasjonen ble ikke
|
||
droppet, og sømmen ble ikke uttalt som uvitnet: den fikk et vitne.
|