docs(okr): trinn C-tillegg til fase-4-kartlegging (adopsjonsrunden)

Deltakelse i den koordinerte OKF-adopsjonsrunden (ni repo). Varig innhold
festet i eget repo per postkasse-regel 2; svaret selv ligger i den
midlertidige postkassen.

Nytt i §6: primitiv-hypotesen bekreftet mot egen kode, med forbehold om at
orkestreringen (gate-foer-relasjoner, gate-scoping, claimed-register,
per-dokument-rollback) er den dyre delen og maa foelge med som referanse-
orkestrator. Flat-vs-hierarkisk indeks: format kan deles, kontrakt ikke --
to lenkekonvensjoner i samme bundle kollapser i en flat modell. Konvergens
med to andre repo paa writer-primitivet (frontmatter-passthrough, som vi
allerede har). Bundle-plassering: compliant, men cwd-binding flytter
lekkasjeflaten uten aa fjerne den.

Ingen kodeendring.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGkEqS3Zxf7rVuUQHrsQG2
This commit is contained in:
Kjell Tore Guttormsen 2026-07-20 08:53:07 +02:00
commit 056b6522f1

View file

@ -153,7 +153,62 @@ layout-snapshot), og det er en spec-endring som må gå via commons/catalog.
---
## 6. Neste steg (ikke utført)
## 6. Tillegg fra adopsjonsrunden 2026-07-20 (trinn C)
Skrevet etter deltakelse i den koordinerte runden (ni repo, postkasse `~/repos/_okf-interim/`,
midlertidig). Svaret vårt ligger i `svar/okr.md` der; det varige innholdet er dette:
### 6.1 Primitiv-modellen er riktig — men orkestreringen er den dyre delen
okr er allerede primitiver + én komponerende kaller: `splitConcepts`, `projectFrontmatter`,
`resolveRelations`, `writeConcepts`, `generateIndexes`, `checkBundle`, `convert`,
`isSafeBundleLink` — og `innboks-ingest.mjs` som gjør ingenting primitivene ikke eksponerer.
Fire orkestrerings-invarianter er ikke-åpenbare og ble kjøpt dyrt (B5, B2). De må følge med
et delt bibliotek som referanse-orkestrator, ikke bare som primitiver:
1. Gate FØR relasjoner (ellers dangling lenker fra discardede dokumenter).
2. Gate scopet til kjøringens skrevne filer (ellers felles håndkuratert innhold).
3. Kryss-kilde-`claimed`-register (kollisjon er en egenskap ved kjøringen, ikke en primitiv).
4. Per-dokument-rollback (derfor returnerer `writeConcepts` `{concepts, pointers}`).
Begrensning i vår stemme: okr har **ingen pull-sti** (no-network by design), så vi kan ikke
uttale oss om henting-som-primitiv.
### 6.2 Flat vs. hierarkisk indeks — format deles, kontrakt gjør det ikke
Dør A produserer flate bundles; vår form er hierarkisk. Forskjellen er ikke kosmetisk:
- **To lenkekonvensjoner i samme bundle:** index-entries er nivå-relative, body-relasjoner er
bundle-rot-relative (leading `/`). I en flat bundle kollapser de til det samme — en port
fra en flat kontrakt får dette stille galt.
- `okf_version` kun i rot-index forutsetter en rot distinkt fra andre nivåer.
- `routeLevel(type)` gjør nivået semantisk avledet; flat materialisering har ingen tilsvarende
operasjon.
**Posisjon:** flat = degenerert hierarkisk (dybde 1). Kontrakten må formuleres som «én
`index.md` per nivå», ellers kan ikke Node konformere uten å brekke okr. Krav til
cross-runtime-fixtures: minst én hierarkisk fixture, ellers beviser parity-testing ingenting.
### 6.3 Konvergens med to andre repo på writer-primitivet
portfolio-optimiser-claude og ms-ai-architect ber begge om frontmatter-som-input uten
connector. **Vi har det bygget:** `writeConcepts` tar `concept.frontmatter` som ferdig
serialisert streng og skriver verbatim (`fileContent` = `frontmatter + body`, ingen
re-serialisering — dokumentert designvalg). Tre av ni konvergerer; løses F1 som en
markdown-connector i dør A, får ingen av de tre noe.
### 6.4 Bundle-plassering — vi er compliant, men cwd-binding er en svak garanti
Ingen bruker-eid bundle ligger i plugin-treet (`.claude/okr/` er cwd-relativ i brukerens eget
prosjekt; `~/.claude/okr/org/` er home; KB-referansene er plugin-eide og blir). Org-profil-
migreringen i 1.6.x er vår egen referanse for konfigurerbar sti-oppløsning.
**Åpent, meldt videre:** cwd-binding flytter lekkasjeflaten, den fjerner den ikke —
`.claude/okr/` lander i hvilket som helst repo brukeren står i, inkludert offentlige.
**Grensetilfelle:** tillitsmodellen vår er asymmetrisk *innenfor* én bundle (innboks fiendtlig,
resten kuratert — derfor `kilde: innboks`-guarden). Blir hele bundlen dør C-«eksternt
innhold», må den grensen tegnes på nytt.
## 7. Neste steg (ikke utført)
1. Operatør melder kartleggingen inn til biblioteket som kravgrunnlag (§3 er kravlisten).
2. Catalog avklarer `okf_version`-semantikken (§4) — blokkerer løftet.