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:
Kjell Tore Guttormsen 2026-09-07 14:39:50 +02:00
commit 183191e51c
5 changed files with 385 additions and 15 deletions

View file

@ -332,20 +332,51 @@ def test_a_dimension_config_without_the_flag_is_accepted(tmp_path: Path) -> None
assert main(_run_argv(tmp_path, "--dimension-config", str(dim))) == 0
def _explore_config(tmp_path: Path) -> str:
path = tmp_path / "explore.json"
path.write_text(
json.dumps(
{
"max_rounds": 2,
"max_tokens": 5000,
"max_stall_count": 1,
"max_reset_count": 1,
"max_plan_revisions": 0,
"enable_plan_review": False,
}
),
encoding="utf-8",
)
return str(path)
def test_it_is_refused_with_explore(
tmp_path: Path, capsys: pytest.CaptureFixture[str], monkeypatch: pytest.MonkeyPatch
) -> None:
"""The exploration reads the WHOLE base with all four navigator tools and then hands its
mandate to a debate told it is under a declared cut this plan's own grounds for withdrawing
the tools, one caller over."""
mandate to a debate told it is under a declared cut this seam's own grounds for withdrawing
the tools, one caller over.
**The argv is one ``--explore`` would otherwise be ACCEPTED on**, and the assertion is on
wording only THIS refusal produces. MEASURED: without ``--explore-config`` the run falls
through to "--explore requires --explore-config", which also contains the token
``--explore`` so an arm asserting on that token alone stays green against the very mutation
it exists for (økt 57's own lesson: never assert on a substring two refusals share).
"""
_refuse_model(monkeypatch)
rc = main(
_run_argv(
tmp_path, "--explore", "finn tiltak", "--prepass-payload", _payload_file(tmp_path)
tmp_path,
"--explore",
"finn tiltak",
"--explore-config",
_explore_config(tmp_path),
"--prepass-payload",
_payload_file(tmp_path),
)
)
assert rc == 1
assert "--explore" in capsys.readouterr().err
assert "cannot be combined" in capsys.readouterr().err
def test_a_plain_run_without_the_flag_is_accepted(tmp_path: Path) -> None: