portfolio-optimiser/docs/2026-09-11-p11-okf-081.md
Kjell Tore Guttormsen ce22b0e0e6 docs(p11): okf 0.8.1 measured - source-quota carries the denominators, one prior constant ranked the price schedule out [skip-docs]
P11 (order 20260910T225652Z), NOK 0, no push. PATH okf is 0.8.1 (uv tool list,
__version__, --help flags). src/ untouched.

(ix) on 0.8.1 shipped: 629/623/6 and 629/620/9 - PM's predicted denominators,
now measured. --no-source-quota alone gives back 629/621/8 and 629/617/12 in
both arms; the exact numbers are an interaction with tie-shared-rank (both
arms) and stem-prefix (open arm). --title-covered never fires here (byte-
identical payload). 0.8.1 with the three new rules off reproduces the 0.7.0
payloads' delivered lists and budgets.

P10 section 6 diagnosed: a bisect over okf's own history (known-positive at
both ends) puts the price schedule's loss at okf 38104b7, whose only consume
code change is DOCUMENT_PRIOR_EXPONENT 1.0 -> 0.5; putting that one constant
back in a copy returns the old payload byte for byte. tie-shared-rank is ruled
out; known_positive 10349 -> 12563 is a version marker, not the mechanism. On
0.8.1 the schedule is over_budget_after_knapsack, not below_k.

okf check on 0.8.1 has 15 rules, not 16: rule 16 (bundle_mismatch) is on okf
main 7cca9e0, in no tag. Run from an export of 7cca9e0 the K3-15 pair is rc 1
and the right pair rc 0 - a real cross-corpus mismatch, not an okf defect.

Offer rows on four corpora: identifiers unchanged (65/50, 435, 982, 272).

The P10 doc gets dated additions in sections 4 and 6; the old sentences stand.
Test docstring: +2 lines naming the 0.8.1 rule count, no behaviour change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 01:38:58 +02:00

28 KiB
Raw Blame History

P11 — po på okf 0.8.1

Ordre 20260910T225652Z-5329131326-from-.claude, 2026-09-11. Ingen betalt kjøring. NOK 0. Ingen push. okf på PATH: 0.8.1 (tagg v0.8.1 = 3daf983). Basen: ~/repos/portfolio-optimiser/scratchpad/s7c/k2-bundle-s7c ved ref sha256-tree:f14872a01104e47474093611b1960c6c541e4701dc40147a00c8e1b337c8a92a. Spørsmålet ordrett: «Finn kostnadsbesparelser i Stange skole-anbudet».

§ 0 Hva som ER målt og hva som IKKE er det

Målt:

  • At PATH-okf er 0.8.1, målt på tre uavhengige måter (§ 2).
  • At P10s premiss (ix), PMs forutsagte nevnere 629/623/6 og 629/620/9, holder på 0.8.1. P10s avvik skyldtes versjonen, og det er nå en måling i stedet for en forklaring (§ 3).
  • Hvilken regel som bærer flyttet: --no-source-quota ALENE gir 0.7.0-nevnerne tilbake i begge armer. De eksakte 0.8.1-tallene er et samspill med --tie-shared-rank (begge armer) og --stem-prefix (åpen arm). --title-covered fyrer aldri på denne basen (byte-identisk payload).
  • At 0.8.1 med de tre nye reglene av reproduserer 0.7.0-payloadene: samme leverte liste og samme budsjett.
  • Diagnosen P10 § 6 manglet: prisskjemaet ble rangert ut av ÉN produsent-konstant, nemlig dokument-prioren DOCUMENT_PRIOR_EXPONENT 1.0 → 0.5 i okf 38104b7. Funnet ved bisect over okf sin historikk og bevist med en én-variabel-test. --tie-shared-rank er utelukket, og flyttet i known_positive er en versjonsmarkør og ikke mekanismen. På 0.8.1 er prisskjemaet ikke lenger rangert ut. Det kuttes av budsjettet (§ 4).
  • Tilbudsradene over fire korpus: identifikator-tallene står uendret på 0.8.1, mens chars flytter seg fordi payloaden er en annen (§ 5).
  • At okf check på 0.8.1 har 15 regler, ikke 16, og at K3-15-paret er et ekte avvik mellom to korpus. Det siste er målt med 16-regel-checkeren fra okf main (§ 6).

IKKE målt:

  • Ingenting her er bekreftet mot en levende modell. Ingen betalt kjøring er gjort.
  • Hva et budsjett-kuttet prisskjema koster et forslag.
  • Om eksponent 0.5 er riktig for K2 generelt. okf sveipet den over 18 rader, og dette er ÉTT spørsmål.
  • Hva scratchpad/nbundler-p2/skill-n100/SKILL.md inneholdt da N-dokumentet 2026-09-08 målte «exit 0 × 3» (§ 6).

§ 1 Premisser, med utfall per rad

# premiss (ordrens) utfall kommando
(i) HEAD d8dadbf, to utrackede. po sin ls-remote er umålt av PM HEAD og de to utrackede stemmer eksakt. git ls-remote origin main = d8dadbf… = HEAD, altså upushet = 0. STATE sa 4 (455d611, målt 10.09); operatøren har pushet siden git rev-parse --short HEAD · git status --porcelain · git ls-remote origin main
(ii) STATE er 119 linjer 119 wc -l STATE.md
(iii) arbeidstre 1 577/5, frossen eksport 1 566/5 + 11, ruff, format 199, mypy, golden alle. Frossen eksport: 1 566 passed / 5 skipped, 1 failed + 10 errors, altså de 11 navngitte, med 18 linjer not a git repository. mypy: 37 filer. Golden ea8c534… uv run pytest -q · git archive d8dadbf til /tmp + uv run --frozen pytest -q · uv run ruff check src tests · uv run ruff format --check src tests · uv run mypy src · shasum -a 1 tests/golden/demo-transcript.stdout
(iv) PATH-okf er 0.8.1 på tre måter, se § 2 § 2
(v) flaggene ordrett fra --help ordrett. --source-quota har default 2, --stem-prefix er PÅ siden 2026-09-09 okf consume --help
(vi) (ix) = P10 l. 39, considered/withheld/delivered brukt som FØR-rader
(vii) basen ved ref f14872a0… assertert med --ref i HVER re-kutting (okf nekter ved avvik): 14 + 1 + 14 sonder, alle rc 0 okf consume … --ref sha256-tree:f14872a0…
(viii) spørsmålet ordrett
(ix) P9 § 4 sine seks tilbudsrader reprodusert eksakt på dagens kode scratchpad/p11/measure_p11.py
(x) § 6-diagnosen (PM-premiss) ⚠️ DELVIS. «Rangert ut, ikke filtrert» på 0.7.0. «Tie-breaking utelukket» . «Produsent-versjonsforskjell» , nå navngitt som 38104b7. «known_positive 10 349 → 12 563» er IKKE mekanismen : det tallet flytter seg ved 17c49fc og c95d189 mens den leverte lista står byte-identisk. På 0.8.1 er koden heller ikke below_k, men over_budget_after_knapsack § 4
(xi) innboksen har 3 meldinger 3, og alle er ført til terminaltilstand find ~/.claude/coord/portfolio-optimiser/inbox -type f | wc -l → 3, deretter 0
(xii) K3-15-paret går fra rc 0 til rc 1 AVVIK på PATH-0.8.1: fortsatt rc 0 / 15 regler. Flippen holder bare på okf main 7cca9e0, som ingen tagg inneholder § 6
(xiii) foreldede «15 regler»-sitater funnet der premisset sa (test-docstring l. 3, STATE l. 25/30). Men 15 er fortsatt riktig tall på 0.8.1. Docstringen fikk en presisering, se § 7 git grep -n -E '15 (regler|rules)'
(xiv) måleteknikk fulgt: rc fanget direkte, --out rett til fil, --k og ikke -k
«okf check med 16 regler» 15 på PATH-0.8.1. 16 finnes bare på 7cca9e0 § 6
grep -rn 'okf check' src tests scripts gir ett treff 1 treff, en docstring. grep rc 0

§ 2 Versjonsmålingen

uv tool list
#   llm-ingestion-okf v0.8.1
#   - okf
which okf
#   ~/.local/bin/okf
~/.local/share/uv/tools/llm-ingestion-okf/bin/python -c "import llm_ingestion_okf as p; print(p.__version__)"
#   0.8.1
okf --version
#   usage: okf [-h] {consume,check,skill,project,build} ...   (rc 2: flagget finnes ikke)
git -C ~/repos/llm-ingestion-okf ls-remote origin main
#   7cca9e079edc…  refs/heads/main
git -C ~/repos/llm-ingestion-okf ls-remote --tags origin 'v0.8*'
#   v0.8.0^{} = 4d1f9d3…   v0.8.1^{} = 3daf983…

Flagglista fra okf consume --help på 0.8.1, ordrett, ved siden av 0.7.0-lista som P10 § 3 målte:

0.7.0: --cost-vocabulary --k --limit --no-tie-shared-rank --out --question
       --rarity-weight --ref --reserve-top-rank --tie-shared-rank --withheld-titles
0.8.1: --question --k --limit --cost-vocabulary --reserve-top-rank --rarity-weight
       --tie-shared-rank --no-tie-shared-rank --stem-prefix --no-stem-prefix
       --title-covered --no-title-covered --source-quota N --no-source-quota
       --withheld-titles --out --ref

Seks flagg er nye: --stem-prefix/--no-stem-prefix («ON since 2026-09-09»), --title-covered/--no-title-covered («ON since 2026-09-10») og --source-quota N/--no-source-quota («Default 2 since 2026-09-10»). --tie-shared-rank er PÅ («ON since 2026-09-10»). --help er primærkilden for flagg, ikke okf sin CHANGELOG.

§ 3 (ix)-tabellen — 0.7.0 og 0.8.1 side om side

Alle 0.8.1-rader er kjørt med okf 0.8.1. De fire lesesidereglene --source-quota 2, --stem-prefix, --title-covered og --tie-shared-rank er PÅ som default, og hver rad slår av det som står i navnet. «pris» sier hvor del-ii-bilag-7-prisskjema/prissammenstilling-sheet-1 (67 245 tegn) havnet. po sin egen prepass.admit_payload mot den monterte basen gir ADMITTED på alle 18.

Default-armen (flaggløs: --k 8, --limit 120000):

payload okf considered / withheld / delivered budsjett brukt av limit title pris levert tekst (tegn)
s7c GAMMEL 6776c37 629 / 621 / 8 79 440 av 120 000 0 av 8 withheld below_k 72 535
p10 v2 0.7.0 629 / 621 / 8 54 931 av 120 000 8 av 8 withheld below_k 47 679
r1 shipped 0.8.1 629 / 623 / 6 67 011 av 120 000 6 av 6 withheld below_k 60 646
r2 --no-source-quota 0.8.1 629 / 621 / 8 54 931 av 120 000 8 av 8 withheld below_k 47 679
r3 --no-stem-prefix 0.8.1 629 / 623 / 6 67 011 av 120 000 6 av 6 withheld below_k 60 646
r4 --no-title-covered 0.8.1 629 / 623 / 6 67 011 av 120 000 6 av 6 withheld below_k 60 646
r5 --no-tie-shared-rank 0.8.1 629 / 621 / 8 73 211 av 120 000 8 av 8 withheld below_k 64 756
r6 de tre nye av 0.8.1 629 / 621 / 8 54 931 av 120 000 8 av 8 withheld below_k 47 679
r7 alle fire av 0.8.1 629 / 621 / 8 71 999 av 120 000 8 av 8 withheld below_k 63 644

Den åpne armen (--cost-vocabulary --k 12 --limit 160000):

payload okf considered / withheld / delivered budsjett brukt av limit title pris levert tekst (tegn)
s7c GAMMEL 6776c37 629 / 617 / 12 150 249 av 160 000 0 av 12 LEVERT pos. 10 141 470
p10 v2 0.7.0 629 / 617 / 12 88 297 av 160 000 12 av 12 withheld below_k 76 824
r1 shipped 0.8.1 629 / 620 / 9 108 219 av 160 000 9 av 9 withheld over_budget_after_knapsack 97 772
r2 --no-source-quota 0.8.1 629 / 617 / 12 85 873 av 160 000 12 av 12 withheld below_k 74 510
r3 --no-stem-prefix 0.8.1 629 / 619 / 10 147 593 av 160 000 10 av 10 withheld over_budget_after_knapsack 135 343
r4 --no-title-covered 0.8.1 629 / 620 / 9 108 219 av 160 000 9 av 9 withheld over_budget_after_knapsack 97 772
r5 --no-tie-shared-rank 0.8.1 629 / 619 / 10 143 733 av 160 000 10 av 10 LEVERT pos. 8 133 844
r6 de tre nye av 0.8.1 629 / 617 / 12 88 297 av 160 000 12 av 12 withheld below_k 76 824
r7 alle fire av 0.8.1 629 / 617 / 12 77 645 av 160 000 12 av 12 withheld below_k 66 696

Hva tabellen sier, én påstand om gangen:

  1. PMs forutsigelse holder på 0.8.1. Shipped gir 629/623/6 og 629/620/9. P10s avvik skyldtes altså versjonen, og det er nå målt og ikke bare forklart.
  2. --source-quota er den ene regelen som er NØDVENDIG i begge armer. r2 alene gir 629/621/8 og 629/617/12 tilbake. Mekanismen står i withheld-kodene. På r1 er 209 (default) og 219 (åpen) konsepter source_quota_exceeded, fordi kvoten 2 skyver ut de mange små utdragene fra SHA-planen og romlisten (v2 har opptil 5 fra én kilde, r1 høyst 2). Plassene fylles av de neste kandidatene, som er større, og knapsacken dropper 2 og 3 av dem over budsjett. Resultatet er færre utdrag med mer tekst: budsjettet øker med 22,0 % og 22,6 %, levert tekst med 27,2 % og 27,3 %.
  3. De eksakte tallene er et SAMSPILL, ikke én regel. I default-armen krever fallet fra 8 til 6 at også --tie-shared-rank er på: r5, med kvote på og tie av, gir 8. I den åpne armen krever fallet fra 12 til 9 at også --stem-prefix og --tie-shared-rank er på: r3 og r5 gir 10. Ingen enkeltregel kan få æren alene.
  4. --title-covered fyrer aldri på denne basen. r4 er byte-identisk med r1 i begge armer (shasum -a 1 gir 0ec7157e… og f9346cbf… for begge par), som okf sin egen melding sa for K2.
  5. 0.8.1 med 0.7.0s regler ER 0.7.0. r6 har samme leverte (concept_id, text_sha256)-liste, samme budsjett og samme tekst som v2 i begge armer. Det eneste som skiller dem er budget.known_positive (12 563 → 13 238), altså kontraktsdokumentet instrumentet måler seg selv mot.
  6. Hvert utdrag i alle 14 nye payloads bærer title.

§ 4 Prisskjemaet — diagnosen P10 § 6 manglet

Rang uten kutt. Sonden bruker samme flagg per rad, men --k 200 --limit 50000000, så knapsack-kuttet aldri fyrer:

arm r1 r2 r3 r4 r5 r6 r7
default 193 193 192 193 194 193 over 200 (below_k)
åpen 20 20 21 20 20 21 20

rank i et utdrag er LEVERINGSPOSISJON (len(delivered) + 1 i okf consume.py), ikke fusjonsrang. Med k = 200 leverer alle radene 200, så posisjonen blir rangen. I den åpne armen står prisskjemaet på 2021 under hver rad. Ingen av de fire flaggene bringer det tilbake til topp 12. I den gamle payloaden sto det på 10.

Bisect over produsentens egen historikk, åpen arm. Hver commit er kjørt fra git archive <commit> src tools docs under scratchpad/p11/bisect/, med okf-verktøyets egen python og commitens egne defaults. okf-repoet er bare lest, og PATH-okf er urørt. Kjent-positiv på BEGGE ender: 6776c37 gir den gamle payloaden og v0.7.0 gir v2, begge med identisk levert liste (concept_id + text_sha256).

okf-commit åpen: considered / withheld / delivered budsjett known_positive pris = s7c GAMMEL = v2
6776c37 629 / 617 / 12 150 249 10 349 LEVERT pos. 10 ja nei
56ae274 · 56c1205 · 116d3e1 · a37d5ce 629 / 617 / 12 150 249 10 349 LEVERT pos. 10 ja nei
17c49fc 629 / 617 / 12 151 131 12 049 LEVERT pos. 10 ja nei
c95d189 · c3b645b · f6fea13 629 / 617 / 12 153 011 12 563 LEVERT pos. 10 ja nei
38104b7 629 / 617 / 12 77 645 12 563 withheld below_k nei nei
a364ef4 629 / 617 / 12 88 297 12 563 withheld below_k nei ja
v0.7.0 629 / 617 / 12 88 297 12 563 withheld below_k nei ja

Budsjettet og known_positive flytter seg ved 17c49fc og c95d189 mens lista står. 38104b7 (2026-09-09, «recovery yields to declaration, and 9 % of the corpus that was in no segment») endrer tre hunks i consume.py. Den eneste kodelinja som verken er kommentar eller docstring er dokument-prioren: totals[document] / units[document] blir totals[document] / units[document] ** DOCUMENT_PRIOR_EXPONENT, med konstanten satt til 0.5. En tetthet blir sublineær, så et dokument delt i mange enheter får prioren sin tilbake. Ved 38104b7 tar romliste-teknisk 8 av 12 plasser.

Én-variabel-testen. Eksportene ligger under scratchpad/p11/exponent/, og KUN den ene linja er endret i kopien (sed, 1 treff av 1):

produsent eksponent åpen, k 12 pris (k 12) pris uten kutt = s7c GAMMEL = PATH-0.8.1 shipped
38104b7 0.5 (som levert) 629 / 617 / 12 withheld below_k pos. 20 nei
38104b7 1.0 629 / 617 / 12 LEVERT pos. 10 pos. 10 ja, byte-lik liste
v0.8.1 0.5 (som levert) 629 / 620 / 9 withheld over_budget_after_knapsack pos. 20 nei ja (kontroll)
v0.8.1 1.0 629 / 620 / 9 withheld over_budget_after_knapsack pos. 10 nei nei

Default-armen går samme vei (bisect, flaggløs). Lista er lik den gamle til og med f6fea13 (72 535 tegn). Den faller ved 38104b7 til 63 644 tegn; med eksponent 1.0 i kopien er det 72 535 og byte-lik liste igjen. Den faller en gang til ved a364ef4, til 47 679, som er lik v2. Det andre fallet er nøyaktig det --no-tie-shared-rank reverserer på 0.8.1: r7 (alle fire av) har samme leverte liste som 38104b7, og r6 (tie PÅ) samme liste som a364ef4. Det er målt i begge armer.

Konklusjon, med tall:

  • Prisskjemaet ble RANGERT UT, ikke filtrert, og av én produsent-konstant: DOCUMENT_PRIOR_EXPONENT 1.0 → 0.5 i okf 38104b7. Satt tilbake i en kopi av den commiten gir konstanten den gamle payloaden byte-identisk tilbake, med prisskjemaet på posisjon 10.
  • --tie-shared-rank er utelukket som årsak. Prisskjemaet var alt below_k ved 38104b7, før tie-effekten kom (a364ef4), og r7 på 0.8.1 (tie av) gir below_k. Tie-regelen bærer derimot den ANDRE halvdelen av tekstfallet i default-armen (63 644 → 47 679).
  • known_positive 10 349 → 12 563 er en versjonsmarkør, ikke mekanismen. Tallet flyttet seg ved 17c49fc og c95d189 mens den leverte lista sto byte-identisk.
  • Det finnes intet flagg for prioren. okf 0.8.1 med alle fire lesesideregler av er byte-lik 38104b7.
  • På 0.8.1 er diagnosen en ANNEN. Prisskjemaet er ikke lenger below_k, fordi kvoten løfter det inn i kortlista. Det er over_budget_after_knapsack: 67 366 byte tekst mot en rest knapsacken ikke har. Med --limit 240000 leveres det på posisjon 7 (11 levert). Med --no-tie-shared-rank alene leveres det på posisjon 8. Eksponent 1.0 alene på 0.8.1 gir det rang 10 uten kutt, men kuttet står.

§ 5 Tilbudsradene — fire korpus, samme instrument

Instrumentet er scratchpad/p9/measure_v070.py, kopiert til scratchpad/p11/measure_p11.py med to endringer: absolutte stier, og id-dumpene lagt i scratchpad/p11/, så P9s egne filer ikke skrives over. Komposisjonen er uendret: den SHIPPEDE generate.grounding_offer over render_context(payload) pluss basens tekst, slik run_project komponerer _grounding_text.

Kjent-positiv-kontroll FØR bruk. P8s tre K2-rader, byte-identisk:

rad konsepter tegn identifikatorer = P8
K2 s7c + payload-open 630 1 991 597 50
K2 s7c + payload-default 630 1 970 415 50
K2 s7a2 (peker-armen) 629 1 894 500 50

Tilbudet, P9 og 0.8.1 side om side. Alle radene har 0 kostlinjer og derive REFUSED:

Korpus Bygg Konsepter P9-payload: tegn / id 0.8.1-payload: tegn / id
K2 (uten payload) v0.7.0-pinnen 453 1 940 723 / 65 — (ingen payload)
K2 + åpen v0.7.0-pinnen 453 2 037 246 / 65 2 043 690 / 65
K2 + default v0.7.0-pinnen 453 2 016 064 / 65 2 005 070 / 65
K2 + åpen s7c (payloadens egen base) 630 1 991 597 / 50 1 998 041 / 50
K2 + default s7c (payloadens egen base) 630 1 970 415 / 50 1 959 421 / 50
N100 n100-2023 v0.7.0 (V3) 446 462 041 / 435 461 939 / 435
N200 n200-2024 v0.7.0 (V3) 1 133 1 500 962 / 982 1 497 743 / 982
N500 n500-2024 v0.7.0 (V3) 270 408 220 / 272 411 188 / 272

P9-kolonnen er reprodusert eksakt på dagens kode. «P9-payload» er de samme filene P9 brukte (scratchpad/s7c/payload-*.json og scratchpad/nbundler-p2/payload-n*.json). «0.8.1-payload» er re-kuttet i denne økta (scratchpad/p11/payload-{open,default}-r1-shipped.json og scratchpad/p11/payload-n*-081.json). N-payloadene er kuttet med P2s egen default-kommando, og spørsmålet er LEST ut av den gamle payloaden.

Hypotesen holdt for identifikatorene, men ikke for tegnene. Ingen N-rad flytter seg i identifikatorer, fordi hver identifikator i kuttet også står i basens tekst. chars flytter seg på alle radene, fordi grounding_offer leser kuttet PLUSS basen, og kuttet er et annet. Rang 1 er fortsatt det spurte kravet på alle tre (Krav 3.3.1—13, Krav 2.9.2—12, Krav 10.2—2), men rang 28 er andre dokumenter.

N-ablasjonen (scratchpad/p11/n-ablation/, samme seks rader som for K2). r7 (alle fire av) er byte-lik P2-payloaden på alle tre. r2 (--no-source-quota) gir SAMME leverte liste som shipped. r3 og r5 flytter hver for seg rang 28. Rangflyttet bæres altså av --stem-prefix og --tie-shared-rank, ikke av kvoten, slik --help sier («a bundle with no alternatives is unaffected»).

En observasjon, ikke et funn mot okf. Kvoten endrer likevel payloaden på en base med én kilde: ikke utdragene, men withheld-kodene. Alle 438, 1 125 og 262 withheld-oppføringene er source_quota_exceeded på 0.8.1, mot below_k på P2 og på r2. «Rangert ut» og «kappet av kvoten» er to ulike fakta, og på en base med én kilde viser payloaden bare det andre. Ingen FYI er sendt, fordi dette er et valg av kodeprioritet og ingen målt verdi er gal.

§ 6 okf check — regelantall, nevnere og kjent-negativ

På PATH-okf 0.8.1 (scratchpad/p11/check_matrix.sh, rc fanget direkte), 24 rader:

skill payload rc rapportlinje funn
SKILL-k2-s7c (0.8.1, samme base) 14 P11-payloads, r1r7 × 2 armer 0 × 14 conformant: 15 rules over 612 excerpts og 617623 withheld 0
SKILL-k2-s7c p10/payload-default-v2.json 0 conformant: 15 rules over 8 excerpts and 621 withheld entries 0
SKILL-k2-s7c p10/payload-open-v2.json 0 conformant: 15 rules over 12 excerpts and 617 withheld entries 0
SKILL-k2-s7c s7c/payload-default.json (GAMMEL) 1 NOT conformant: 15 rules over 8 excerpts and 621 withheld entries 8 × excerpt_unnamed
SKILL-k2-s7c s7c/payload-open.json (GAMMEL) 1 NOT conformant: 15 rules over 12 excerpts and 617 withheld entries 12 × excerpt_unnamed
SKILL-k2-s7c kjent-negativ {} 1 NOT conformant: 15 rules over 0 excerpts and 0 withheld entries 9
P10s SKILL (0.7.0, samme base) p10/payload-default-v2.json 0 conformant: 15 rules … 0
K3-15: P9s SKILL (pinnen, 18ae18ab…) nbundler-p2/payload-n100.json (da6b8204…) 0 conformant: 15 rules over 8 excerpts and 438 withheld entries 0
SKILL-n100 (0.8.1, generert her) nbundler-p2/payload-n100.json 0 conformant: 15 rules … 0
SKILL-n100 p11/payload-n100-081.json 0 conformant: 15 rules … 0
P2s skill-n100/SKILL.md nbundler-p2/payload-n100.json 0 conformant: 15 rules … 0

Regelantallet på PATH-0.8.1 er 15, ikke 16, i hver av de 24 radene. Grunnen er målt i okf-repoet, som bare er lest. rule_bundle_identity (bundle_mismatch) kom i 7cca9e0. Ingen tagg inneholder den commiten (git tag --contains 7cca9e0 er tom), og den er ikke forfar til v0.8.1 (git merge-base --is-ancestor 7cca9e0 v0.8.1 → rc 1). Installert contract_check.RULES = 15. Antall rule_-definisjoner: 15 i v0.8.1 og 16 i 7cca9e0.

Med 16 regler. 7cca9e0 er kjørt fra git archive under scratchpad/p11/okf-7cca9e0/, med dens src først på PYTHONPATH til okf-verktøyets python (versjonsstreng 0.8.1, RULES 16). PATH-okf er urørt.

skill payload rc rapportlinje funn
K3-15: P9s SKILL (pinnen 18ae18ab…) nbundler-p2/payload-n100.json (da6b8204…) 1 NOT conformant: 16 rules over 8 excerpts and 438 withheld entries 1 × bundle_mismatch, på både bundle_id og ref
riktig par: SKILL-n100 (generert for n100-2023) nbundler-p2/payload-n100.json 0 conformant: 16 rules over 8 excerpts and 438 withheld entries 0
riktig par p11/payload-n100-081.json 0 conformant: 16 rules … 0
SKILL-k2-s7c P11 r1 default / åpen · P10 v2 default / åpen 0 × 4 conformant: 16 rules … 0
samme id, annen build: P9s SKILL (pinnen 18ae18ab…) p10/payload-default-v2.json (f14872a0…) 1 NOT conformant: 16 rules … 1 × bundle_mismatch, på ref ALENE
P2s skill-n100/SKILL.md nbundler-p2/payload-n100.json 1 NOT conformant: 16 rules … 1 × bundle_mismatch: skill-en deklarerer vegnormal-n500-2024
SKILL-k2-s7c kjent-negativ {} 1 NOT conformant: 16 rules over 0 excerpts … 9

Avgjørelsen om K3-15-paret: et EKTE avvik, ikke en okf-defekt. SKILL-en og payloaden er fra to ulike korpus: k2-trinn1-20260903 ved 18ae18ab… mot vegnormal-n100-2023 ved da6b8204…. En SKILL generert for N100-bundelen går rc 0 med 16 regler mot samme payload. Derfor er det ikke sendt noen FYI om en defekt. Svaret på okf sin melding gir disse tallene.

FUNN i po sin egen scratchpad. scratchpad/nbundler-p2/skill-n100/SKILL.md deklarerer vegnormal-n500-2024 ved 673a0c2c… (270 konsepter), altså N500. skill-n500 deklarerer det samme, mens skill-n200 er riktig. Under 16 regler går N100-paret fra rc 0 til rc 1. N-dokumentet 2026-09-08 (§ 1, rad 6) rapporterer «exit 0 × 3» med --skill skill-n100/SKILL.md. Filene har mtime 2026-09-09 16:55, så hva fila inneholdt da den målingen ble gjort er ikke målt og kan ikke gjenskapes herfra. Det daterte dokumentet er urørt.

Nevneren for påstanden om at ingen po-kjøring tolker en okf check-exit som byggefeil: grep -rn 'okf check' src tests scripts gir 1 treff (grep rc 0): docstringen i tests/test_unnamed_excerpt_observation_loadbearing.py. Ingen skript og ingen test kaller okf check.

§ 7 Hva som ble endret i sporede filer

  • src/: 0 filer. Dette er en måle- og dokumentasjonsordre, og ingen måling tvang fram en kodeendring. _ground_against_input er urørt.
  • tests/test_unnamed_excerpt_observation_loadbearing.py: docstring, +2 linjer, ingen endret atferd. Setningen om P9 (0.7.0, 15 regler) står. Tilføyelsen sier at P11 målte 15 igjen på 0.8.1, og hvor den 16. regelen er.
  • docs/2026-09-10-p10-konform-k2-payload.md: datert tilføyelse i § 4 og § 6. Den gamle setningen står.
  • docs/okf-konsum-kontrakter.md: urørt. Den bærer ingen okf-versjon, ingen regeltelling og ingen konsumkommando: grep -n -E 'okf (consume|check)|regler|rules|--stem|--source-quota' docs/okf-konsum-kontrakter.md gir 0 treff. 0.8.1 har altså ikke gjort noe tall der galt, og et flagg uten en kommando å stå i ville vært støy.
  • STATE.md (local-only).

§ 8 Honesty limits

  • Ingen betalt kjøring er gjort. NOK 0. Ingenting her er bekreftet levende. At en modell bruker et navngitt, kvote-spredt kutt bedre er ikke vist.
  • En re-spilt payload er en NY måling, ikke en reparert gammel. scratchpad/s7c/payload-{default,open}.json og scratchpad/p10/payload-{default,open}-v2.json er urørt: shasum -a 1 gir 1ea1c389…, c3779de9…, af113bf9… og ff7f264e…, både før og etter. Alle nye filer ligger i scratchpad/p11/.
  • Nevneren for konformans er ÉN bundle i ÉN build. bundle_id identifiserer ikke bytene: tre K2-builds bærer k2-trinn1-20260903 ved tre ulike refs, og 16-regel-checkeren flagger nettopp det paret som bare skiller seg på ref. Sammenlign alltid ref.
  • okf check er GULVET, aldri beviset. Alle 14 nye K2-payloads er konforme, og den åpne armen leverer likevel ikke prisskjemaet. Formen holder; innholdet er et annet.
  • K2-tilbudsraden sammenligner ULIKE builds: v0.7.0-pinnen (18ae18ab…, 453 konsepter) rendret med payloads kuttet fra s7c-basen (f14872a0…, 629). Raden er gjentatt fordi P9 hadde den. De to «egen base»-radene i § 5 er den ærlige sammenligningen.
  • 16-regel-tallene er målt fra en git archive-eksport av okf main, ikke fra en installert release. Det er en utagget commit, og en fremtidig tagg kan avvike.
  • Bisect og én-variabel-test er kjørt med okf-verktøyets python mot eksporterte trær. Kjent-positiv på begge ender, og kontrollen der v0.8.1-eksporten er lik PATH-payloaden, gjør det til en måling av produsenten. Det er likevel ikke produsentens egen test.
  • Diagnosen i § 4 gjelder ÉTT spørsmål på ÉN base. Om eksponent 0.5 er riktigere enn 1.0 for K2 er verken bekreftet eller avkreftet. okf målte sine 18 rader, og dette er én rad til.
  • (A) prosa-skanningen, (B) blindsone-VALGET og (C) sporing av leverte kutt som fixturer forblir OPERATØRENS og ble ikke flyttet av denne økta.

§ 9 Reproduksjon

Skriptene ligger under scratchpad/p11/. De er utracket og følger ikke med i git archive HEAD, så kjernekommandoene er gjengitt her.

# (ix), én rad (åpen arm, shipped)
okf consume ~/repos/portfolio-optimiser/scratchpad/s7c/k2-bundle-s7c \
  --question "Finn kostnadsbesparelser i Stange skole-anbudet" \
  --ref sha256-tree:f14872a01104e47474093611b1960c6c541e4701dc40147a00c8e1b337c8a92a \
  --cost-vocabulary --k 12 --limit 160000 --out scratchpad/p11/payload-open-r1-shipped.json
# ablasjonen: legg til --no-source-quota | --no-stem-prefix | --no-title-covered | --no-tie-shared-rank
bash scratchpad/p11/gen_k2.sh                     # 14 payloads
uv run python scratchpad/p11/analyze.py           # § 3
python3 scratchpad/p11/gen_n.py                   # tre N-payloads på 0.8.1
uv run python scratchpad/p11/measure_p11.py       # § 5
bash scratchpad/p11/check_matrix.sh               # § 6, 15 regler
# 16 regler, uten å røre PATH-okf:
git -C ~/repos/llm-ingestion-okf archive 7cca9e0 src | tar -x -C scratchpad/p11/okf-7cca9e0
PYTHONPATH=scratchpad/p11/okf-7cca9e0/src ~/.local/share/uv/tools/llm-ingestion-okf/bin/python \
  -c 'import sys, llm_ingestion_okf.cli as c; sys.argv=["okf"]+sys.argv[1:]; sys.exit(c.main())' \
  check --skill <SKILL.md> --payload <payload.json>
# bisect: for hver commit i 6776c37, git log --reverse 6776c37..v0.7.0 -- consume-stiene, og v0.7.0:
git -C ~/repos/llm-ingestion-okf archive <c> src tools docs | tar -x -C scratchpad/p11/bisect/tree-<c>
PYTHONPATH=scratchpad/p11/bisect/tree-<c>/src <okf-python> scratchpad/p11/bisect/tree-<c>/tools/okf_consume.py \
  <base> --question "<spørsmålet>" --cost-vocabulary --k 12 --limit 160000 --out <fil>
# én-variabel: det samme, med DOCUMENT_PRIOR_EXPONENT = 0.5 -> 1.0 i kopiens consume.py (sed, 1 treff)