docs(plan): V1-etterspill — §12 mangler rader for by/at, presedens målt begge veier
Funnet under utførelsen av V1 (54e0ec7), ikke bestilt. Underlag, ikke handling —
frossen tekst er urørt på dette punktet.
O2 gjorde `generated` til en mapping med to navngitte undernøkler. §12s
kryssjekk-tabell bærer fortsatt én rad, og §12 står under §11s spec-integrity-søm
(«stops documenting a contract field»).
Presedensen i egen tekst er målt BEGGE veier, ikke antatt:
- `source` er en mapping med navngitte undernøkler → får rad per undernøkkel
(root, connection_ref, base_url, credential_ref), selv om de er definert i
§4-prosa og ikke i §4s tabell.
- `ingest_manifest` har intern struktur, men som STRENGFORMAT → får én rad.
Aksen som skiller er navngitte nøkler vs. posisjonelt strengformat. `generated`
faller på `source`-siden.
Sømmen er IKKE rød i dag: §7-raden dokumenterer begge undernøklene ordrett, så
«stops documenting» er ikke utløst. Eksponeringen er mot §12s egen ingress.
Tre opsjoner med målt kostnad, ingen anbefaling. O-B (snevre ingressen til
«top-level») har en målt selvmotsigelse: fire eksisterende rader er ikke
toppnivå-felter.
Fører også at V1-vedtakets «`:309` overlever» var sant om RADEN og taust om de
to nye nøklene — kostnaden ble talt på omskrivings-aksen, ikke tilføyelses-aksen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXFVEPTNkNqNgYWMLybtEC
This commit is contained in:
parent
54e0ec743d
commit
aa9eaa9df0
1 changed files with 138 additions and 0 deletions
138
docs/plan/2026-08-09-v1-ss12-undernoekler.md
Normal file
138
docs/plan/2026-08-09-v1-ss12-undernoekler.md
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
# 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.
|
||||
|
||||
## 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