portfolio-optimiser-commons/docs/plan/2026-08-09-v1-ss12-undernoekler.md
Kjell Tore Guttormsen e30799743e docs(plan): kø SS12-undernøklene — køplassering, ikke utførelse
Operatørbeslutning 24.08 (ordre 20260824T155506Z, punkt 3): saken skal i kø,
selve SS12-arbeidet skal IKKE utføres. Repoets mønster for dette er
plandokumentets statusbanner, så oppføringen bor der.

Banner: «UNDERLAG, ikke ratifisert» → «... men KØPLASSERT 2026-08-24». Ny §8
sier hva køen forplikter til: re-mål premissene, legg de FIRE formene (§5s
O-A/O-B/O-C + erstatnings-formen §5 selv fører som en fjerde) fram for
operatøren, og meld erstatning til portfolio-optimiser-claude FØR den ligger i
main — deres pull er atomisk og §12-vakta går rød på erstatning by design.
Ingen opsjon er valgt her, og §8 anbefaler ingen.

Målt mens oppføringen ble skrevet, og ført inn i den: dokumentets §11/§12 er
`ingest-spec.md` sine, ikke `method-spec.md` sine. Begge filer har §11
«load-bearing tests» og §12 «Cross-check table» med identisk ingress, og
method-spec §12 har verken `generated`- eller `source`-rad — et grep på
§-tallet uten filnavnet gir 0 og leses som «raden er borte». Underlagets to
premisser re-målt mot ingest-spec med kontroller og står: `generated` = 1 rad,
`source` + seks undernøkler = 7 rader, nevner 20 rader (kjent-positiv), samme
grep mot method-spec §12 = 0 (kjent-negativ). Sitatene fra §11-sømmen og
§12-ingressen er ordrett-verifiserte.

Ingen normativ tekst rørt, ingen versjonsbump, ingen tag.
2026-08-24 18:00:47 +02:00

11 KiB
Raw Blame History

V1-etterspill — krever generated.by / generated.at egne rader i §12?

Status: UNDERLAG, ikke ratifisert — men KØPLASSERT 2026-08-24 (operatørbeslutning). Funnet under utførelsen av V1 (54e0ec7, 2026-08-09). V1 selv er ratifisert og utført; dette er en spenning utførelsen avdekket, ikke en del av vedtaket. Ingen frossen tekst er endret på dette punktet, og køplasseringen endrer ingen: den flytter saken fra «ligger her» til «står for tur», ikke fra åpen til avgjort. Hva køen forplikter til: §8.

Beslektet: 2026-07-26-v1-generated-felt-okf-v0.2.md (V1-vedtaket), 2026-08-02-ss11-mangler-rad-for-ss8.md (samme klasse: intern spenning i frossen tekst).


1. Funnet

O2 gjør generated om fra en literal til en inline mapping med to navngitte undernøkler:

generated: { by: process:okf-ingest, at: <ingested_at> }

§12s kryssjekk-tabell bærer fortsatt én rad for generated (| generated | provenance frontmatter | §3, §7 |). Spørsmålet er om by og at skal ha egne rader.

To setninger i frossen tekst gjør dette til mer enn kosmetikk:

§12, ingressen — «Every field of the machine-readable contracts, mapped to its normative section (completeness is enforced by the spec-integrity test)»

§11, søm «Spec integrity» — «this spec goes missing, names a concrete agent toolkit, or stops documenting a contract field»

§12 er altså ikke en bekvemmelighetstabell. Den står under en load-bearing søm.

2. Presedensen i vår egen tekst — målt begge veier

Dette er poenget som avgjør, og det peker ikke én vei før man skiller aksene.

Presedens FOR egne rader — source:

source er et strukturert kontraktsfelt med navngitte undernøkler. §12 gir det både en toppnivå-rad og en rad per undernøkkel:

Rad i §12 Hva den er
source toppnivå-feltet, «polymorphic on source.type»
type undernøkkel (diskriminator)
id undernøkkel (felles)
root undernøkkel, kun type: "file"
connection_ref undernøkkel, kun type: "sql"
base_url undernøkkel, kun type: "http"
credential_ref undernøkkel, kun type: "http", valgfri

Merk at undernøklene er definert i prosa i §4 (punktlisten), ikke i §4s tabell — men de får likevel egne rader i §12. Tabell-plassering i §4 avgjør altså ikke §12-plikten.

Presedens MOT egne rader — ingest_manifest:

ingest_manifest har intern struktur ({stem}@{hash16}, §5) og får nøyaktig én rad. Struktur inne i en verdi utløser altså ikke automatisk rader.

Aksen som skiller dem:

Felt Intern struktur er… Egne rader?
source navngitte nøkler i en mapping ja (4 undernøkler + felles)
ingest_manifest et strengformat med posisjonelle deler nei
generated (etter O2) navngitte nøkler i en mapping åpent — men faller på source-siden

generated: { by, at } er en mapping med navngitte nøkler. På den målte aksen ligner den source, ikke ingest_manifest.

3. Hvorfor V1-vedtaket ikke fanget dette

2026-07-26-v1-generated-felt-okf-v0.2.md:161 sier: «:152 og :309 navngir bare nøkkelen og overlever.»

Den påstanden er sann om den eksisterende raden — raden heter fortsatt generated, ligger fortsatt i provenance-frontmatter, og peker fortsatt på §3/§7. Ingenting ved raden ble usant.

Den er taus om de to NYE nøklene. Kostnaden ble talt som «kontraktslinjer som må skrives om» (§5) — en omskrivings-akse. Rader som må tilføyes er en annen akse, og den ble aldri stilt. Dette er ikke en feil i ratifiseringen; det er et hull i dens scope-formulering. Samme klasse som «de 5 linjene var ikke homogene» og «:214 er ikke en literal»: kostnadstellingen var riktig på sin egen akse og blind for en nabo-akse.

4. Er sømmen rød i dag? Nei — og det er grunnen til at dette ikke haster

§11-sømmens ordlyd er «stops documenting a contract field». §7s omskrevne feltrad dokumenterer begge undernøklene ordrett — den navngir by, fastslår at det er en process:-aktør, navngir at, og binder den til ingested_at. Specen har altså ikke sluttet å dokumentere noe.

Eksponeringen er mot §12s egen ingress («every field … mapped to its normative section»), som er en fullstendighets-påstand om tabellen. Det er en svakere binding enn sømmens ordlyd.

Konsekvens: ingen kjent implementasjon går rød av dagens tilstand. Dette er en intern spenning, ikke en defekt i drift.

5. Opsjoner (ingen anbefaling — operatøren ratifiserer)

Hva Kostnad Hva den koster i konformans
O-A Tilføy to rader i §12 (by, at → §7) 2 linjer, ren prosa Utvider hva §12 påstår fullstendighet over. Ingen fixture-endring, ingen konsument-kostnad.
O-B La §12 stå, men snevre ingressen til «every top-level field» 1 linje Gjør dagens tilstand eksplisitt konform. Men svekker en påstand source-radene allerede motsier.
O-C La alt stå 0 Spenningen består, udokumentert.

O-B har en målt selvmotsigelse: root/connection_ref/base_url/credential_ref er ikke toppnivå-felter og står allerede i tabellen. En «top-level»-innsnevring ville gjort fire eksisterende rader uhjemlede. Det er ikke et argument mot O-B, men det må løses samtidig.

Konsument-måling mottatt 2026-08-09 (portfolio-optimiser-claude, ført som DERES): deres §12-vakt keyer på at radens første kolonne er ordrett | generated |. Konsekvensen skiller skarpt mellom to former som ellers leser likt:

Form Konsekvens hos dem (deres måling)
TILFØYE rader for by/at (= O-A) ingen — vakten er urørt
ERSTATTE generated-raden med to undernøkkel-rader vakten går RØD, by design (den skal fange at en rad forsvinner)

To ting følger. (1) O-A-radens «ingen konsument-kostnad» er nå målt utenfra, ikke bare antatt av oss. (2) Erstatnings-formen er en fjerde opsjon underlaget ikke listet, og den er den eneste som koster en konsument en samtidig endring. De ber ikke om noe; de opplyser.

6. Et separat, mindre funn fra samme utførelse

generated.at gjentar verdien av ingested_at, som er sitt eget felt i samme frontmatter-prefiks (§5s sju nøkler; §7s tabell). Etter O2 bærer et stemplet dokument altså samme tidsstempel to steder.

Dette er en følge av den ratifiserte formen, ikke en feil i utførelsen — v0.2s generated tar at som påkrevd del av mappingen, og §1s premiss («der at finnes, bindes den til ingested_at») er innfridd nøyaktig som vedtatt. Ført her fordi det er den slags redundans som senere leses som drift hvis ingen skrev ned at den var tilsiktet.

Ikke oppe til vurdering her. En eventuell konsolidering ville rørt §5s ordnede prefiks, som er en helt annen og dyrere sak.

7. Ankere re-målt (2026-08-09, etter 54e0ec7)

Utførelsen flyttet tre av våre egne ankere. Ført ordrett, ikke som linjenumre:

Sted Seksjon Status
Honesty rule §1 omskrevet — «generated.by naming the ingest actor»
Ingest owns only its own files §3 omskrevet — «generated.by equal to the ingest actor»
No other writer may forge the stamp §3 omskrevet — samme gjengivelse
Feltraden for generated §7 omskrevet, definerer begge undernøkler
Load-bearing «Stamp integrity (curated writers)» §11 omskrevet — aktør-spesifikt predikat
Frontmatter-prefikset (sju nøkler) §5 uendret — navngir bare nøkkelen
Kryssjekk-raden for generated §12 uendret — dette dokumentets tema

generated: true finnes ikke lenger i specen (verifisert med grep).


8. Køplassering (operatørbeslutning 2026-08-24)

Merk om §-henvisninger: dokumentets §11/§12 er ingest-spec.mds, ikke method-spec.mds. Se punkt 1 under.

Operatøren har køplassert denne saken. Ordre 20260824T155506Z-3454831118-from-.claude, punkt 3, sier det eksplisitt: «Det som mangler er ren køplassering … IKKE utfør selve SS12-arbeidet i denne ordren.» Denne seksjonen er derfor køoppføringen, ikke utførelsen.

Beslutningen som fortsatt er åpen, er den samme som §5 stiller. Ingen opsjon er valgt her, og denne seksjonen anbefaler ingen. Utfallsrommet er fire former, ikke tre — §5s O-A/O-B/O-C pluss erstatnings-formen §5 selv fører som «en fjerde opsjon underlaget ikke listet».

Hva økten som tar denne saken skal gjøre, i rekkefølge:

  1. Les hvilken spec §-henvisningene gjelder, FØR den måler. Hele dette dokumentets §11 og §12 er ingest-spec.mds §11 og §12 — ikke method-spec.mds. Begge filer har en §11 «load-bearing tests» og en §12 «Cross-check table» med identisk ingress, og method-spec.mds §12 har verken generated- eller source-rad. Målt 2026-08-24 mens denne køoppføringen ble skrevet: å lese §-tallet uten filnavnet gir 0 treff og ser ut som «raden er borte». Dokumentet nedenfor navngir ikke filen; gjør det selv før du greper.
  2. Re-mål underlagets premisser før den handler på dem. Alle tall og sitater i §1§7 er fra 2026-08-09 og er premisser, ikke fakta. Re-målt 2026-08-24 mot ingest-spec.md, med kontroller: generated = 1 rad, source + de seks undernøklene = 7 rader, nevner 20 rader i tabellen (kjent-positiv); samme grep mot method-spec.md §12 = 0 (kjent-negativ). Begge premissene i §1 og §2 står altså. Ankertabellen i §7 er skrevet som seksjon + ordrett tekst nettopp for å kunne re-måles med grep -F. Også ordlyden er re-målt 2026-08-24: §11-sømmen lyder ordrett «stops documenting a contract field» (ingest-spec.md:285) og §12-ingressen «Every field of the machine-readable contracts …» (ingest-spec.md:289) — begge som sitert i §1 og §4. Linjenumrene er ferskvare; sitatene er ankeret.
  3. Legg de fire formene fram for operatøren og få én ratifisert. Vi forbereder underlaget, operatøren ratifiserer — også når funnet er vårt eget.
  4. Meld formen til portfolio-optimiser-claude FØR den ligger i commons' main dersom den ratifiserte formen er erstatning. Deres §12-vakt keyer på at radens første kolonne er ordrett | `generated` | (deres måling, ført som deres i §5): tilføying koster dem ingenting, erstatning gjør vakten rød by design. Pullen deres er atomisk, så varselet må komme først.

Hva køplasseringen IKKE utløser: ingen versjonsbump, ingen tag, ingen endring i §5s ordnede frontmatter-prefiks, og ingen behandling av §6s redundans-funn (generated.at gjentar ingested_at) — §6 fører selv det som en følge av den ratifiserte formen og eksplisitt ikke oppe til vurdering.

Hvorfor det ikke haster, uendret fra §4: ingen kjent implementasjon går rød av dagens tilstand. Eksponeringen er mot §12-ingressens fullstendighets-påstand, som er en svakere binding enn §11-sømmens «stops documenting a contract field». Køplasseringen er en beslutning om rekkefølge, og skal ikke leses som at sømmen har blitt rød.