# Brief — Cross-plugin second-brain convergence on OKF-compatible form > Created 2026-06-26. **Reference-design brief — not an implementation order.** Captures the operator-locked > direction for converging three plugins' user-owned second brains onto one shared, interoperable form, > with **linkedin-studio's brain as the reference design** and **Google OKF as a thin interop layer only**. > Cross-cutting: most rollout lands in sibling repos and requires its own per-repo go (see §8). State-of-play > in `STATE.md`. Companion design docs (read alongside): `okr/docs/okf-second-brain-note-2026-06.md`, > `ms-ai-architect/docs/okf-second-brain-brief-2026-06.md`. ## 1. Locked decision (operator, 2026-06-26) Converge on **the user's own context** (not the plugins' domain reference files), driven by **interop** — **not** standard-adoption for its own sake. - **linkedin-studio's brain is the reference design** — the most mature of the three (provenance-weighted learning, episodic/semantic split, evidence-threshold promotion). The siblings rise toward its maturity; it is **not** levelled down to bare OKF. - **OKF is the thin interop veneer** — add `type:` + per-level `index.md`; keep all rich fields as extension keys (OKF consumers MUST preserve unknown keys). No capability is sacrificed. - **Staged:** ship a shared **spec/convention first**; build a shared **skill only if measured divergence justifies it** (okr's retrieval already works — see §4). ## 2. Premise corrections (verified — these overturn the old STATE/memory framing) The pre-existing framing ("greenfield shared ingest skill; inbox→classify→convert→emit OKF; mdcode is the key tool") rested on three premises that ground-truth checks **disproved**. Verified against the live `GoogleCloudPlatform/knowledge-catalog` repo (research agent, 2026-06-26, file+URL log retained) and the sibling repos. 1. **`mdcode` is NOT an OKF tool.** It is a **Google Cloud Dataplex** git-sync tool whose on-disk `kb` markdown carries a *different* frontmatter schema (`id`/`resource.name`/`createTime`/`links`) than OKF (`type`/`title`/`description`/`tags`/`timestamp`). They are not interchangeable. Do **not** plan `kcmd` to emit or sync OKF bundles. 2. **"OKF has no ingest" is true of the *format*, not the *repo*.** The repo ships an OKF *producer* (`okf/src/reference_agent`, BigQuery+web→OKF) — but it reads a BigQuery dataset + seed URLs, **not** a document folder, and is Gemini/GCP-bound. The genuinely reusable, GCP-free parts are the **SPEC**, the **emit/serialize/validate** core (`OKFDocument`), and the `index.md` synthesis. 3. **Classify/convert of arbitrary documents is exactly what the repo provides *nothing* for** — those stages are 100% build-yourself. And — decisive — **the sibling design docs never asked for them.** Both frame the work as *OKF as the storage format for a user-owned second-brain wiki* + a **retrieval skill** + a **maintenance mechanism**, with ingest being light ("onboarding writes OKF-conformant"), not auto-classification. ## 3. Landscape — the three consumers have already diverged | Plugin | Second-brain status | Maturity | |---|---|---| | **okr** | **Built.** `scripts/okf-index.mjs` + `okf-check.mjs` (conformance checker) + `lib/frontmatter.mjs` + skill `okr-second-brain-search` **v1.6.0** ("OKF-compatible markdown wiki") + tests + fixtures (`okf-minimal/`, `okf-realistic/`) + `inject-okr-context.mjs`. | Structured + retrieval (built) | | **ms-ai-architect** | **Designed, not built.** `docs/okf-second-brain-brief-2026-06.md` (operator-confirmed) + `ref-kb-direction-note` + `ref-kb-workflow-plan`. No retrieval skill yet. | Designed | | **linkedin-studio** | **Built, richer non-OKF schema.** `brain/` hub + `ingest/{inbox,published}` + `journal/` (episodic) + two-layer `profile.md` (semantic), provenance-weighting, evidence-threshold promotion, temporal validity. Engine: `scripts/brain/`. | Provenance-weighted learning system (most mature) | **Reading of the siblings' own docs:** they chose OKF because their second brains lived in ad-hoc `org/*.md` **with no retrieval mechanism** — for them OKF (really: *structured markdown + a retrieval skill*) was an upgrade from nothing. linkedin-studio is already past that point. So the convergence is "siblings rise to the reference," not "everyone adopts a new format." ## 4. okr already supplies the reference checker `okr/scripts/okf-check.mjs` implements **exactly the minimal contract** this brief recommends, and is the de-facto reference implementation to align the shared spec with: - **Only `type:` is required** on a concept file (`.md` except `index.md`); ≥1 file without `type` → fail. - Recommended fields (`resource`/`title`/`description`/`timestamp`) → **warnings, not errors**. - Root `index.md` carries an `okf_version` marker, echoed for human comparison — **no auto-fetch** (hooks are no-network). This means okr has **both** a writer and a checker in production. The shared artifact should generalize okr's checker semantics, not reinvent them. (Reading okr's code is fine; **writing** okr is a separate go.) ## 5. OKF v0.1 — verified core contract Source: `github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md` (v0.1, 12 June 2026, "a starting point, not a finished standard"). - **Bundle** = a directory tree of markdown files, **one concept per file**. **Concept ID** = file path minus `.md`. - **Frontmatter:** required `type` (free string); recommended `title`, `description`, `resource` (canonical source URI), `tags`, `timestamp`. **Consumers MUST preserve unknown keys and tolerate unknown `type` values.** (Note: the Google *reference producer* is stricter than the spec — it also requires `title`/`description`/`timestamp`. Build to the spec; supply the rest where cheap.) - **Reserved filenames:** `index.md` (directory enumeration, **no frontmatter**, progressive disclosure) and `log.md` (change log). Optional `okf_version` lives in the bundle-root `index.md`. - **Cross-links:** plain markdown links (bundle-relative `/...` or relative); relation type is conveyed by prose. **Consumers MUST tolerate broken links.** - **Permissiveness is the whole point for us:** OKF is a *minimal superset-friendly* contract. Conforming costs `type` + `index.md`; our rich fields ride along untouched as extension keys. ## 6. The deliverable — "OKF-compatible second-brain form" A spec (document, not code) that all three plugins' user-data conforms to: 1. **Minimal contract:** every concept file carries `type:`; each directory level has an `index.md`; bundle-root `index.md` carries `okf_version`. Recommended fields where cheap. (= okr's `okf-check` semantics, generalized.) 2. **Rich fields survive as extension keys.** linkedin-studio's brain keeps `provenance`, `first_seen`, `last_seen`, `evidence_count`, `status`, episodic/semantic distinction — all as extra frontmatter keys OKF must preserve. The model-collapse guard (`provenance=published` only) is unaffected. 3. **Mapping for our brain** (illustrative; verify writers in §10): - `brain/index.md` → bundle-root index + `okf_version`. - `brain/profile.md`, `operations.md`, `journal/*.md`, tributary summaries → concept files; each gains a `type` (e.g. `Profile`, `Operations`, `JournalEntry`, `TributarySummary`) + retains its existing rich frontmatter. - `ingest/inbox/` stays the **manual drop-zone** (already exists) — the "inbox folder" mechanism, with no heavy auto-classifier built now. ## 7. Staged plan - **Stage 1 — Shared spec/convention (cheap, delivers interop).** Author "OKF-compatible second-brain form" as a cross-cutting document; align it with okr's `okf-check`. Each plugin's user-data conforms; one reader can traverse all three. **This alone meets the interop goal.** - **Stage 2 — Measure divergence.** Do the per-plugin retrieval skills (okr's built one; architect's planned one; linkedin-studio's in-context reads) diverge enough to hurt? Only a *measured* yes justifies Stage 3 (operator anti-pattern: "ambitious initiatives where a config tweak suffices"). - **Stage 3 — Conditional shared skill.** If justified: extract/generalize okr's working `second-brain-search` into one home (see §9), with a discovery convention for where each plugin's brain lives. ## 8. Home decisions - **The spec** is cross-cutting → **catalog/marketplace level** (owned by no single plugin). - **A future shared skill** (Stage 3 only) → a **standalone marketplace plugin** (own repo, release-tagged, catalog-pinned), installable alongside the others, serving **consumer (a) — the user's own context — directly**. Rejected alternatives: duplicate-per-plugin (drift risk); user-level `~/.claude/skills/` (unversioned, outside the catalog). ## 9. Per-repo scope boundaries (each its own explicit go) | Repo | This initiative's work | Status | |---|---|---| | **linkedin-studio** (here) | (1) Be the reference design (mostly exists in `docs/second-brain/architecture.md`). (2) Make our own brain emit OKF-compatible form (`type` + per-level `index.md` + root `okf_version`) without dropping rich fields. | **In scope — (2) ✅ LANDED 2026-06-26** | > **Stage-1 outcome (2026-06-26).** Brain writers now emit OKF-compatible form: `serializeProfile` > leads with `type: Profile` frontmatter (constant → round-trip-safe), `operations.md` seed leads with > `type: Operations`, `brain/index.md` carries an `okf_version: 0.1` marker, and `brain/journal/index.md` > is scaffolded (per-level index). **Premise refinement (verified):** the brain is *deliberately* > YAML-free with a byte-exact round-trip invariant on `ingest/published/*.md` (SC2) that a frontmatter > block would break — so the OKF concept-bundle is scoped to **`brain/` only**; the round-trip-critical > **`ingest/` tributary is excluded** and pointed to from the hub index. We **emit** frontmatter, adding > no YAML parser. 5 new tests (`tests/okf-conform.test.ts`); full brain suite **132/132**; cross-tool > proof — `okr/scripts/okf-check.mjs` validates `brain/` (exit 0). **Finish (same day):** the cheap > recommended fields `title`/`description` added to the concept frontmatter (`timestamp`/`resource` stay > out — a timestamp would break the pure serializer, `resource` is N/A for an internal concept); and the > transient `brain/pending-diff.md` now carries `type: PendingDiff` so the bundle passes `okf-check` even > mid-propose (re-verified exit 0 with a pending-diff present). Brain suite **134/134**. | **okr** | Optional form-conformance alignment (already has writer + checker). | **Separate go** | | **ms-ai-architect** | Build its retrieval skill against the shared spec. | **Separate go** | | **catalog** | Host the shared spec. | **Separate go** (catalog only via `release-plugin.mjs`) | | **new standalone plugin** | Stage-3 shared skill, if justified. | **Separate go** | Per scope-guard + "never write in other repos without explicit instruction": this session touches **linkedin-studio only**. ## 10. Key assumptions + tests (plan-quality mandate) | Assumption | Test (before relying on it) | |---|---| | OKF preserves unknown keys → our rich brain fields survive conformance | **✅ Verified:** `okf-check.mjs` exits 0 on `brain/`; `profile.md` round-trips (`parseProfile` skips the frontmatter, `parse ∘ serialize` identity holds). | | Our brain is already near-OKF (conformance is a small writer change) | **⚠️ Refined → verified:** brain is *deliberately* YAML-free and `ingest/published` is round-trip-critical, so a literal frontmatter target conflicts there → bundle scoped to `brain/`, `ingest/` excluded (tributary). 4 surgical writer touchpoints (3 scaffold seeds + `serializeProfile`); we EMIT frontmatter, add no parser. | | okr's `okf-check` semantics generalize as the shared conformance contract | Diff okr's contract (only-`type`-required, recommended=warnings, `okf_version` echo) against OKF SPEC §9 conformance → confirm it is a faithful, slightly-laxer subset. | | A shared skill is *not yet* justified | Stage-2 measurement, deferred — do not build Stage 3 before it. | ## 11. Open choices (resolve in `/trekbrief` or measurement, not now) - **Retrieval mechanism:** native Grep/Glob/Read (skill instruction "search the wiki first, open only relevant") vs. a dedicated fileskb MCP server. Both sibling docs lean **native** (Claude Code's Grep/Glob/Read already cover OKF's list/search/read). Genuine doubt → "build both, measure" candidate. - **Degree of OKF formalism:** full v0.1 conformance vs. "OKF-compatible form" (frontmatter + `index.md` only). Lean to the lightest that yields smart retrieval. - **Inbox auto-classify/convert:** **defer.** OKF gives nothing for it; the manual inbox seam already exists. Build only on demonstrated need. - **Discovery convention:** how a shared skill finds each plugin's brain root. - **OKF version-bump tracking:** how to catch v0.1 → later without manual polling (hooks are no-network). ## 12. Success criterion (operator, inherited from both sibling tracks) Measured against **user value** (does the plugin retrieve the right personal/org context in chat and commands?) + **maintenance reliability** — **not** against formal OKF conformance for its own sake. ## 13. References - OKF SPEC v0.1: `github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md` - Sibling design docs: `okr/docs/okf-second-brain-note-2026-06.md`, `ms-ai-architect/docs/okf-second-brain-brief-2026-06.md`, `ms-ai-architect/docs/ref-kb-direction-note-2026-06.md` - okr reference implementation: `okr/scripts/okf-check.mjs`, `okr/scripts/okf-index.mjs`, `okr/skills/okr-second-brain-search/SKILL.md` - Our reference design: `docs/second-brain/architecture.md`; engine `scripts/brain/` - Verified-OKF research log (files+URLs fetched on `main`): retained in session transcript, 2026-06-26 - Memory: `google-okf-open-knowledge-format`, `profile-evolution-second-brain`, `plugin-vs-maskinrommet-division`, `plugin-is-domain-general`