ms-ai-architect/docs/okf-second-brain-brief-2026-06.md
Kjell Tore Guttormsen a1295a97a2 docs(ms-ai-architect): OKF-brief annotert til v0.2 — malen pekte på to retirerte felt [skip-docs]
Google bumpet OKF til v0.2 2026-07-25. Briefen navnga et upstream-eksempel
som «kopier som mal» og beskrev det ordrett med `timestamp` og en
`# Citations`-seksjon — begge retirert i v0.2.

Verifisert mot Googles egen okf/SPEC.md §13.1, ikke mot coord-meldingen som
reiste saken:
- `timestamp` avløst av `generated.at` (`generated: { by, at }`)
- body `# Citations` avløst av `sources` i frontmatter

Begge har fallback, så v0.1-form er fortsatt konform. Men vi er greenfield —
de 6 filslotene finnes ikke på disk — så vi sikter v0.2 fra første byte og
arver null migreringsbyrde.

Annotert: seksjonsingress (v0.1-varsel), linje for kjernekontrakt, mal-
eksempelet (nå «ikke kopier ordrett»), struktur-konvensjonen (`okf_version:
"0.2"`) og writer-kravet i Node-API-skissen. Writer-kravet var load-bearing:
det mater `llm-ingestion-okf` fase 4 og sto i strid med STATE-markørens
akseptanseskisse (`generated.by` påkrevd når `generated` finnes, `verified`
som liste).

Linje 110/146 gjelder KB-korpuset, som er bevisst aldri-OKF — urørt.
2026-08-03 21:00:01 +02:00

167 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 13 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 D1D4. **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 18 + 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`