docs(prepass): before/after on K2, the mutation battery and the invariant row
Steg 8. Ingen produksjonskode i denne commiten utover de TRE testarmene tre GROENNE mutasjoner tvang fram. MAALING (`docs/2026-09-07-okf-prepass-i-debatten.md`), instrumentet validert mot en kjent-positiv FOER foerste tall (K2 rotlisting = 3 954 tegn / 1 495 o200k-tokens, S7a-3s publiserte tall eksakt; skriptet asserterer paa det og nekter aa rapportere ellers): - KUTTET paa levert K2: 629 = 621 + 8, tre regler navngitt. Payload paa disk 40 425 tok; renderingen debatten ser 5 162 tok -- 87 % av kostnaden er withheld-lista, som aldri naar prompten. - FOER/ETTER, tre armer fordi "FOER" ikke er ett tall. Like-for-like (en debatt som GAAR stigen mot det deklarerte kuttet): 10 prompter / 7 031 tok -> 3 prompter / 10 641 tok. **+51 %, og dokumentet paastaar ikke at dette er en besparelse.** Det som kjoepes er nevnerne, et re-maalbart `ref`, og at stempelet slutter aa overdrive: siteringer 629 -> 8. - SPOERSMAALET BASEN IKKE SVARER PAA: aatte arkitekttegninger, og **5,5x dyrere** enn det gode spoersmaalet (28 312 mot 5 162 tok). En TOM leveranse er bevis for fravaer; en FULL er IKKE bevis for tilstedevaerelse -- og med verktoeyene trukket har debatten ingen vei til aa oppdage det selv. Uttalt som den reelle handelen, ikke oppdaget i drift. LOAD-BEARING: 32 mutasjoner, ALLE ROEDE mot HELE suiten, maks en per Bash-kall, restaurert fra `scratchpad/` med `shasum -c` (aldri `git checkout`). Groenn kontroll **1467 passed / 5 skipped** (fra 1387/5; **+80 node-ider, 0 fjernet**, maalt med `comm` mot en baseline tatt foer foerste commit). Golden `shasum -a 1` av INNHOLDET = ea8c534773acdbe41ae68f2c55724d69aaf8be4f, BYTE-UENDRET. `pyproject.toml` uroert. TRE MUTASJONER VAR GROENNE FOERST, og alle tre var TESTFEIL -- ikke soemfeil. Ingen ble droppet: - M9: injeksjonsarmen satte `text_sha256` fra den INJISERTE teksten, saa `text_sha256`-grenen fyrte i stedet, og armen matchet paa "text" -- en DELSTRENG av `text_sha256`. En angriper kontrollerer begge avledede medlemmer, saa fixturen setter naa `text_sha256` til digesten av den EKTE teksten; da er likhetssjekken det eneste som staar i veien. Ny parallell arm beviser at de to sjekkene ikke er en sjekk. - M18: fixturbasen navigerer til fire ikke-verdict-konsepter og payloadet leverer ALLE fire, saa "siter de leverte" og "siter alt navigerbart" ga SAMME sett. Armen flytter naa ett utdrag til `withheld` og asserterer `delivered < navigable` FOER den maaler. - M32: uten raden falt kjoeringen gjennom til "--explore requires --explore-config", som ogsaa navngir `--explore`. Oekt 57s regel ordrett -- assert aldri paa en delstreng to nekter deler. Armen bruker naa en argv `--explore` ellers ville blitt AKSEPTERT paa. Co-Authored-By: Claude <claude-opus-5>
This commit is contained in:
parent
ca98888358
commit
183191e51c
5 changed files with 385 additions and 15 deletions
68
CLAUDE.md
68
CLAUDE.md
|
|
@ -1976,6 +1976,74 @@ Python ≥3.10. MAF (`agent-framework-core` 1.16.0, `-orchestrations` 1.1.1 —
|
|||
`run_portfolio` tar INGEN reviewer, og fraværet er ASSERTERT; K2-prisene er SYNTETISKE og ingen
|
||||
LEVENDE modell har svart på en review (structured-output-grensens klasse). Måling:
|
||||
`docs/2026-09-04-major2-proposal-review-k2.md`.
|
||||
- **Debatten kan få et DEKLARERT KUTT i stedet for pekeren, og kuttet kan ikke levere bytes basen
|
||||
ikke holder (OKF-pre-passet, 07.09, ordre `20260907T080223Z`):** S2c ga debatten en peker og fire
|
||||
navigatørverktøy, og den navigerer godt — målt 06.09 nådde en levende modell prisformen i TRE
|
||||
steg av 630 konseptdokumenter. Det er samtidig et **UERKLÆRT kutt**: ingenting i kjøringen sa hvor
|
||||
mange konsepter som ble vurdert, hvor mange holdt tilbake, eller etter hvilken regel.
|
||||
Konsumkontraktens § 2.3 (`llm-ingestion-okf/docs/consumption-contract.md` @ `54a0bc2`, normativ)
|
||||
kaller det en nevnersvikt forkledd som et svar — samme regel repoet alt holder under
|
||||
`skipped_links`, `unkeyed_verdicts` og `cost_baseline_anchored`. `--prepass-payload FILE` gir
|
||||
kjøringen et `okf-consumption/1`-payload: de leverte utdragene PLUSS de tre nevnerne.
|
||||
**po produserer intet payload og vendrer ingen produsent** (§ 2.4: transporten er ikke del av
|
||||
kontrakten) — en subprosess mot produsentens checkout ville bundet pakka til en sti på én maskin
|
||||
og dødd i `git archive HEAD`; en kopi av et 1 038-linjers rangeringsinstrument er kø-(p).
|
||||
**VERKTØYENE TREKKES under et payload** (§ 2.2: kontekst pre-passet holdt tilbake ble holdt
|
||||
tilbake med vilje) — en debatt som holder BEGGE er fri til å gå rundt kuttet den nettopp
|
||||
erklærte. MCP-appenden ligger BEVISST under forgreningen: dette trekker navigatørverktøyene, ikke
|
||||
verktøylista (M17 → 4 røde). Målt: `tools=[]` når tråden som `tools: None`, så ingen uprøvd
|
||||
tom-array-form innføres. **INJEKSJONSFLATEN ER LUKKET VED KONSTRUKSJON, ikke ved prosa:** `sha256`
|
||||
digester HELE den monterte fila mens `text` er et AVLEDET medlem, så et payload kan bære korrekt
|
||||
digest ved siden av vilkårlig tekst — og `text` er dét som lander i task-meldingen.
|
||||
`verify_against_bundle` RE-UTLEDER teksten lokalt (frontmatter delt på `splitlines()`, NFC,
|
||||
per-linje `rstrip` — TRANSKRIBERT fra produsentens kilde og MÅLT mot et ekte payload; en naiv
|
||||
`split("\n")` er UENIG, M10 → 20 røde) og krever likhet, så et payload ikke kan levere bytes
|
||||
basen ikke holder. Eksponeringen er dermed «basens eget innhold i prompten», som `read_file` alt
|
||||
gjør; det som gjenstår er POSISJONEN, og teksten legges i en avgrenset DATA-blokk under
|
||||
instruksjonen (§ 9.3) — lindring, uttalt som det. **De to gatene som bodde i det tilbaketrukne
|
||||
`read_file` er reist på nytt på det MONTERTE dokumentet** (verdict-laget og § 4.1a), aldri
|
||||
delegert til produsentens egne regler — produsenten ekskluderer verdict-laget selv, og dét er
|
||||
nøyaktig grunnen til at en av repoets nyest gatede invarianter ikke kan hvile på en fil en ekstern
|
||||
kaller leverte. **`delivered == 0` NEKTES ved navn før debatten**, med nevnerne, spørsmålet og
|
||||
ref-en sitert: målt er den tilstanden bare nåbar når hvert konsept feilet leksikalsk, altså bevis
|
||||
for FRAVÆR (§ 7.3s egen posisjon), og uten den falt kjøringen gjennom til siteringsvakten hvis
|
||||
melding navngir `docs_dir` — `None` på denne stien. **Siteringene bygges av de LEVERTE
|
||||
konseptene** (629 → 8 på K2): et stempel som siterte hele korpuset for et forslag som så åtte
|
||||
dokumenter gjenoppfinner den uerklærte påstanden inne i selve etterprøvbarhets-artefaktet.
|
||||
**`ref` bæres, aldri re-beregnet** — `sha256-tree` er produsentens algoritme; vi verifiserer de
|
||||
leverte dokumentene, ikke hele treet (uttalt ærlighets-grense). `RunResult.prepass` og
|
||||
`DryRunReport.prepass` DEFAULTER (`skipped_links`-halvdelen: `None` er det sanne utsagnet «ingen
|
||||
payload ble gitt»); `ProvenanceStamp` er BEVISST urørt (stempelet beskriver gaten som dømte ÉN
|
||||
kandidat). `prepass_notice` er ENESTE renderer, `None` uten payload, og omisjonen er gatet av
|
||||
golden-transkriptet som uavhengig, eksisterende vitne (M23 → 2 røde).
|
||||
`{run_id}-prepass.json` skrives IFF et payload ble gitt, fra `finally`, ved et DIREKTE kall (ikke
|
||||
`_write_or_report`, hvis påkrevde `in_flight` bindes først i genererings-blokka og hvor `None`
|
||||
ville latt en `OSError` fortrenge en `BudgetExceeded` i luften) — og tilstedeværelsen KVALIFISERER
|
||||
`{run_id}-debate.json`s nå-alltid-tomme `tool_calls`, som ellers er uskillbar fra S2c-regresjonen
|
||||
den fila skrives ubetinget for å synliggjøre. Seks CLI-nekter, hver ved NAVN med rc-0-kontroll;
|
||||
`hosting.py` er BEVISST URØRT (MAJOR-4/S7b) — feltet er i ingen av de tre settene, så den
|
||||
generiske 400-en svarer og Fase 4es to halvdeler står, gatet av en testarm i stedet for en
|
||||
redigering. **Load-bearing MÅLT: 32 mutasjoner, ALLE RØDE mot HELE suiten** + grønn kontroll
|
||||
**1467 passed / 5 skipped** (fra 1387/5; **+80 node-ider, 0 fjernet**, målt med `comm` mot en
|
||||
baseline tatt før første commit) og golden `demo-transcript.stdout` BYTE-UENDRET (`shasum -a 1`
|
||||
av INNHOLDET = `ea8c534773acdbe41ae68f2c55724d69aaf8be4f`). **TRE MUTASJONER VAR GRØNNE FØRST, og
|
||||
alle tre var TESTFEIL** (vakuøs-gate-klassen, nittende til tjueførste gang): M9 satte
|
||||
`text_sha256` fra den INJISERTE teksten, så `text_sha256`-grenen fyrte og armen matchet på
|
||||
`"text"` — en DELSTRENG av `text_sha256`; M18s fixturbase leverer nøyaktig de fire konseptene
|
||||
`bundle_citations` returnerer, så «siter de leverte» og «siter alt» ga SAMME sett; M32 falt
|
||||
gjennom til «`--explore` requires `--explore-config`», som også navngir `--explore` (økt 57s
|
||||
regel ordrett). **Ærlighets-grenser, uttalt:** ingen LEVENDE modell har lest et rendret kutt;
|
||||
dette er IKKE en besparelse (like-for-like på K2: 7 031 → 10 641 prompt-tokens, +51 %, ti prompter
|
||||
→ tre) men et DEKLARERT kutt og et re-målbart `ref`; en TOM leveranse er bevis for fravær mens en
|
||||
FULL **ikke** er bevis for tilstedeværelse — målt returnerer «Hvilken farge har fyrtårnet i
|
||||
Alexandria?» åtte arkitekttegninger, og **5,5× dyrere** enn det gode spørsmålet, mens debatten med
|
||||
verktøyene trukket ikke har noen vei til å oppdage det selv; `--explore` er NEKTET, ikke løst, så
|
||||
utforskningens eget kutt er fortsatt uerklært; `budget.limit` er produsentens valg (vi nekter
|
||||
`spent > limit`, vi setter ikke taket, og testen binder OVERHEADET — O(levert tekst) + O(1) — ikke
|
||||
totalen); og **pre-passet kan ikke lese en eneste av repoets egne baser** (ingen erklærer
|
||||
`bundle_id` på rot-indeksen, S7a-3s måling sett fra produsentsiden, og `shared/` er pull-only), så
|
||||
fixturen er bygget på en KOPI med erklært id. Måling:
|
||||
`docs/2026-09-07-okf-prepass-i-debatten.md`.
|
||||
- **STATE.md er local-only** (gitignored). Voyage session-state er efemert; STATE.md er kanonisk kontinuitet.
|
||||
- Prosess: Voyage-plugin (`/trekbrief → /trekplan → /trekexecute → /trekreview`) per større fase.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue