From 9d3959ad8563101a4701f89f1b2e22c4c25964d1 Mon Sep 17 00:00:00 2001 From: Kjell Tore Guttormsen Date: Mon, 20 Jul 2026 21:41:08 +0200 Subject: [PATCH] =?UTF-8?q?docs(ms-ai-architect):=20S-OKF=20trinn=20E=20?= =?UTF-8?q?=E2=80=94=20egen=20tallfeil=20rettet=20(hook=20teller=20/5,=20i?= =?UTF-8?q?kke=20/6;=20free-context=20bevisst=20utenfor=20=E2=86=92=20bund?= =?UTF-8?q?len=20b=C3=A6rer=20INGEN=20fullstendighetsegenskap),=20D1-posis?= =?UTF-8?q?jon=20(prefiks=20som=20inkluderer=20stempelfeltene=20tvinger=20?= =?UTF-8?q?oss=20til=20=C3=A5=20forfalske=20stempelet=20=E2=86=92=20writer?= =?UTF-8?q?=20m=C3=A5=20avvise=20generated/ingest=5Fmanifest),=20P1-kollis?= =?UTF-8?q?jon=20l=C3=B8st=20via=20disjunkte=20predikater=20+=20vi=20viker?= =?UTF-8?q?=20ved=20tvang=20[skip-docs]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/okf-second-brain-brief-2026-06.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/okf-second-brain-brief-2026-06.md b/docs/okf-second-brain-brief-2026-06.md index a01ac20..5aa11dd 100644 --- a/docs/okf-second-brain-brief-2026-06.md +++ b/docs/okf-second-brain-brief-2026-06.md @@ -107,7 +107,11 @@ Second brain-filene fødes av et **onboarding-intervju** (LLM → `Write`), ikke 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. **Delvis bundle er en normaltilstand, ikke en feiltilstand** (nytt, trinn D-review 2026-07-20). Onboarding er resumbar på tvers av økter — `agents/onboarding-agent.md` gjenopptar fra første fil uten `completed: true`, og sesjonshooken rapporterer «Onboarding 3/6» som gyldig tilstand (`hooks/scripts/session-start-context.mjs:158-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. +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.