Merge commit '04ae3b1599'
This commit is contained in:
commit
ce892be855
20 changed files with 1804 additions and 10 deletions
151
shared/docs/plan/2026-08-09-v1-ss12-undernoekler.md
Normal file
151
shared/docs/plan/2026-08-09-v1-ss12-undernoekler.md
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
# V1-etterspill — krever `generated.by` / `generated.at` egne rader i §12?
|
||||
|
||||
> **Status: UNDERLAG, ikke ratifisert. Ingen frossen tekst er endret på dette punktet.**
|
||||
> 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.
|
||||
>
|
||||
> 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`).
|
||||
Loading…
Add table
Add a link
Reference in a new issue