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). 1. Operatør melder kartleggingen inn til biblioteket som kravgrunnlag (§3 er kravlisten).
2. Catalog avklarer `okf_version`-semantikken (§4) — blokkerer løftet. 2. Catalog avklarer `okf_version`-semantikken (§4) — blokkerer løftet.