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.
This commit is contained in:
Kjell Tore Guttormsen 2026-08-03 21:00:01 +02:00
commit a1295a97a2

View file

@ -38,7 +38,22 @@ Avgjørende skille er **ikke** «er det en LLM-wiki» (begge er det) — men **
- 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)
- Bundle = katalogtre av markdown-filer, ett konsept per fil. Påkrevd frontmatter-felt: `type`. Anbefalt: `title`, `description`, `resource` (kilde-URI), `tags`, `timestamp`. Konsumenter MÅ bevare ukjente felt.
> ⚠️ **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`).
@ -53,7 +68,7 @@ Repo: `GoogleCloudPlatform/knowledge-catalog`. Mye er GCP/Dataplex/Gemini-bundet
- `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. Kopier som mal.
- `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».
@ -64,7 +79,7 @@ Repo: `GoogleCloudPlatform/knowledge-catalog`. Mye er GCP/Dataplex/Gemini-bundet
## 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). Anbefalte felt (spec §4): **`resource`** (kanonisk kilde-URI — IKKE `source`), `title`, `description`, `tags`, `timestamp`. Migrer dagens `org/*.md` (de mangler bare `type:` — nær OKF allerede).
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.
@ -101,7 +116,7 @@ Den generiske kolonnen overlapper reelt med det fase 4 skal levere (atomisk writ
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`/`timestamp`), ukjente felt bevart, atomisk skriv, idempotent re-kjøring.
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).