# Brief — Google OKF for brukerens «second brain» (LLM-wiki), IKKE for skill-refs _Notert 2026-06-26. Fremtidig initiativ — IKKE implementer før operatør sier fra. Bygger på research av GoogleCloudPlatform/knowledge-catalog (spec + samples + toolbox). State-of-play i `STATE.md`._ ## Delt spec er nå kilden (2026-06-29, ratifisert) Konvensjonen er **ikke lenger definert lokalt** — den bor i `catalog/docs/okf-second-brain/spec.md` (v0.1, eid av ingen enkelt plugin; linkedin-studios `brain/` er referansedesign, okrs `okf-check.mjs` referanse-checker; rollout/koordinering i samme mappes `log.md`). Denne brief-en er nå **plugin-spesifikk plan**, ikke konvensjonsdefinisjon — den *refererer* spec-en. Bekreftet for ms-ai-architect: minimal kontrakt (spec §3: `type` per konseptfil + `index.md` per nivå + `okf_version` i rot-`index.md`) er **gulvet, ikke taket** — vår «fulle OKF-pakke» rir over som **extension keys** (spec §5), ikke nivellert ned til bar OKF. **Premiss-korreksjoner (spec §9, ground-truth mot live repo — overstyrer økosystem-digesten under):** 1. **`mdcode`/`kcmd` er IKKE et OKF-verktøy** — det er et Dataplex git-sync-verktøy med annet frontmatter-schema. **Droppet** fra adopsjonsplanen. 2. **Ingen gjenbrukbar OKF-*ingest*-kode finnes** — `reference_agent` er BigQuery+Gemini/GCP-bundet. Adopter *prompt-mønstrene*, ikke koden. Classify/convert = bygg-selv. 3. **Kanonisk anbefalt feltnavn er `resource`** (ikke `source`). ## Implementasjonskilde: delt bibliotek, ikke lokal bygging (2026-07-19, verifisert) Tooling-en under «Hva som må bygges» **bygges ikke lokalt her**. Den kommer fra det delte biblioteket `~/repos/llm-ingestion-okf` (offentlig Forgejo `open/`), som syv repo skal konsumere — så standard-forbedringer arver alle, i stedet for at hver plugin drifter sin egen kopi. **Tre-delt eierskap (hold dem fra hverandre):** - **Konvensjon** → `catalog/docs/okf-second-brain/spec.md` (uendret, se over). - **Implementasjon** → `llm-ingestion-okf` fase 4 = `node/`-halvdelen: zero-dep ESM, importerbar + CLI-invokerbar, **vendret per plugin** (ikke npm). Python- og Node-halvdelen deler kontrakt + fixtures, aldri kode. - **Sikkerhet** → alltid `llm-ingestion-guard`. Fase 4 leverer kun hook-punktet ved persist (guard-as-contract); scan-/sanitize-logikk hører ALDRI hjemme her. Vår `docs/ingestion-security-brief-2026-07.md`-ambisjon om Node Layer-B-scan er guard-territorium. **Vår rolle er greenfield-konsument, ikke migrering.** `llm-ingestion-okf/docs/plan/phase-4-node-half.md` koordineringspunkt 5: pluginens designet-men-ubygde behov (writer, indeksgenerator, checker, retrieval-støtte) er **akseptanse-skissen for pakkens API-flate**. Vi har null OKF-kode i dag — det er en fordel her, ikke en gjeld. **Tidshorisont og gate (per 2026-07-19):** `node/` finnes ikke ennå; biblioteket er ren Python (v0.3.0, fase 1 levert). Fase 4 ← fase 3 ← fase 2, og fase 2 er **blokkert på avklaring B2** (guard-distribusjonskanal for CI — operatørbeslutning, `phase-2-doors-b-c.md:96`). Fase 4 starter dessuten med sign-off-kjede, ikke kode, der vi er punkt 5 av 5: *«okr/ms-ai-architect adopterer i egne repo (egne sesjoner, eksplisitt instruks per repo)»*. **Konsekvens: ikke start S-OKF-implementasjon før B2 er avklart og fase 4 har levert `node/`.** ## Scope-grense + ambisjon (ufravikelig, operatør-bekreftet 2026-06-26) - **OKF gjelder KUN brukerens egen kontekst/data** — hans person- og organisasjonsspesifikke «second brain» / LLM-wiki (i dag onboarding-output i `~/.claude/ms-ai-architect/org/*.md`). - **For dette sporet kjøres FULL Google OKF-pakke** (ikke bare lån av mønstre): frontmatter-kontrakt + `index.md`-progressiv-disclosure + retrieval + vedlikeholds-/enrichment-mekanisme, modellert på `samples/` + `toolbox/`. **Og adopsjonen holdes oppdatert etter hvert som OKF-standarden utvikler seg** (v0.1 → senere versjoner; fang `okf_version`-bump). Operatør-direktiv 2026-06-26. - **OKF gjelder IKKE de 389 skill-reference-filene.** De forblir Claude Code skill-references (native mekanisme, Anthropic-anbefalt flat/progressiv-disclosure-struktur). Begrunnelse: se `docs/ref-kb-direction-note-2026-06.md` + rekonsidererings-konklusjon i memory `okf-scope-second-brain-only`. ## Hvorfor OKF passer second brain (men ikke skill-refs) Avgjørende skille er **ikke** «er det en LLM-wiki» (begge er det) — men **«finnes det allerede en native, anbefalt mekanisme?»**: - **Skill-refs:** JA — Claude Code skills + references + progressiv disclosure, allerede Anthropic-best-practice (flat, ett nivå dypt, store filer lastet on-demand, SKILL.md-hub + domene-mapper + grep). OKF ville erstattet et fungerende native system med et ekvivalent fremmed (OKFs retrieval-verdi over skills ≈ null; Grep/Glob/Read dekker allerede OKFs list/search/read). - **Second brain:** NEI — bor i dag i ad-hoc `org/*.md` uten retrieval-mekanisme under chat. OKF fyller et reelt tomrom: struktur + retrieval + vedlikeholds-tooling, vendor-nøytralt, portabelt, bruker-eid. ## Lastemodell-skifte (operatør-presisering 2026-06-26 — reverserer tidligere antakelse) - **Før (antatt):** all kontekst injiseres når hver `/architect:*`-kommando kjøres. - **Nå (mål):** kontekst hentes **smart/selektivt** per kommando *og per interaksjon* — fordi de fleste ganger **chatter** brukeren med pluginen lastet, uten å kjøre kommandoer. Konteksten må være tilgjengelig i fri chat, hentet on-demand, ikke forhåndsinjisert. - Implikasjon: «second brain» trenger en **retrieval-skill** (list → search → read) som er aktiv uavhengig av kommandoer, + en **vedlikeholds-mekanisme** som holder wikien oppdatert etter hvert som brukeren tilfører kontekst OG etter hvert som OKF-standarden utvikler seg. ## OKF v0.1 — kjernekontrakt (verifisert mot spec) > ⚠️ **v0.2 ER UTE (Google, 2026-07-25) — denne seksjonen beskriver v0.1-formen.** > Verifisert 2026-08-03 mot `okf/SPEC.md` §13.1 (ikke mot coord-melding): to felt er > retirert, begge med fallback, så en v0.1-formet bundle er fortsatt KONFORM: > - **`timestamp` er avløst av `generated.at`** — siste innholdsendring føres som > `generated: { by, at }`. «Consumers MAY fall back to a legacy `timestamp` when > `generated` is absent.» > - **Body-seksjonen `# Citations` er avløst av `sources`** — proveniens flyttet til > frontmatter. «Consumers SHOULD read `sources` and MAY still parse a legacy > `# Citations` body list for v0.1 documents.» > > **Vi er greenfield: de 6 filslotene finnes ikke på disk, så vi sikter v0.2 fra > første byte** og arver ingen migreringsbyrde. Der `timestamp` og `# Citations` > nevnes nedenfor, les dem som v0.1-form som IKKE skal kopieres inn i nytt arbeid. - Bundle = katalogtre av markdown-filer, ett konsept per fil. Påkrevd frontmatter-felt: `type`. Anbefalt: `title`, `description`, `resource` (kilde-URI), `tags`, `timestamp` (**v0.2: `generated.at`**). Konsumenter MÅ bevare ukjente felt. - Reserverte filnavn: `index.md` (katalog-enumerasjon, ingen frontmatter, progressiv disclosure), `log.md` (endringslogg). - Kryss-lenking: bundle-relativ (`/...`) eller relativ markdown; relasjonstype utledes av prosa. Konsumenter må tolerere brutte lenker. - v0.1 (12. juni 2026), «starting point, not finished standard» → hold OKF-adopsjonen oppdatert ettersom standarden bumpes (`okf_version` i rot-`index.md`). - Kilde: https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md ## Økosystem-digest (les disse FØRST ved implementasjon) Repo: `GoogleCloudPlatform/knowledge-catalog`. Mye er GCP/Dataplex/Gemini-bundet (ikke direkte gjenbrukbart); de **rene mønstrene** vi adopterer er markert. **Konsum / smart retrieval (kjernen — ADOPTER MØNSTERET):** - `samples/enrichment/sample/config/skills/kb-search/SKILL.md` — kanonisk skill-basert henteguide. Eksponerer trioen `list_contents` / `read_file` / `search_content` (= progressiv disclosure: finn → åpne kun relevant). **Mest verdifulle fil å lese først.** - `samples/enrichment/sample/config/mcp.json` + `samples/enrichment/src/tools/fileskb/{README.md,main.py}` — minimal stdio-MCP-server som eksponerer list/search/read over en markdown-katalog. _NB: i Claude Code dekker Grep/Glob/Read dette allerede — egen MCP-server er trolig unødvendig; SKILL-instruksen («søk wikien først, åpne kun relevant») er det bærende._ - `samples/discovery/*` — Dataplex-bundet søke-agent (Google ADK + CatalogServiceClient). IKKE gjenbrukbart; kun mønster-referanse. **Struktur / frontmatter-eksempler:** - `okf/bundles/ga4/index.md` + `okf/bundles/ga4/references/metrics/avg_pageviews.md` — ekte `index.md`-hierarki + leaf-konsept med frontmatter (`type`/`resource`/`title`/`description`/`tags`/`timestamp`) + `# Citations`-seksjon. ⚠️ **IKKE kopier ordrett — dette upstream-eksempelet er v0.1-formet på nøyaktig de to aksene v0.2 retirerte** (`timestamp` → `generated.at`; `# Citations` → `sources` i frontmatter). Kopier hierarkiet og felt-disiplinen, ikke de to feltene. **Produksjon / vedlikehold (ADOPTER MØNSTERET, ikke koden):** - `okf/src/reference_agent/prompts/web_ingestion_instruction.md` — kilde-drevet oppdatering: `list_concepts → fetch → enrich/mint/skip` med strenge frontmatter-/heading-bevaringsregler. Moden mal for «hold wikien oppdatert fra kilder». - `okf/src/reference_agent/prompts/reference_instruction.md` — deterministisk konsept-syntese (frontmatter + fast body-rekkefølge). - `okf/src/reference_agent/cli.py` — `enrich` / `visualize`-kommandoer (Gemini/BQ-bundet impl). - ~~`toolbox/mdcode/...`~~ — **DØDT SPOR (spec §9.1):** `mdcode`/`kcmd` er IKKE et OKF-verktøy, men et Dataplex git-sync-verktøy med et annet frontmatter-schema (`id`/`resource.name`/`createTime`/`links`). Ikke planlegg OKF-emit/sync via det. ## Hva som må bygges (fremtidige faser — ikke nå) > **Leses sammen med «Implementasjonskilde» over:** punkt 1–3 beskriver *behovet*, ikke et byggeoppdrag her. Tooling-en leveres av `llm-ingestion-okf` fase 4 (writer/inbox-primitiver, `okf index`, `okf check`, retrieval-støtte). Vår jobb ved adopsjon er konfigurasjon + vendring + å prøve API-flaten mot behovene under — ikke implementasjon. 1. **Frontmatter-/struktur-konvensjon** for second brain: bygg mot delt spec §3 (`type` påkrevd + `index.md` per nivå + `okf_version` i rot — **sett den til `"0.2"`**). Anbefalte felt (spec §4): **`resource`** (kanonisk kilde-URI — IKKE `source`), `title`, `description`, `tags`, **`generated: { by, at }`** (v0.2; erstatter `timestamp`) og **`sources`** i frontmatter (v0.2; erstatter body-seksjonen `# Citations`). Migrer dagens `org/*.md` (de mangler bare `type:` — nær OKF allerede). 2. **Retrieval-skill** («second-brain-search» e.l.): list → search → read over `~/.claude/ms-ai-architect/org/`, aktiv i fri chat (ikke bare kommandoer). Avgjør: ren SKILL+Grep/Glob/Read vs. dedikert MCP-server (build-both-and-measure-kandidat — se under). 3. **Vedlikeholds-mekanisme**: hvordan wikien oppdateres når brukeren tilfører kontekst (onboarding-agent skriver OKF-konform), + en oppdaterings-rutine når OKF-standarden bumpes. ## Åpne valg (operatør / måling) - **Retrieval-mekanisme:** SKILL + native Grep/Glob/Read vs. dedikert fileskb-MCP-server. Ekte tvil → kandidat for «implementer begge, mål hvilken gir best kontekst-treff for brukeren» (operatørs faktabasert-prinsipp). - **Hvor mye av OKF formaliseres:** full v0.1-konformitet vs. «OKF-kompatibel form» (frontmatter + index.md uten resten). Lén mot det letteste som gir smart retrieval. - **Oppdaterings-kadens mot standarden:** hvordan fange OKF-versjonsbump (v0.1 → …) uten manuell polling. ## Suksesskriterium (per operatør 2026-06-26) Det viktigste er **ikke teknologien**, men at second brain blir **så bra som mulig for brukeren** og at **oppdateringsmekanismene fungerer veldig bra**. Mål mot brukerverdi (henter pluginen riktig personlig/org-kontekst i chat?) + vedlikeholds-pålitelighet — ikke mot formell OKF-konformitet i seg selv. ## Fase-4-kartlegging: hva vi faktisk trenger fra biblioteket (2026-07-20, verifisert) Svar på koordineringspunkt 5 (vi = akseptanse-skisse for Node-API-flaten). Markørlinje satt i `STATE.md`: **`planned`**. **Ground truth denne kartleggingen hviler på (verifisert, ikke antatt):** - `~/repos/llm-ingestion-okf`: v0.3.1, `node/` finnes **ikke** (kun `src/` = Python). `docs/plan/phase-4-node-half.md:12,49-62` planlegger `okf check|index|inbox|convert` — altså writer/index/checker uten connector-krav. - `~/.claude/ms-ai-architect/org/` **finnes ikke på denne maskinen** — second brain er designet (6 filslots konsumert av `research-agent`, `adr-writer-agent`, `architecture-review-agent` m.fl.) men aldri materialisert. Vi er greenfield i bokstavelig forstand. - `scripts/kb-update/` er **ikke** en OKF-flate (se under). ### kb-update-pipelinen: generisk mekanikk vs. MS Learn-domenelogikk Deteksjonslaget er 100 % deterministisk node (null modellkall, strukturelt garantert i `run-detection.mjs:6-9`); apply-laget er LLM/MCP og alltid manuelt in-session. | Generisk ingestion-mekanikk | MS Learn-domenelogikk | |---|---| | `lib/atomic-write.mjs` (tmp+rename), `lib/backup.mjs` (scoped restore + sentinel) | `lib/sitemap-stream.mjs` (hardkodet `learn.microsoft.com/_sitemaps/`), `lib/url-normalize.mjs` (locale-stripping) | | `lib/registry-io.mjs`, `lib/decisions-io.mjs` (manifest + ledger/idempotens) | `data/domain-taxonomy.json` (sitemap-prefikser → category → skill-routing) | | `lib/verified-staleness.mjs`, `lib/full-pass-worklist.mjs` (kilde-timestamp vs. verifisert-timestamp) | `lib/kb-headers.mjs` + `lib/transform.mjs` (bold-label-header-kontrakten), `lib/verify-out.mjs` (GA/preview/pris-regexer), `lib/learn-api.mjs` | | Invarianten «pure lib skriver aldri; kun gated caller skriver» | `transform-prompt.md` + `kb-eval/judge-claim-prompt-v3.1.md` (claim/judge-format) | Den generiske kolonnen overlapper reelt med det fase 4 skal levere (atomisk write, manifest, ledger, ferskhet). **Men den flytter vi ikke** — se «Aldri hit» under. ### Vår adopsjonsflate = second brain, og den trenger ikke dør A Second brain-filene fødes av et **onboarding-intervju** (LLM → `Write`), ikke av en kildekonnektor. Det finnes ingen manifest, ingen CSV, ingen SQL, ingen URL å hente. Dør A (manifest → connector → materialisering) er derfor **irrelevant for oss** — vi trenger den *bakre halvdelen* av dør A, frikoblet fra connector-halvdelen. **Konkret krav til Node-API-flaten (punkt (b) i rapporteringen):** 1. **Writer uten connector.** `writeConcept({path, frontmatter, body})` må være kallbar direkte med LLM-forfattet innhold — ikke bak et manifest/connector-krav. Deterministisk frontmatter-emit (`type` påkrevd, `resource`/`title`/`description`/`tags`, **`generated: { by, at }` — `generated.by` er PÅKREVD når `generated` finnes — og `verified` som liste**; v0.2-formen, ikke `timestamp`), ukjente felt bevart, atomisk skriv, idempotent re-kjøring. 2. **`okf index` som bibliotekfunksjon, ikke bare CLI.** Vi må regenerere `index.md` per nivå fra en in-process hook (onboarding-agent skriver én fil → indeks oppdateres i samme operasjon), uten å shelle ut. 3. **`okf check` med maskinlesbar exit + funn-struktur.** Vi har allerede create-guard-mønsteret (`validate-kb-file.mjs`, exit≠0 = stopp) og vil speile det for OKF-flaten. 4. **Guard-hook ved persist, ikke i biblioteket.** `free-context.md` er den ene slotten der brukeren limer inn vilkårlig eksternt innhold — der må `llm-ingestion-guard` kalles på kallstedet. Vi leser IKKE «security is delegated» som «trygt by default» (jf. v0.3.1-presiseringen). 5. ~~**Fritekst-kravet (F1) gjelder oss, men via dør B — ikke dør A.**~~ **Trukket 2026-07-20 (trinn D-review).** Premisset var at dørene er monolitter; når de blir komposisjoner over offentlige primitiver, forsvinner det. Vi har ingen preferanse for hvordan F1 løses, så lenge writeren ikke låses bak connector-laget (krav 1). 6. **Vendring, ikke npm** — zero-dep ESM som kan sjekkes inn under `scripts/`, konsistent med at pluginen distribueres offentlig og må kjøre uten install-steg. 7. **Bundlen bærer ingen fullstendighetsegenskap** (trinn D-review 2026-07-20, **skjerpet trinn E 2026-07-20**). Onboarding er resumbar på tvers av økter — `agents/onboarding-agent.md:29-31` gjenopptar fra første fil uten `completed: true`, og sesjonshooken rapporterer delvis tilstand som gyldig (`hooks/scripts/session-start-context.mjs:160-161`). `check` må derfor skille **ufullstendig-men-gyldig** fra **ugyldig**, og `index` må være kallbar etter hver enkeltfil-skriving uten å feile på at resten mangler. Speiler vi `check` inn i create-guard-mønsteret (krav 3) og den feiler midt i et intervju, blokkerer vi vår egen onboarding. - **Korreksjon (trinn E):** trinn D-formuleringen sa at hooken rapporterer «Onboarding 3/6». Den rapporterer `X/5` — `session-start-context.mjs:160-161` gater på `ORG_FILES.length`, og `scripts/kb-update/lib/user-data.mjs:27-33` definerer `ORG_FILES` som fem filer. `free-context.md` er **bevisst utenfor tellingen** (`user-data.mjs:35-38`). En fullført bundle har derfor **enten 5 eller 6 filer**, og ingenting i bundlen skiller de to. Riktig krav er ikke «delvis er også gyldig», men: fullstendighet er en egenskap ved **kalleren**, ikke ved bundlen. Biblioteket må aldri utlede et forventet entry-sett fra annet enn filene som faktisk finnes. 8. **Skriveren må avvise stempelfeltene** (nytt, trinn E 2026-07-20 — svar på bibliotekets D1). `write_concept` skal ta frontmatter verbatim **med nøyaktig ett unntak**: `generated` og `ingest_manifest` MÅ avvises i innlevert frontmatter og kun kunne emitteres via ingest-stien. Begrunnelse: de to feltene *er* §7-stempelet, og `ingest-spec.md` §3 nøkler en unwaivable slette-regel på dem. Gjøres §5s nøkkelliste til et obligatorisk prefiks for konsepter som sådan, må våre kuraterte bruker-eide onboarding-filer bære stempelet som gjør dem slettbare ved re-materialisering — vi ville måttet **forfalske stempelet for å være compliant**. Vår frontmatter (`category`/`completed`/`last_updated`, `onboarding-agent.md:54-58`, `:147-151`) har null overlapp med §5-listen, ikke engang `type`. **Kollisjon med `portfolio-optimiser`s P1 — løsning foreslått (trinn E 2026-07-20):** P1 krever at `write_index(mode="regenerate")` **feiler høyt** på en uidentifisert linje; krav 7 krever at den **ikke feiler** på manglende konsepter. Predikatene kvantifiserer over disjunkte inndata (P1 leser indeksfila, krav 7 leser bundle-katalogen), og løses av pinningsregelen i krav 7-korreksjonen. Hos oss blir P1s predikat aldri sant — vi skriver aldri en indekslinje før fila finnes. **Tvinges valget, viker vi:** vårt behov kan dekkes på kallstedet (utsett indeksskriving), et stille tapt linje kan per definisjon ikke oppdages av kalleren. Vi ber i stedet om separate funn-koder + én negativ fixture per kode. Merk at P1 kun gjelder `write_index`; på `check_bundle` finnes ingen kollisjon. **Index-semantikk (avklart trinn D-review):** vi legger ikke til et fjerde uforenlig krav. Ingen konsument leser en indeks — alle 12 agenter leser navngitte filer direkte via absolutt sti. Indeksen er for oss en kontrakts-/oppdagelsesforpliktelse (markøren `okf_version`), ikke en retrieval-mekanisme; bibliotekets default holder. ### Aldri hit (punkt (c)) - **De 389 skill-reference-filene.** Stående operatør-direktiv (§ «Scope-grense»); native Claude Code-mekanisme dekker allerede OKFs list/search/read. - **Hele MS Learn KB-refresh-pipelinen.** Header-kontrakt, judge/claim-format, GA/preview-semantikk og Layer A/B-plassering er domenelogikk med egen testsuite — en delt ingestion-standard ville verken forstå eller forbedre den. - **All sikkerhetslogikk.** Eies av `llm-ingestion-guard` (vårt repo er `guard: active`, Layer A+B live). Ambisjonen i `docs/ingestion-security-brief-2026-07.md` om Node Layer-B-scan er guard-territorium, ikke OKF-territorium. ### Bundle-plassering: vi er allerede compliant (operatørbeslutning 2026-07-20) Beslutningen «bruker-initierte OKF-bundles bor utenfor repoet» krever **null endring** hos oss. Second brain har aldri bodd i plugin-treet: `agents/onboarding-agent.md:23` instruerer absolutt bruker-eid sti og eksplisitt «aldri plugin-roten». KB-referansene (389 filer) er plugin-eide og distribueres med pluginen — de blir. **To funn meldt tilbake til biblioteket:** 1. **Taksonomi-hull.** Beslutningstabellen sier at pluginens rolle for bruker-eide bundles er «leser via referanse». For oss er det feil — onboarding **skriver** til den bruker-eide katalogen. Klassen «bruker-eid katalog, plugin-skrevet innhold» har ingen boks. 2. **Gate-tap (sikkerhet).** Vår Layer B commit-gate filtrerer til kun staged `skills/**/*.md` (`pre-commit-scan.mjs:11,34`). Innhold i `~/.claude/ms-ai-architect/org/` passerer aldri en commit og ligger utenfor ethvert git-tre. For bruker-eide bundles er guard-kallet ved persist derfor **det eneste laget**, ikke et ekstra — særlig for `free-context.md`. Krav 4 over er dermed bærende, ikke «nice to have». ### KB-korpuset er bevisst aldri-OKF (avklart 2026-07-20) Biblioteket leste «S-OKF åpent punkt» som at korpus-spørsmålet var ubesluttet. Det er det ikke — direktivet fra 2026-06-26 står; det åpne punktet gjelder second-brain-bygget. Presisering verdt å bære: **passformen er bedre enn tidligere formulert** (`VALID_TYPES` i `classify-ref-type.mjs:14` er allerede et lukket type-vokabular; `Source`/`Last updated` mapper til `resource`/`timestamp`). Det som blokkerer er kost/nytte — bold-label-headeren er bærende for judge-/stemplingsmaskineriet, og retrieval-gevinsten over native skills er null. Vi ville dessuten aldri brukt dør A-s `http`-connector: innholds-fetch går via den offisielle `microsoft-learn` MCP-serveren, rå HTTP kun mot sitemaps (metadata). ### Gate før implementasjon (uendret) Fase 4 ← fase 3 ← fase 2, og fase 2 er blokkert på **avklaring B2** (guard-distribusjonskanal for CI, operatørbeslutning). Ingen S-OKF-kode skrives her før `node/` er levert. ### Rundeutfall: konsensus ratifisert, runden avsluttet (2026-07-21) Kunngjøring fra koordineringsdriveren (`llm-ingestion-okf`): de fire beslutningsaksene er avgjort og medunderskrevet; runden er avsluttet og ikke lenger åpen for innspill. Beslutningsrecord: `llm-ingestion-okf/docs/beslutninger-okf-runden.local.md` §10 + `docs/plan/2026-07-21-trinn-f-konsensus-arkitektur.local.md`. **ms-ai-architect er ikke tildelt noe utførelsessteg** (konsument-stegene navngir `okr` og `portfolio-optimiser`, ikke oss); våre posisjoner konvergerte. **D1 landet i vår favør.** Krav 8-innvendingen bortfaller: §5-prefikset (de sju stempelnøklene) er obligatorisk **kun på stemplede dør-A-filer, aldri på konsepter som sådan** — våre kuraterte onboarding-filer tvinges dermed aldri til å bære stempelet. Håndhevingen er flyttet til `check_bundle` (per-fil-utfall) = nøyaktig krav 7-mekanismen. Writer-avvisningen er skjerpet til en **dør C-garanti**: skriveren avviser det **komplette eierskapsstempelet** (`generated:true` **og** `ingest_manifest` sammen), ikke de enkelte navnene — round-trip for legitim dør C bevart. **Immaterielt for oss** (vår frontmatter `category`/`completed`/`last_updated` bærer ingen av feltene). Merk: krav 8-formuleringen «avvis begge navnene verbatim» er **superseded** av den ratifiserte «avvis kombinasjonen». `type` er ikke lenger et påkrevd felt pålagt oss av prefikset — det forblir vårt eget valg for våre filer (krav 1). Restrisiko (uforfalskbar mot uhell, ikke mot vilje): `ingest-spec.md:69-72`. **D3** (`partial`/bevisst-terminal-skillet) tatt inn som innspill; commons avgjør endelig vokab-opptak. Vår sannsynlige sluttilstand (second brain gjennom biblioteket, 389-korpuset bevisst utenfor) er nettopp et bevisst-terminalt `partial`. **D2-friksjonen ble tatt opp av runden som ÅS#5 (2026-07-21) — interim avgjort, endelig form delegert.** Ratifisert bærer for koordineringsregisteret = en **committet, ikke-gitignored fil ved siden av STATE.md** hos hvert repo (fordi STATE.md er gitignored og ikke fjern-hentbar), og tverrsnittet **genereres** fra de ni per-repo-filene og «må kunne hente oppføringen». For vårt **offentlig-speil-repo** (`open/ms-ai-architect`, distribuert til hele Norge) betyr «committet + fjern-hentbar» = **publisert offentlig** — nøyaktig den flaten vi i trinn E §4 sa vi ikke lager (markøren navngir søsken-repo + adopsjonsstatus = intern koordineringsmetadata). Vårt funn er **formelt anerkjent som en klassefeil**, ikke en enkeltsak: treffer minst `ms-ai-architect`, `llm-ingestion-okf` og `catalog`. Eierskap for endelig løsning: **commons + catalog**, avgjøres ved register-build, med tre kandidatformer — (i) generator tolererer fraværende bærer, (ii) minimal redigert offentlig bærer (status + repo-navn, uten søsken/arkitektur), eller (iii) privat sidekanal. **Interim ratifisert (og allerede vår tilstand):** hold markøren **LOCAL-ONLY** og aksepter eksklusjon fra tverrsnittet. Reåpner ikke D1–D4. **Ingen gjenstående operatørbeslutning hos oss** — vi reagerer når commons+catalog velger form; vi er uansett gated på B2 med umaterialisert second brain. **Postkasse-teardown:** `~/repos/_okf-interim/` (transport) slettes. Vår svarfil `svar/ms-ai-architect.md` var transport — alt varig innhold ligger her i briefen (verifisert: krav 1–8 + P1-løsning + trinn E-korreksjoner). **Intet datatap for oss.** ## Referanser - **Delt konvensjon (KILDEN):** `catalog/docs/okf-second-brain/spec.md` (v0.1) + `log.md` (koordinering/rollout) — les FØRST. - OKF upstream-spec: https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md - Samples: https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/samples - Toolbox: https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/toolbox - Relatert (skill-ref-sporet, separat): `docs/ref-kb-direction-note-2026-06.md`, `docs/ref-kb-audit-2026-06.md`