docs(okr): innboks-ingestion funn-grunnlag (web-verifisert)

Self-bearing grunnlag for den koeede innboks-ingestion-oppgaven (start etter
OKF-fasen). Web-verifisert undersoekelse av GoogleCloudPlatform/knowledge-catalog:
ingen ferdig innboks->OKF-pipeline finnes (verken Google eller oss). Dokumenterer
hva som finnes (reference_agent/index-generator/Source-ABC/fileskb), OKF-relasjons-
modellen (markdown-lenker i body), gap (dok-konvertering + konsept-ekstraksjon +
generalisert relasjons-oppdagelse), gjenbrukbare byggeklosser, og kilder for
etterproevbarhet. STATE I-koe-peker oppdatert (local-only).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SFW5scLL7oEwWWTv1fPQG6
This commit is contained in:
Kjell Tore Guttormsen 2026-06-26 18:03:55 +02:00
commit 80d96898bc

View file

@ -0,0 +1,109 @@
# Innboks-ingestion — funn-grunnlag (2026-06-26)
> Self-bearing grunnlag for den **køede** innboks-ingestion-oppgaven (start **etter**
> OKF-fasen er stengt; egen minor-bump). Speiler rollen `okf-second-brain-note-2026-06.md`
> hadde for OKF-fasen. Alle påstander om Google-repoet er **verifisert mot faktisk lest
> innhold** (kilder i §9) — ikke antakelser.
## 1. Oppgaven
Bruker slipper vilkårlige dokumenter (PDF, Word, tekst, e-post) i en **innboks-mappe**.
okr-pluginen skal oppdage dem, konvertere til markdown, og legge dem inn **OKF-kompatibelt**
i second-brain-treet — med korrekt frontmatter (`type/resource/title/description/tags/timestamp`),
`index.md` per nivå, **og relasjoner/kryss-lenker** mellom konsepter. Original beholdes,
markdown-peker plasseres. Søsken-pluginen `ms-ai-architect` har samme oppgave (delt mønster).
## 2. Hovedkonklusjon
**Det finnes ingen ferdig innboks→OKF-ingestion-løsning med relasjonshåndtering — verken i
`GoogleCloudPlatform/knowledge-catalog` eller i okr-pluginen.** Google gir oss spec +
gjenbrukbare byggeklosser (index-generator, relasjons-mønster, kilde-utvidelsespunkt), men
**ikke** en pipeline fra «ustrukturert innboks» til «ferdig OKF-bundle». Dette blir et reelt
byggeløp.
Rammeavklaring (verifisert): «knowledge-catalog» = Google Cloud **Knowledge Catalog (tidl.
Dataplex)** — metadata for *dataassets*. «OKF» (`okf/`) er et eget, vendor-nøytralt
markdown-format. Beslektede, men distinkte spor i repoet.
## 3. Hva Google-repoet faktisk har
| Komponent | Sti | Hva det er | Innboks-ingestion? |
|---|---|---|---|
| `reference_agent` | `okf/src/reference_agent/` | OKF-**produsent** (CLI: `enrich`/`visualize`). Auto-genererer `index.md` + auto-vever kryss-lenker | **Delvis** — kun fra **BigQuery + web-crawl**, ingen «ingest folder»-kommando |
| `bundle/index.py` (`regenerate_indexes`) | `okf/src/reference_agent/bundle/` | Kildeagnostisk `index.md`-generator per nivå (LLM-synt. mappebeskrivelser) | Gjenbrukbart |
| `sources/base.py` (`Source`-ABC) | `okf/src/reference_agent/sources/` | Utvidelsespunkt for kilder; eneste impl. er `bq` (`_SOURCES = ("bq",)`) | Utvidelsespunkt — ingen fil-/dokumentkilde finnes |
| `fileskb` / `md-fileset` | `samples/enrichment/src/tools/fileskb/`, `toolbox/enrichment/src/tools/md/` | **Read-only** MCP over en markdown-mappe (`fileset-source`-skill) | Nei — retrieval, antar allerede markdown |
| `enrichment` | `samples/enrichment/`, `toolbox/enrichment/` | Beriker **katalog-metadata** for et BQ-datasett, publiserer til Dataplex | Nei — ikke OKF-output |
| `discovery` | `samples/discovery/SKILL.md` | `knowledge_catalog_discovery_agent` — søk/ranking | Nei — ren retrieval |
| `mdcode` | `toolbox/mdcode/` | Spec + bi-direksjonell sync (`kcmd` pull/push) mot Dataplex | Nei — sync, ikke ingestion |
| `okf/SPEC.md` | `okf/` | OKF v0.1 spec (markdown + frontmatter, `index.md`, `log.md`, kryss-lenker, citations) | Spec |
## 4. Relasjons-modellen i OKF (verifisert, `okf/SPEC.md` §5, §8)
- Relasjoner = **vanlige markdown-lenker i body**, IKKE et frontmatter-felt. Anbefalt
bundle-relativ form (`/tables/customers.md`). En lenke er en *uttypet, rettet* relasjon;
*hvilken* relasjon (join/parent/depends-on) bæres av prosaen rundt lenken.
- Citations (§8) = lenker til eksterne kilder. Vieweren beregner «Cited by»-backlinks som
reverserte kanter.
- **Auto-etablering finnes** i `reference_agent` (`prompts/reference_instruction.md` +
`web_ingestion_instruction.md`: mynter `references/joins/<a>__<b>.md`, `references/metrics/<slug>.md`,
legger til `# Joins`/`# Metrics`-seksjoner) — men logikken er **skreddersydd for BQ-joins/metrikker
+ web-dokumentasjon**, ikke et vilkårlig dokumentkorpus.
- Kontrast: `mdcode` har et eget `EntryLink`-konsept i YAML for *katalog*-relasjoner — separat fra OKF.
## 5. Gap — hva vi må bygge selv
1. **Dokument-konvertering** (PDF/Word/e-post/tekst → markdown). Finnes ikke i repoet. De
eneste fil-verktøyene (`fileskb`/`md-fileset`) antar markdown og er read-only.
2. **Konsept-ekstraksjon + frontmatter-tilordning** for vilkårlige dokumenter (splitte til
«konsepter», sette `type/resource/title/description/tags/timestamp`). reference_agent gjør
dette kun for BQ-tabeller.
3. **Generalisert relasjons-oppdagelse** — dagens relasjons-prompt er BQ/web-spesifikk og må
generaliseres til vilkårlige dokumenter.
4. **Innboks-orkestrering** — oppdage nye filer, beholde original + markdown-peker, idempotent
re-kjøring, plassering i riktig nivå av treet.
## 6. Gjenbrukbart (lener oss på, bygger ikke fra null)
- **Index-generering:** Vi har allerede `scripts/okf-index.mjs` (Step 6, OKF-fasen) som speiler
Googles `regenerate_indexes` — kildeagnostisk, idempotent. Innboks-pipelinen kan kalle den
etter skriv (samme mønster som `oppsett.md`-tre-skriverne i Step 8).
- **Frontmatter:** `lib/frontmatter.mjs` (parse/skrive) + `scripts/okf-check.mjs` (validering)
fra OKF-fasen dekker skrive- og verifiserings-siden.
- **Kilde-mønster:** Googles `Source`-ABC viser et rent adapter-mønster — en «innboks-kilde»
som lister konsepter fra en mappe kunne mate eksisterende skrive-/index-/kryss-lenke-maskineri.
## 7. Forbehold / ikke verifisert (verifiseringsplikt)
- **`kb-search/SKILL.md` ble IKKE funnet** i repoet, til tross for at våre egne planer
(`plan.md:26`, `brief.md:168`) refererer den. Skillene som finnes heter `fileset-source`
(retrieval) og `knowledge_catalog_discovery_agent` (søk). Mulig repoet har endret seg, eller
referansen var unøyaktig. **Ikke kritisk for OKF-fasen** (vår retrieval-SKILL er ferdig og
testet), men korrigerer en navne-antakelse for innboks-løpet.
- Ikke fullt lest: `okf/src/reference_agent/{agent.py, runner.py, tools/*.py}` og
`toolbox/enrichment/src/agent/*`. Kilde-/ingestion-konklusjonen er likevel entydig fra
`cli.py` (`_SOURCES = ("bq",)`), `sources/`-innholdet, og enrichment-README/`enrich.py`.
## 8. Sekvens / scope
- **Start: etter OKF-fasen er stengt** (Session 5 release → 1.6.0). Scope-guard: innboks bygger
på OKF-leveransen og er bevisst utsatt — **ikke start før operatør sier fra**.
- Eget Voyage-løp (brief → plan → execute), egen **minor-bump** (1.7.0-kandidat).
- Delt mønster med `ms-ai-architect` — vurder felles abstraksjon før dobbel-implementasjon.
## 9. Kilder (faktisk lest, etterprøvbart)
GitHub API-mappelistinger: repo-rot, `okf/`, `samples/`, `toolbox/`,
`okf/src/reference_agent/{prompts,tools,sources,bundle}`, `samples/enrichment/src/{enrichment,tools}`,
`toolbox/enrichment/src/{agent,tools}`, `toolbox/mdcode/{docs,demo}`.
Rå filer (`raw.githubusercontent.com/GoogleCloudPlatform/knowledge-catalog/main/`):
`README.md`, `samples/README.md`, `okf/README.md`, `okf/SPEC.md`,
`okf/src/reference_agent/cli.py`, `.../sources/base.py`, `.../prompts/reference_instruction.md`,
`.../prompts/web_ingestion_instruction.md`, `.../bundle/synthesizer.py`, `.../bundle/index.py`,
`samples/enrichment/README.md`, `samples/enrichment/src/enrichment/enrich.py`,
`samples/enrichment/src/tools/fileskb/README.md`, `toolbox/enrichment/README.md`,
`samples/discovery/SKILL.md`, `toolbox/mdcode/docs/spec.md`, `toolbox/mdcode/docs/concept.md`,
`toolbox/mdcode/README.md`.
Undersøkelse utført 2026-06-26 (Opus-subagent, web-verifisert).