ms-ai-architect/docs/r14-persona-gate-measurement-2026-09.md
Kjell Tore Guttormsen 06713ed7b8 docs(ms-ai-architect): R14-forberedelse — mål persona utenfor ref-korpuset og foreslå unntakssettet gaten mangler
R14-gaten er ikke uoppnåelig som ordren antok. Den er ubestemt: roadmapen skriver
`grep -rli "cosmo" --include='*.md' . (unntak per cosmo-removal-brief) → 0` — klausulen
FINNES og delegerer til briefen, og briefens §4 sier «0 (eller dokumentert restmengde)».
Restmengden er aldri blitt dokumentert. Dette dokumentet dokumenterer den.

FIRE KLAUSULER MÅLT HVER FOR SEG (R13-lærdommen: én rettet feil fredner ikke resten)

(S) SKOPET er feil i begge retninger. `command grep -rli "cosmo" --include='*.md' .` gir
1348 filer i arbeidstreet, hvorav 1146 er `.kb-backup/` og 9 er `.claude/`+STATE.md — mengder
som aldri leveres. Avgrenset til `git ls-files '*.md'`: 192. Samtidig SER gaten ikke 29
tracked ikke-.md-filer (~429 forekomster), blant dem R13s eget maskineri (cosmo-persona.mjs
90, test-cosmo-persona 88, check-cosmo-gate 25) og `.gitignore` (3).
MÅLEINSTRUMENTET TELLER OGSÅ: i en Claude Code-økt er `grep` en shell-funksjon som wrapper
`ugrep --ignore-files` og respekterer .gitignore — 192 der ekte grep gir 1348. Første
måling i denne økten var derfor feil og er forkastet.

(a) REFERENTEN: 9 `Cosmos`-formede forekomster utenfor korpuset, alle håndsjekket. 1 av 9
feilklassifisert — `ref-kb-gold-reconciliation:93` «Cosmos multi-region writes» er Azure
Cosmos DB (avgjort av URL-en i samme tabellrad), men R13s genitivregel gjør den til persona.
Årsak: PRODUCT_FOLLOWERS er enumerert over NORSKE funksjonsord i ref-korpuset, som ikke
inneholder engelsk produktprosa. Klassifikatoren må re-valideres på R14-populasjonen, ikke
bare på korpuset den ble født i. Alle tall her er korrigert for denne.

(b) REKKEVIDDEN: R13s 40-oppførings heading-tabell når 1 av 145 forekomster utenfor korpuset;
2 headinger er ikke i tabellen og transformen KASTER på dem (fail-safe). 142 av 145 er prosa,
tabell, kodeblokk og fete innledninger — redaksjonelt, ikke tabelloppslag.
TYNGSTE FUNN: FEM steder PRODUSERER ny persona — transform-prompt.md (lest av
commands/kb-update.md:129), skill-gen/prompt-template.md (lest av generate-skills.sh:27 →
claude --print), commands/generate-skills.md, commands/kb-update.md:192 («Behold "For
Cosmo"-seksjonen»), docs/kb-update-apply-brief.md:19. R13s gate er grønn, men ikke STABIL:
neste KB-generering re-minter headingen R13 fjernet 401 av.

(c) DET SOM SKAL STÅ: 83 forekomster i 10 filer (historikk + derivasjonsrecord), enumerert
per fil i §4.

FORESLÅTT GATE: G4 leveranseflate → 0 (62 i 32 filer i dag) · G5 produkt pinnet PER FIL
(459 i dag) · G6 derivasjonsregisteret pinnet per fil. G6 pinnes på FOREKOMST-TALL, aldri på
filnavn: målt går briefen 32 → 33 når ny persona injiseres, og et talls-pin feller den mens
et fil-nivå-unntak er blindt. Dokumentet er lukket under sin egen dokumentasjon: det bidrar
selv med 33 persona + 8 produkt, så registeret emitteres til 116 i 11 filer.

NETT VALIDERT BEGGE VEIER på R14-populasjonen: 3 kjent-positive (injisert prosa, norsk
genitiv, heading — alle 0→1 i en fil med 0), 3 kjent-negative (Cosmos DB, «cosmos for
audit», infrastructure/SKILL.md), 1 dokumentert kjent-negativ som FEILER (§2a), og
unntaksformen selv målt. Blindhetstest: 64 tracked filer bærer «Skyberg», null uten «cosmo»
— målt hver halvdel for seg fordi det delte 32/32 skal mistenkes.

ARVEDE PÅSTANDER MÅLT USANNE: «3a73eea er UPUSHET» (git ls-remote: pushet) · «briefen har
ingen unntaksliste ⇒ gaten er skrevet uten unntak» (gaten HAR klausulen) · «13 docs-filer»
(11) · roadmapens R14-scope mangler skill-gen/prompt-template.md og playground/A11Y-RAPPORT.md.

ÅPENT OG IKKE LUKKET HER: briefens §1 — skal advisor-dialogen ha nøytral ramme, ny navngitt
persona, eller ingen? R13 ratifiserte en HEADING-form, ikke §1. SKILL.md er ~250 linjer
andreperson-persona og 23 kommandoer åpner «Du er … i en X-rolle»; mekanisk substitusjon gir
ubrukelig norsk. Separat beslutning fra unntakssettet.

Ingen transform skrevet, ingen ref-fil rørt, ingen tagg, ingen versjonsbump.

VERIFISERT: suite 1120/1120 · validate-plugin.sh 250/0/0 · check-cosmo-gate GATE PASSED +
NETTET VALIDERT BEGGE VEIER · neutralize --dry 0 å endre (389 urørt) · RX-OPS1 adversarial
scan kjørt MANUELT (core.hooksPath skygger repoets .git/hooks/pre-commit) → OK.

Ordre: 20260912T202845Z-474518317-from-ms-ai-architect

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 07:25:57 +02:00

13 KiB
Raw Blame History

R14-forberedelse — persona utenfor ref-korpuset: måling og foreslått gate

Målt: 2026-09-13 · Status: FORSLAG — krever operatør-ratifisering før R14-transformen skrives Forgjenger: R13 del 1 (3a73eea) · Kilde-brief: docs/cosmo-removal-brief-2026-06.md Klassifikator: scripts/kb-update/lib/cosmo-persona.mjs (R13, gjenbrukt — ikke ny)

Dette dokumentet gjør to ting: det måler persona-populasjonen utenfor ref-korpuset, og det foreslår unntakssettet R14-gaten mangler. Det skriver ingen transform.


1. Roadmapens R14-gate er ikke uoppnåelig — den er ubestemt

Roadmapen (.claude/…/plugin-roadmap-2026-07.md § R14) skriver gaten slik:

grep -rli "cosmo" --include='*.md' . (unntak per cosmo-removal-brief) → 0

Unntaksklausulen finnes altså. Den delegerer til briefen. Briefens eneste tilsvarende setning er §4: «grep -rc Cosmo → 0 (eller dokumentert restmengde)». Briefen inneholder ingen liste (målt: 0 treff på «unntak», «exception», «except»; kjent-positiv: 16 treff på persona-navnet, så nettet kan finne). Gaten reduserer seg dermed til «0, eller en dokumentert restmengde» — og restmengden er aldri blitt dokumentert. Det er den åpne beslutningen dette dokumentet lukker.

Konsekvens: gaten har aldri vært usann i formen. Den har vært utfylt halvveis.

2. Fire klausuler målt hver for seg

R13 lærte at én rettet feil ikke fredner resten. Gaten er derfor dekomponert, og hver klausul målt.

(S) Skopet — . og --include='*.md' treffer feil mengde, i begge retninger

Måling Tall
command grep -rli "cosmo" --include='*.md' . (arbeidstreet) 1348 filer
— herav .kb-backup/ (lokale KB-backuper, gitignorert) 1146
— herav .claude/ (LOCAL-ONLY planer) + STATE.md 9
Samme spørring avgrenset til git ls-files '*.md' 192 filer
Tracked ikke-.md-filer som bærer strengen 29 filer / ~429 forekomster

To uavhengige feil: gaten teller med 1155 filer som aldri skal leveres (backup + local-only), og den ser ikke 29 tracked filer fordi de ikke er .md — blant dem R13s eget maskineri (lib/cosmo-persona.mjs 90, test-cosmo-persona.test.mjs 88, check-cosmo-gate.mjs 25) og .gitignore (3). Fire filnavn utenfor .md bærer strengen selv.

Måleinstrumentet teller også. I en Claude Code-økt er grep en shell-funksjon som wrapper ugrep --ignore-files og respekterer .gitignore. Den gir 192 der ekte grep gir 1348. Enhver R14-måling må kjøres med command grep eller via node — aldri med øktens grep.

Forslag: skopet er git ls-files '*.md' (tracked), målt programmatisk.

(a) Referenten — strengen betyr fortsatt to ting, og diskriminatoren er målt på feil populasjon

Utenfor ref-korpuset finnes 9 Cosmos-formede forekomster. Alle er håndsjekket:

Fil:linje Tekst Dom Klassifikator
commands/review.md:61 «Legg til Cosmos helhetsvurdering» persona (norsk genitiv) persona
commands/security.md:48 «Legg til Cosmos vurdering» persona (norsk genitiv) persona
skills/ms-ai-infrastructure/SKILL.md ×4 «Cosmos DB …» produkt produkt
skills/ms-ai-security/SKILL.md:106 «… Blob Storage, Cosmos DB» produkt produkt
playground/test-fixtures/cost.md:22 «blob + cosmos for audit» produkt produkt
docs/ref-kb-gold-reconciliation-2026-06.md:93 «Cosmos multi-region writes … /azure/cosmos-db/…» produkt persona

1 av 9 er feilklassifisert. R13s genitivregel er Cosmos <liten forbokstav> = persona, med en enumerert liste norske funksjonsord som unntak. Lista ble enumerert over ref-korpuset, som ikke inneholder engelsk produktprosa. «Cosmos multi-region writes» treffer regelen og blir persona. Dommen er avgjort av URL-en i samme tabellrad. Alle tall i dette dokumentet er korrigert for den.

Forslag: utvid PRODUCT_FOLLOWERS med de engelske produktordene, ELLER — enklere og presist — la en håndadjudisert forekomst-override bære de få tilfellene. Uansett: klassifikatoren må re-valideres på R14-populasjonen før tallene konsumeres, ikke bare på korpuset den ble født i.

(b) Rekkevidden — R13s operasjon når 3 av 145, og generatorene reverserer den

R13s transform er en heading-tabell med 40 ratifiserte oppføringer. Utenfor ref-korpuset finnes bare 2 persona-headinger og 1 TOC-lenke. Av dem er 1 i tabellen; 2 er det ikke, og transformen kaster på dem (fail-safe, ikke stille feil):

  • skills/ms-ai-advisor/SKILL.md:11# Cosmo Skyberg - Microsoft AI Solution Architect
  • docs/cosmo-removal-brief-2026-06.md:1# Cosmo-persona — full utfasing (brief)

R13-maskineriet er altså ikke en drop-in for R14. 142 av 145 forekomster er prosa, tabellceller, kodeblokker og fete innledninger — redaksjonelt arbeid, ikke tabelloppslag.

Det tyngste funnet: fem steder produserer ny persona. R13s gate er grønn i dag, men ikke stabil — neste KB-generering re-minter nettopp headingen R13 fjernet 401 av.

Sted Hva det gjør Konsument (verifisert)
scripts/kb-update/transform-prompt.md:63,82 ber modellen skrive seksjon «8. For arkitekten (Cosmo)» commands/kb-update.md:129 leser den
scripts/skill-gen/prompt-template.md:18,77 samme seksjon i skill-generatoren generate-skills.sh:27claude --print
commands/generate-skills.md:11,61,120,284 prompt med ## For arkitekten (Cosmo) innbakt selve kommandoen
commands/kb-update.md:192 «Behold "For Cosmo"-seksjonen …» selve kommandoen
docs/kb-update-apply-brief.md:19 subagent-kontrakt: «behold «For Cosmo»…-seksjon» apply-flyten

Korreksjon til egen mellomregning: lib/transform.mjs nevner prompt-fila i en kommentar, den leser den ikke. Konsumenten er kommandoen.

(c) Det som skal bli stående — 83 forekomster i 10 filer (116 i 11 med denne fila)

Se registeret i §4. To klasser: historikk (CHANGELOG-rader som omtaler utfasingen sant; CLAUDE.md forbyr historikk-omskriving) og derivasjonsrecord (docs-planer og -briefer som dokumenterer hvorfor beslutningene ble tatt). Begge er sanne utsagn om fortiden.


3. Foreslått R14-gate — tre klausuler oppå R13s G1/G2/G3

Skop for alle: git ls-files '*.md', målt programmatisk med R13-klassifikatoren.

Klausul Mål I dag
G4 persona i leveranseflaten 0 62 i 32 filer
G5 produkt urørt — pinnet per fil, ikke som global sum per-fil som baseline 459 (451 korpus + 8 utenfor)
G6 derivasjonsregisteret pinnet per fil eksakt som §4 83 i 10 filer

G6 pinnes på forekomst-tall per fil, ALDRI på filnavn. Målt: injiserer man en ny persona-linje i docs/cosmo-removal-brief-2026-06.md går tellingen 32 → 33, og et talls-pinnet unntak feller den. Et fil-nivå-unntak («hopp over denne fila») ser den ikke — fila er unntatt uansett innhold. Det er forskjellen mellom et unntak og et hull.

Nett-validering (kjørt 2026-09-13, begge veier)

Retning Test Utfall
kjent-positiv agents/adr-writer-agent.md har 0 → injisert «Du er Cosmo Skyberg.» 0 → 1
kjent-positiv injisert norsk genitiv «Cosmos vurdering» 0 → 1
kjent-positiv injisert persona-heading 0 → 1
kjent-negativ «Cosmos DB», «cosmos for audit» 0 persona
kjent-negativ skills/ms-ai-infrastructure/SKILL.md (4 produkt) 0 persona
kjent-negativ som FEILER «Cosmos multi-region writes …» klassifiseres persona — dokumentert i §2(a)
unntaksform ny persona injisert i unntatt fil tall-pin feller · filnavn-unntak er blindt

Blindhetstest av vokabularet: 64 tracked filer bærer «Skyberg». Null av dem bærer «Skyberg» uten også å bære «cosmo» — verken på fil- eller linjenivå. Strengen cosmo er ikke blind for personaens etternavn. (32 utenfor korpuset + 32 i korpuset = 64; målt hver for seg fordi et identisk delt tall skal mistenkes.)


4. Det foreslåtte unntakssettet (G6-registeret)

Disse 83 forekomstene skal bli stående. Hver linje er et pin, ikke et filnavn-hopp.

Fil Forekomster Klasse
CHANGELOG.md 6 historikk — omskriving forbudt (CLAUDE.md)
docs/cosmo-removal-brief-2026-06.md 32 kildedokument; bærer strengen i eget filnavn
docs/ref-kb-workflow-plan-2026-06.md 25 planrecord (S-Cosmo-sporet)
docs/ref-kb-direction-note-2026-06.md 6 retningsnotat, sekvenseringsrisiko
docs/ref-kb-correctness-program-2026-06.md 4 programrecord
docs/kb-refresh-backlog-2026-06.md 3 backlog-peker til briefen
docs/spor1-authority-selection.md 3 scope-record (advisor-fence)
docs/skill-validation-routine-brief-2026-07.md 2 scope-record
docs/devils-advocate-audit-2026-06-18.md 1 auditrecord
docs/kb-mechanism-redesign-brief.md 1 designrecord
docs/r14-persona-gate-measurement-2026-09.md (denne fila) 33 målerecord — se note under
SUM 116 i 11 filer

Dette dokumentet blir selv en oppføring — målt, ikke anslått. Det bærer persona-strengen fordi det måler den: 33 persona + 8 produkt (klassifikatoren kjørt på fila selv). R14-baselinen må derfor emitteres til 116 persona i 11 filer i registeret, og produkt-pinnene må inkludere dette dokumentets 8. Et unntakssett som ikke er lukket under sin egen dokumentasjon, ugyldiggjør seg selv ved første commit — og en global produkt-sum ville blitt usann av nettopp denne fila, som er grunnen til at G5 pinnes per fil.

Én oppføring er flyttet på skjønn. docs/kb-update-apply-brief.md:19 ligger under docs/, men er ikke et record: det er en levende subagent-kontrakt som sier «behold «For Cosmo»-seksjon». Den er sortert på det diskriminerende trekket (operativ vs. historisk), ikke på stiprefikset, og hører derfor i leveranseflaten — ikke i registeret. Krever operatørens ja.

Leveranseflaten (G4 → 0): 62 forekomster i 32 filer

README.md 14 · commands/ 32 i 23 filer · skills/ms-ai-advisor/SKILL.md 6 · skills/ms-ai-engineering/SKILL.md 1 · scripts/kb-update/transform-prompt.md 2 · scripts/skill-gen/prompt-template.md 2 · CLAUDE.md 2 · NOTICE.md 1 · playground/A11Y-RAPPORT.md 1 · docs/kb-update-apply-brief.md 1.

Roadmapens R14-scope er ufullstendig. Den nevner «SKILL.md-er, 23 commands, 11 docs, rot-filer + generate-skills.md/transform-prompt.md». Målt mangler: scripts/skill-gen/prompt-template.md (2 — og den er live, lest av generate-skills.sh) og playground/A11Y-RAPPORT.md (1). Ordrens «13 docs» er også feil; roadmapens 11 stemmer (9 record + briefen + apply-briefen).

playground/A11Y-RAPPORT.md:15 er grensetilfellet: «| Tester | Cosmo Skyberg via Claude Code |» er en proveniens-linje som attribuerer en faktisk testkjøring til en oppdiktet person. Foreslått som leveranseflate — å nøytralisere den gjør rapporten sannere, ikke bare renere.


5. Den andre åpne beslutningen R14 ikke kan starte uten

Briefens §1 stiller spørsmålet som aldri er besvart:

«Skal advisor-dialogen ha en ny nøytral ramme («arkitekturrådgiver»), en ny navngitt persona, eller ingen persona? Dette styrer SKILL.md + kommando-omskrivingen og er den eneste reelle designbeslutningen.»

R13 ratifiserte en heading-form (For CosmoFor arkitekten) i ref-korpuset. Det er ikke svaret på §1. skills/ms-ai-advisor/SKILL.md er en ~250-linjers persona-definisjon i andreperson («Du ER …», «Du er … en erfaren løsningsarkitekt»), og 23 kommandoer åpner med «Du er … i en X-rolle». En mekanisk substitusjon gir ubrukelig norsk. §1 må besvares før R14-transformen skrives — den er en separat beslutning fra unntakssettet, ikke en del av det.


6. Tall som ble arvet og målt usanne

Arvet påstand Kilde Målt
«3a73eea er UPUSHET» ordre + STATE.md pushet (git ls-remote origin refs/heads/main)
«briefen har ingen unntaksliste ⇒ gaten er skrevet uten unntak» ordre gaten har klausul (unntak per cosmo-removal-brief); briefen har «eller dokumentert restmengde»
«13 docs-filer» ordre 11 (roadmapens tall stemmer)
«4 SKILL.md» ordre 4 av 5 bærer strengen — riktig, men repoet har 5
«417 filer nevner Cosmo / 956 forekomster» briefen 2026-06-24 historisk, pre-R13 — ikke gjenbrukbart

Ikke målt i denne økten: de 29 ikke-.md-filene er talt, men ikke persona/produkt-klassifisert per forekomst. De ligger utenfor gatens --include='*.md' og utenfor R14s ratifiserte flate; skal de inn, er det en egen scope-utvidelse med egen måling.