feat(prepass): name the delivered excerpt nobody named, never refuse it [skip-docs]

GREEN for order 20260910T051343Z (P10). `unnamed_excerpts` reports every
delivered excerpt carrying no `title`, BY CONCEPT ID and in payload order --
ids, never a count, because "3 of 4 are unnamed" cannot be taken back to a
producer and "these three concepts are" can (ko-(y), one level down). It is
carried on `PrepassDeclaration` (DEFAULTED -- the `skipped_links` half, since
an empty trace here is an honest POSITIVE statement) and into
`{run_id}-prepass.json`, where a reader already looks for the denominators.

Absence ALONE, mirroring okf's `excerpt_unnamed` exactly: `title: ""` is a
name the producer chose badly, and reclassifying it would be repair.

Load-bearing MEASURED, five mutations all red against the WHOLE suite, green
control 1577 passed / 5 skipped (from 1570/5, superset, 0 removed), golden
demo-transcript.stdout BYTE-UNCHANGED (shasum -a 1 of the CONTENT =
ea8c534773acdbe41ae68f2c55724d69aaf8be4f): M1 the rule finds nothing (3 red) .
M2 it flags every excerpt (4, incl. the known-positive control) . M3 an empty
title counts as an absence (1 -- that arm ALONE) . M4 it never reaches the
declaration (2) . M5 it stops at the dataclass (1 -- the artefact arm ALONE).

Replay measured in the same session: both K2 payloads re-cut with okf consume
(PATH okf 0.7.0) into scratchpad/p10/, old files untouched. `okf check` goes
rc 1 / 8 and 12 findings -> rc 0 / 0 findings on both, 15 rules, known-negative
{} still rc 1 / 9. DIVERGENCE from the order's premise (ix): the denominators
did NOT move (629/621/8 and 629/617/12) because PATH okf 0.7.0 carries neither
--stem-prefix nor --source-quota. UNORDERED FINDING: the cut's CONTENT is a
different one -- the open arm no longer delivers the price schedule, delivered
text 141 470 -> 76 824 chars. Observed, not diagnosed.

docs/2026-09-10-p10-konform-k2-payload.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-10 08:03:38 +02:00
commit d8dadbf236
2 changed files with 227 additions and 0 deletions

View file

@ -0,0 +1,202 @@
# P10 — én konform K2-payload på disk
Ordre `20260910T051343Z-8984415658-from-.claude`, økt 112, 2026-09-10.
Ingen betalt kjøring. **NOK 0.** Ingen push.
## § 0 Hva som ER målt og hva som IKKE er det
**Målt:**
* At de to K2-payloadene `scratchpad/s7c/payload-default.json` og `…/payload-open.json` gir
`okf check` **rc 1** med **8** og **12** funn, alle `excerpt_unnamed`, mot 15 regler (P9s tall,
reprodusert her).
* At en re-spilling av de SAMME to armene mot den SAMME basen med dagens `okf consume` gir
payloads der **hvert** utdrag bærer `title`, og at `okf check` da gir **rc 0 / 0 funn** på begge.
* At kjent-negativen `{}` fortsatt gir **rc 1 / 9 funn**, altså at sjekken kan feile.
* At po sin egen `prepass.admit_payload` ADMITTERER alle fire payloadene mot den monterte basen.
* At po sin konsument tidde om det okf navngir: en manglende `title` forsvant sporløst.
* At de leverte DOKUMENTENE er andre etter re-spillingen enn før — inkludert at den åpne armen
ikke lenger leverer prisskjemaet.
**IKKE målt:**
* Ingenting her er bekreftet mot en levende modell. Ingen betalt kjøring er gjort.
* At en modell LESER et navngitt utdrag bedre enn et navnløst. `okf check` måler form, ikke bruk.
* Hva prisskjema-bortfallet (§ 4) betyr for et forslags kvalitet. Det krever en betalt kjøring.
## § 1 Premisser (i)(xiii), med utfall per rad
| # | premiss | utfall |
|---|---|---|
| (i) | HEAD `3082e70`, upushet = 2, `git ls-remote origin main` = `455d611…` | ✅ reprodusert eksakt |
| (ii) | to utrackede: presentasjons-HTML + `scratchpad/` | ✅ ingen tredje |
| (iii) | 1 570 / 5 · ruff rent · format 0/198 · mypy 37 · golden `ea8c534…` · STATE 120 | ✅ alle. `ruff` er ikke på PATH som bart navn; `uv run ruff` er formen |
| (iv) | fire `okf check`-rader, 20 funn alle `excerpt_unnamed` | ✅ reprodusert byte for byte |
| (v) | rc fanges direkte, aldri gjennom rør | ✅ fulgt (`out=$(…); rc=$?`) |
| (vi) | `okf consume` er produsenten, gratis, ingen nettverk | ✅ default-armen på 1,7 s, åpen på 2,9 s |
| (vii) | basen på disk gir ref `sha256-tree:f14872a01104…` | ✅ og **byte-for-byte det begge gamle payloadene deklarerer** |
| (viii) | `bundle_id` identifiserer ikke bytene | ✅ bekreftet; se § 5 |
| (ix) | PM målte nye nevnere 629/623/6 og 629/620/9 | ❌ **AVVIK — mine tall gjelder: 629/621/8 og 629/617/12, altså UENDRET.** Forklaring i § 3 |
| (x) | tre defaults flyttet seg etter at de gamle ble sporet | ⚠️ **delvis**: PATH-okf 0.7.0 har `--tie-shared-rank`, men **ikke** `--stem-prefix` og **ikke** `--source-quota` |
| (xi) | po produserer ingen payload, har ingen `tools/` | ✅ **VOID bekreftet.** Modul-docstringen sier ordrett «po produces no payload and vendors no producer»; `ls tools` → No such file or directory |
| (xii) | `title` er frivillig med skrevet grunn | ✅ `str \| None = None`; grunnen er sitert i § 2 |
| (xiii) | (A), (B), (C) er operatørens | ✅ uendret, ingen av dem flyttet av denne økta |
## § 2 Formvalget i pkt. 2: **F1 (rapporterende)**, og hva F2 ville kostet
`PrepassExcerpt`-docstringen begrunner at hvert nytt felt defaulter til `None`: *«a required field
would refuse every payload written before today».* F2 ville reversert nøyaktig den setningen, og
prisen er et tall.
**Målt 2026-09-10 over alle payload-filer i repoet:**
```
TOTAL payload-filer: 20
F2 ville AVVIST: 10 av 20
F2 ville AKSEPTERT: 10 av 20
```
Blant de ti F2 ville avvist er `tests/fixtures/prepass/bygg-energi-mikro-fixture.payload.json`
**4 utdrag, 0 med `title`** — den ENE git-trackede payload-fixturen, som driver hver av de
seks andre prepass-suitene. F2 ville altså krevd at en sporet fixtur ble skrevet om for at F2s
egen regel skulle bli grønn. Det er ikke en pris denne ordren autoriserer, og det er ikke en
avveining en konsument skal ta på en produsents vegne.
**F1 avviser ingenting.** `prepass.unnamed_excerpts(payload)` navngir de leverte utdragene som
bærer ingen `title`, **ved konsept-id og i payload-rekkefølge** — ikke som et antall: «3 av 4 er
navnløse» kan ikke tas tilbake til en produsent, «disse tre konseptene er det» kan
(`BudgetExceeded`s kø-(y)-regel ett nivå ned). Observasjonen bæres videre på
`PrepassDeclaration.unnamed_excerpts` og inn i `{run_id}-prepass.json`.
**Feltet DEFAULTER til tom tuppel** — `skipped_links`-halvdelen, aldri `cost_baseline_anchored`s:
en tom trace er her et ærlig POSITIVT utsagn («hvert levert utdrag ble navngitt»), mens en påkrevd
bool måtte påstå noe om en hendelse og begge defaults ville iblant vært usanne.
**Fravær ALENE, speilet av okf sin regel.** Et utdrag der produsenten skrev `title: ""` ER
navngitt, dårlig; å omklassifisere det ville vært reparasjon, og headeren viser det allerede som
`title: ` der et fraværende viser ingenting. `_ground_against_input` er URØRT (P8s invariant).
**Load-bearing MÅLT**, fem mutasjoner alle røde mot HELE suiten, grønn kontroll **1577 passed /
5 skipped** (fra 1570/5 — supersett, 0 fjernet) og golden `demo-transcript.stdout` BYTE-UENDRET
(`shasum -a 1` av INNHOLDET = `ea8c534773acdbe41ae68f2c55724d69aaf8be4f`, aldri git-blob-id-en):
| mutasjon | røde |
|---|---|
| M1 regelen finner aldri noe | 3 |
| M2 regelen flagger hvert utdrag | 4 (inkl. kjent-positiv-kontrollen) |
| M3 tom `title` telles som fravær | **1 — tom-navn-armen ALENE** |
| M4 observasjonen når aldri deklarasjonen | 2 |
| M5 den stopper på dataklassen | **1 — artefakt-armen ALENE** |
Ingen grønn mutasjon.
## § 3 Re-spillingen — gamle og nye nevnere side om side
Basen er `~/repos/portfolio-optimiser/scratchpad/s7c/k2-bundle-s7c`, verifisert med okf sin egen
identitet FØR re-spillingen: `root_bundle_id_of` = `k2-trinn1-20260903`, `bundle_ref` =
`sha256-tree:f14872a01104e47474093611b1960c6c541e4701dc40147a00c8e1b337c8a92a`, byte-for-byte det
`bundle.ref` begge de gamle payloadene deklarerer. Spørsmålet er ORDRETT
«Finn kostnadsbesparelser i Stange skole-anbudet», uendret.
| arm | payload | considered / withheld / delivered | budget spent av limit | utdrag med `title` |
|---|---|---|---|---|
| default | GAMMEL `scratchpad/s7c/payload-default.json` | 629 / 621 / **8** | 79 440 av 120 000 | **0 av 8** |
| default | NY `scratchpad/p10/payload-default-v2.json` | 629 / 621 / **8** | 54 931 av 120 000 | **8 av 8** |
| åpen | GAMMEL `scratchpad/s7c/payload-open.json` | 629 / 617 / **12** | 150 249 av 160 000 | **0 av 12** |
| åpen | NY `scratchpad/p10/payload-open-v2.json` | 629 / 617 / **12** | 88 297 av 160 000 | **12 av 12** |
`considered` = 629 i alle fire, som det skal — basen er den samme.
**AVVIK mot premiss (ix), og mitt tall gjelder.** PM målte 629/623/6 og 629/620/9 i en frossen
eksport av okf `958e9bc`. Jeg måler nevnerne **UENDRET**. Forklaringen er en versjonsforskjell,
ikke en «sannsynlighet»: PATH-okf er 0.7.0
(`~/.local/bin/okf`, `llm_ingestion_okf.__version__` = `0.7.0`), og dens `okf consume --help`
navngir **ingen** `--stem-prefix` og **ingen** `--source-quota`. Full flaggliste målt:
```
--cost-vocabulary --k --limit --no-tie-shared-rank --out --question
--rarity-weight --ref --reserve-top-rank --tie-shared-rank --withheld-titles
```
To av de tre defaultene premiss (x) navngir har altså ikke landet i PATH-okf 0.7.0. PMs frosne
`958e9bc` er en senere build enn den som er installert her.
**Feltlista i `excerpts[0]`, før og etter (begge armer, identisk endring):**
```
FØR: adjudication bundle_id bundle_id_inherited concept_id rank sha256 text text_sha256 trust_tier
ETTER: adjudication bundle_id bundle_id_inherited concept_id rank sha256
source_file source_sha256 text text_sha256 title trust_tier
```
Tre nye medlemmer: `title`, `source_file`, `source_sha256`.
**po sin egen `prepass.admit_payload` mot den monterte basen: ADMITTED for alle fire** (begge
gamle og begge nye). En payload som ikke lukker mot basen er en payload ingen konformans-påstand
skal bygges på; disse lukker.
## § 4 FUNN som ordren ikke ba om, og som ikke skal ligge stille
Nevnerne står, men **kuttets INNHOLD er et annet**. Målt per arm:
| arm | samme leverte id-er og rekkefølge | samme `text_sha256` per utdrag | levert tekst (tegn) |
|---|---|---|---|
| default | **nei** | **nei** | 72 535 → **47 679** |
| åpen | **nei** | **nei** | 141 470 → **76 824** |
Den mest konsekvensrike enkeltforskjellen: den ÅPNE armen leverte
`del-ii-bilag-7-prisskjema/prissammenstilling-sheet-1` i den GAMLE payloaden og gjør det **ikke**
i den nye. Det er dokumentet hele S7c-målingen («begge låser når prisskjemaet») handlet om.
Årsaken er den samme versjonsforskjellen som over — `--tie-shared-rank` er nå PÅ som default og
endrer rangeringen — men det er en **rapportert observasjon, ikke en diagnose**: ingen måling her
isolerer flagget som årsak, og ingen betalt kjøring sier hva bortfallet koster et forslag.
Dette er hele grunnen til at en re-spilt payload er en NY måling og ikke en reparert gammel.
## § 5 `okf check` før og etter, med kjent-negativ
okf på PATH: **0.7.0**. SKILL-en er generert i denne økta FOR DENNE BASEN
(`scratchpad/p10/SKILL-k2-s7c.md/SKILL.md`, navngir ref `f14872a01104…`), altså ikke P9s SKILL,
som ble generert for pinnen (`k2-trinn1-20260903` ved ref `18ae18ab…`).
| payload | rc | rapportlinje | funn |
|---|---|---|---|
| GAMMEL default | **1** | NOT conformant: 15 rules over 8 excerpts and 621 withheld entries | **8**, alle `excerpt_unnamed` |
| **NY default** | **0** | **conformant: 15 rules over 8 excerpts and 621 withheld entries** | **0** |
| GAMMEL åpen | **1** | NOT conformant: 15 rules over 12 excerpts and 617 withheld entries | **12**, alle `excerpt_unnamed` |
| **NY åpen** | **0** | **conformant: 15 rules over 12 excerpts and 617 withheld entries** | **0** |
| kjent-negativ `{}` | **1** | NOT conformant: 15 rules over 0 excerpts and 0 withheld entries | **9** |
**Regelantallet er 15, ikke 16** — den bundle-identitets-regelen okf har i arbeid har ikke landet
i 0.7.0. Målt direkte i stedet for antatt: P9s SKILL, generert for pinnens ref `18ae18ab…`, gir
**rc 0 / 0 funn** på begge de nye payloadene, som deklarerer ref `f14872a0…`. En checker som
sammenlignet SKILL-ens bundle med payloadens ville reist et funn på nøyaktig den raden. Den gjør
det ikke, altså finnes regelen ikke ennå. Dette er premiss (viii) sett fra checker-siden: `okf
check` avstemmer i dag ikke identitet, så **kun** `bundle_ref` skiller de tre K2-buildene.
**Ingen FYI sendt til okf, og grunnen er målt:** ingen okf-tall endret seg. Regelantallet står på
15 i hver eneste rad over, funn-teksten er ordrett den samme, og kjent-negativen gir samme 9.
Funnene gikk fra 20 til 0 fordi PAYLOADEN ble en annen, ikke fordi checkeren ble det. En melding
uten et endret tall er støy.
## § 6 Honesty limits
* **Ingen betalt kjøring er gjort. NOK 0.** Ingenting her er bekreftet levende. At et navngitt
utdrag brukes bedre enn et navnløst er ikke vist — dette er samme klasse som
structured-output-grensen.
* **En re-spilt payload er en NY måling, ikke en reparert gammel.** De gamle filene er URØRT
(`scratchpad/s7c/payload-default.json` og `…-open.json` er ikke skrevet til). P6- og P8-radene
som bygger på de gamle payloadene gjelder fortsatt for DE payloadene, og **ikke** for de nye —
§ 4 måler at kuttets innhold faktisk er et annet, ikke bare at det er navngitt.
* **Nevneren for konformans er ÉN bundle i ÉN build.** `bundle_id` alene identifiserer ikke
bytene: tre K2-builds bærer alle `k2-trinn1-20260903` ved tre ulike refs. Sammenlign alltid
`ref`.
* **`okf check` er GULVET, aldri beviset.** Checkerens egen docstring sier at arbeidsdelingen og
forbudene er egenskaper ved en KJØRING som ingen statisk sjekk når. rc 0 sier at payloadens FORM
holder, ikke at kuttet var riktig — § 4 er nøyaktig et tilfelle der formen ble bedre og
innholdet ble et annet.
* **Prisskjema-bortfallet i § 4 er observert, ikke diagnostisert.** Ingen måling her isolerer
`--tie-shared-rank` som årsak.
* **(A), (B) og (C) forblir operatørens** og ble ikke flyttet av denne økta.
* PATH-okf 0.7.0 er ikke bevist å være samme commit som PMs frosne `958e9bc`; versjonsstrengen er
det eneste som er målt, og de to sprikte i flaggliste.

View file

@ -665,6 +665,7 @@ class PrepassDeclaration:
delivered: int delivered: int
withheld_rules: tuple[tuple[str, int], ...] withheld_rules: tuple[tuple[str, int], ...]
rest_reachable: bool rest_reachable: bool
unnamed_excerpts: tuple[str, ...] = ()
def withheld_rule_counts(payload: PrepassPayload) -> tuple[tuple[str, int], ...]: def withheld_rule_counts(payload: PrepassPayload) -> tuple[tuple[str, int], ...]:
@ -685,6 +686,24 @@ def withheld_rule_counts(payload: PrepassPayload) -> tuple[tuple[str, int], ...]
return tuple(sorted(counts.items())) return tuple(sorted(counts.items()))
def unnamed_excerpts(payload: PrepassPayload) -> tuple[str, ...]:
"""Every delivered excerpt carrying no ``title``, BY CONCEPT ID, in payload order.
okf's checker names this ``excerpt_unnamed`` (SS 8) and measured 20 of them across this
repository's two K2 payloads. On po's side the same absence was SILENT: ``_excerpt_header``
appends the ``title:`` field only when it is present and says nothing otherwise, so a payload
whose producer named nothing rendered exactly like one that had nothing to add.
Ids, never a count: "3 of 4 excerpts are unnamed" cannot be taken back to a producer, and
"these three concepts are" can -- ``BudgetExceeded``'s ko-(y) rule one level down.
**Absence only, mirroring okf's rule exactly.** An excerpt whose producer wrote ``title: ""``
HAS been named, badly; reclassifying that would be repair, and the header already renders it
as ``title: `` where an absent one renders nothing at all.
"""
return tuple(excerpt.concept_id for excerpt in payload.excerpts if excerpt.title is None)
def declaration_of(payload: PrepassPayload, *, rest_reachable: bool) -> PrepassDeclaration: def declaration_of(payload: PrepassPayload, *, rest_reachable: bool) -> PrepassDeclaration:
"""The declaration a verified payload supports, for the arm that consumed it. """The declaration a verified payload supports, for the arm that consumed it.
@ -701,6 +720,7 @@ def declaration_of(payload: PrepassPayload, *, rest_reachable: bool) -> PrepassD
delivered=payload.denominators.delivered, delivered=payload.denominators.delivered,
withheld_rules=withheld_rule_counts(payload), withheld_rules=withheld_rule_counts(payload),
rest_reachable=rest_reachable, rest_reachable=rest_reachable,
unnamed_excerpts=unnamed_excerpts(payload),
) )
@ -720,4 +740,9 @@ def declaration_payload(declaration: PrepassDeclaration) -> Mapping[str, object]
# whether the consumer could still open the base would leave a reader unable to tell a # whether the consumer could still open the base would leave a reader unable to tell a
# bounded run from a seeded one -- the same undeclared claim, one level up. # bounded run from a seeded one -- the same undeclared claim, one level up.
"rest_reachable": declaration.rest_reachable, "rest_reachable": declaration.rest_reachable,
# Which delivered excerpts nobody named. It DEFAULTS to empty (the ``skipped_links``
# half, never ``cost_baseline_anchored``'s): an empty list here is an honest POSITIVE
# statement -- every delivered excerpt was named -- so omission cannot be mistaken for
# a fact we failed to record.
"unnamed_excerpts": list(declaration.unnamed_excerpts),
} }