215437cb5d
docs(ms-ai-architect): C3 §8 besluttet (delegert) — spec GODKJENT, +fetch-robusthetskontrakt +removed full-enum-pin [skip-docs]
...
Operatør delegerte de 4 åpne beslutningene (mandat: profesjonell, til å stole på). Alle besluttet; (a) fetch fikk binding robusthetskontrakt (response.ok/timeout/429-Retry-After), (c) removed pinnet til full-enum-kjøringer (last_full_enum-kadens) for å unngå falsk-positiv flom. §7-gatekriterier for C3.1/C3.2 utvidet. Neste = C3.1 (TDD).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 12:42:22 +02:00
7d9430b7a4
docs(ms-ai-architect): C3-spec — kurs-deteksjon via Learn Platform API (TIL GODKJENNING) [skip-docs]
...
Forankret i verifisert API-grunnlag (spike, S29) + lest eksisterende arkitektur:
to-stegs som discover-new-urls (detektor skriver rapport+course-registry.json,
ALDRI decisions.json; gaten skriver leads), ny UID-nøklet courses-kolleksjon i
ledger, produkt-slug->skill i domain-taxonomy.json, DETECTION_STEPS-steg gated av
include_course_detection. Faseplan C3.1-C3.6 m/ kjørbart gate-kriterium per fase.
4 åpne beslutninger flagget m/ anbefaling (§8). STATE -> operatør-review neste.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 12:27:34 +02:00
792986820b
docs(ms-ai-architect): C3 Fase 0 — Learn Platform API auth-oppsett + spike kartlagt; STATE → spec neste [skip-docs]
...
Sesjon 29: Platform API-beslutning (vs legacy/MCP), Entra app-only registrert
i privat tenant, creds i Keychain (secret-utløp ~2028-06), auth verifisert grønn.
Full API-kontrakt + 2 kritiske gotchas (updatedAt.gt krever full ISO; produkt-
slug azure-ai-foundry død) dokumentert i docs/c3-course-detection-spike.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 12:09:19 +02:00
bf10b7dca7
docs(ms-ai-architect): 1.16.0 release-notater — dokumentér C1+C2 + ferske testtall
...
v1.16.0
CHANGELOG [1.16.0] og README version-history dekket bare audit-arbeidet
(#7c/#7d). Lagt til Spor C-selvstendiggjøring som ogsaa shipper under 1.16.0:
- C1 planlagt deteksjon (opt-in, Claude-fri; Tier 1 hook + Tier 2 OS-scheduler)
- C2 onboarding-redesign (bruker-eid lagring, ambient injeksjon, fritekst-felt,
scheduler-kadens i onboarding, privat-sektor-paritet med regresjonsvakt)
Dato 2026-06-18 -> 2026-06-22 (release-dato). Ferske testtall: kb-integrity
115/115 -> 192/192, + onboarding-parity 14/14.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 19:53:01 +02:00
c4d434f9e9
test(ms-ai-architect): C2.4 lås K4 privat-sektor-paritet (regresjonsvakt) + omdøp feildøpt doc [skip-docs]
...
C2 KOMPLETT (C2.1->C2.4). C2.4 var verifikasjon, ikke nybygg: privat-greinen
i onboarding kom i 6e1fc6d (FOER C2.1), saa audit §167-onboarding-residu var
allerede lukket i kode. Denne oekta beviser + laaser det.
- tests/test-onboarding-parity.sh (NY): 14 asserts mot KILDEN
(onboarding-agent.md Phase 1; onboarding er interaktivt AskUserQuestion ->
ingen output-fixture). Dekker sektortype-forgrening, privat sektor-grein
(bank slipper «Annet»), privat reg-sett (DORA/Finansforetaksloven/
Finanstilsynets IKT-forskrift/Verdipapirhandelloven/Hvitvaskingsloven), og
at private aldri spoerres Offentleglova/Arkivloven. TDD roed->groenn:
strippet offentlig-only-kopi -> 13/14 FAIL; ekte fil -> 14/14 PASS.
- tests/run-e2e.sh: wiret --onboarding (med i --all).
- §167 (d) bevisst IKKE bygget: «egen dataklassifiserings-taksonomi for privat
Fase 3» er gull-plating utenfor K4 (dagens taksonomi er alminnelig norsk
bedrifts-klassifisering; privat fullfoerer Fase 3 uhindret).
- Omdoept feildoept docs/onboarding-ros-analysis.md ->
docs/windows-clone-to-pr-ros-guide.md (Windows clone-to-PR-bidragsyterguide,
ikke onboarding-analyse); plan+brief-ref oppdatert.
Verifisert: onboarding-parity 14/14 (NY) · validate 239/0/0 · e2e alle suiter ·
discovery 13/13 · test-hooks 11/11 · kb-integrity 192/192 (220 baseline-warns) ·
gitleaks 3 PRE-EKSISTERENDE (playground/vendor/).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:39:11 +02:00
afd75c4fed
feat(ms-ai-architect): C2.3 onboarding skriver scheduled_detection cadence+enabled via gated CLI (TDD) [skip-docs]
...
K5 oppfylt: onboarding skriver scheduled_detection-blokka (enabled +
os_scheduler_cadence) til bruker-eid config; parseScheduleConfig leser den
tilbake til samme verdier (round-trip bevist deterministisk).
- serializeScheduleConfig(config) i detection-schedule.mjs — invers av
parseScheduleConfig, rett ved parseren (én formatsannhet).
- write-schedule-config.mjs (NY, gated CLI, Claude-fri): merger på eksisterende
config (override kun de to onboarding-eide nøklene; interval_days/
include_skill_lifecycle overlever). backupFile + atomicWriteSync — ingen rå
fs-write.
- backupFile(filePath, backupRoot) i lib/backup.mjs — presis enkeltfil-backup.
- onboard.md (orkestrator): «Planlagt deteksjon»-seksjon + scheduler i --status.
onboarding-agent.md: note om at scheduler er orkestratorens jobb (ingen Bash).
- Avvik fra plan-tekst (dokumentert): scheduler-spørsmål i orkestrator, ikke agent.
Verifisert: detection-schedule 33/33 (+10) · backup-restore 15/15 (+3) ·
kb-update 213 · kb-eval 100 · validate 239/0/0 · test-hooks 11/11 ·
kb-integrity 192/192 · discovery 13/13 · gitleaks 3 pre-eksisterende.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 14:53:03 +02:00
8ff73b7fe3
feat(ms-ai-architect): C2.2 valgfritt fritekst-felt free-context.md i onboarding (TDD) [skip-docs]
...
Spor C / C2.2 (#3 , akseptanse K3): fanger et fritt prosa-felt i onboarding og
overflater det (kappet) ambient i hver sesjon.
- lib/user-data.mjs: FREE_CONTEXT_FILE (utenfor ORG_FILES — valgfri, teller ikke
mot fullføring), collapseProse() surfacer fri kontekst som ÉTT felt uansett
markdown-struktur (ingen stille drop), capValue() ekstrahert (DRY).
- session-start-context.mjs: leser free-context.md valgfritt (ingen count++).
- onboarding-agent.md: ny Phase 6 (valgfri); onboard.md: prosess/Task/status.
- 11 agenter: uniform 6. bullet (grep 11/11).
- Tester FØR kode: user-data 25/25 (+9), test-hooks 11/11 (+1 K3-ambient).
Gates: validate 239/0/0 · kb-update 200 · kb-eval 100 · kb-integrity 192/192
(220 baseline-warns) · discovery 13/13 · gitleaks 3 pre-eksisterende.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 14:16:00 +02:00
466094f2a2
feat(ms-ai-architect): C2.1 onboarding skriver bruker-sti + 11-agent fallback + docs [skip-docs]
...
- onboard.md (orkestrator): resolver absolutt $ORG_DIR via Bash + mkdir -p, gir
agenten stien. allowed-tools +Bash. Status/resume globber bruker-sti.
- onboarding-agent.md: skriver de 5 org-filene til den absolutte bruker-stien
(~/.claude/ms-ai-architect/org/), aldri plugin-rot.
- 11 org-bevisste agenter: uniform Virksomhetskontekst-blokk -> bruker-sti +
note om ambient injeksjon + subagent-fallback (grep-verifisert 11/11).
Risiko 1 BEVIST: Task-subagent arver IKKE SessionStart-injeksjon; Read/Glob
ekspanderer ~ -> fallback lesbar uten Bash.
- README + plan: sti-referanse + C2.1-resultat. CLAUDE.md uendret (ingen sti-ref).
Verifisert: validate PASSED · kb-integrity 192/192 · discovery 13/13.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 13:34:19 +02:00
dc0b627e98
feat(ms-ai-architect): C2.1 lib/user-data resolver + ambient org-injeksjon + C1 config bakoverkompat (TDD) [skip-docs]
...
Bæreren i C2 onboarding-redesign (#26 ). TDD: test FØR kode.
- lib/user-data.mjs (NY, ren, SKRIVER ALDRI; kun node:os/path):
resolveUserDataDir/resolveOrgDir/resolveConfigPath peker ~/.claude/ms-ai-architect/
(uavhengig av pluginRoot -> overlever reinstall, K2). CONFIG_FILENAME delt med C1
(en sannhetskilde). buildOrgSummary: deterministisk, lengde-kappet H2-ekstraksjon.
- detection-schedule.mjs: loadScheduleConfig(pluginRoot, home=homedir()) leser
bruker-sti FORST, fallback plugin-rot. Lokal CONFIG_FILENAME -> importeres fra resolver.
Alle 3 kallere bruker ett-arg-kall (uendret oppforsel).
- session-start-context.mjs: injiserer buildOrgSummary ambient (K1) som egen
Virksomhetskontekst-blokk; status-nudge beholdt nar org tom.
Verifisert: user-data 16/16 · detection-schedule 23/23 · test-hooks 10/10 ·
kb-update 191 · kb-eval 100 · validate PASSED.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 13:34:05 +02:00
4ff60803ce
docs(ms-ai-architect): C2 onboarding-redesign — godkjent plan + roadmap [skip-docs]
...
Plan-sesjon for Spor C fase C2. Forankret mot koden (ikke briefen alene):
- gap #1 ambient (hook injiserer status, ikke innhold; 11 agenter leser org/ betinget),
#2 overlevelse (org/ OG ms-ai-architect.local.md gitignored i plugin-dir), #3 fritekst
er REELLE; #4 privat-paritet trolig allerede løst i onboarding-agent.md (verifiseres C2.4).
- Besluttet lagring (operatør 2026-06-22): ~/.claude/ms-ai-architect/ for org + C1-config,
overlever reinstall; bakoverkompat (bruker-sti → fallback plugin-rot).
- Sekvens: C2.1 lagring+ambient → C2.2 fritekst → C2.3 cadence/enable i onboarding (S24)
→ C2.4 verifiser paritet. TDD test FØR kode hver delsesjon.
docs/onboarding-redesign-plan.md (godkjent plan, avløser briefen). STATE «👉 NESTE» → C2.1.
Tasks #45–48 opprettet; #26 in_progress.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 12:08:28 +02:00
071601bb9e
feat(ms-ai-architect): Sesjon 24 — C1 Tier 2 lokal launchd-scheduler (deteksjon-only, ToS-trygt) [skip-docs]
...
Tier 1 (SessionStart-hook) kjører deteksjon kun når en Claude-sesjon starter.
Tier 2 installerer en lokal launchd LaunchAgent som fyrer SAMME Claude-frie
entrypoint daglig (kl. 03:00), uavhengig av sesjoner = ekte bakgrunn mellom
sesjoner. ToS-trygt: entrypointet kan strukturelt ikke invokere claude.
Søk-først-verifisert (2026-06): launchd > cron (Apple-anbefalt; cron krever
Full Disk Access); StartCalendarInterval fanger opp etter dvale; launchd har
minimalt PATH + ekspanderer ikke ~; process.execPath = Cellar-sti som dør ved
`brew upgrade node` → plistens PATH inkluderer /usr/local/bin.
Levert (TDD, test FØR kode):
- lib/launchd-plist.mjs (REN, SKRIVER ALDRI): renderPlist (XML-escape,
StartCalendarInterval, PATH-fix), defaultLabel, resolvePaths.
- scheduler.mjs (TYNN CLI): install|uninstall|status|run-now|print|run.
Strukturelt Claude-fri (kun process.execPath på run-detection.mjs +
launchctl; kilde-grep-testet). run gater på os_scheduler_cadence →
delegerer til run-detection.mjs. uid-0-nekt; idempotent bootout.
- detection-schedule.mjs (additiv, Tier-1 urørt): os_scheduler_cadence
('daily' default | 'interval') + daysSinceLastPoll ren helper.
- commands/kb-update.md: Tier-1/Tier-2-doc + caveats (uninstall=pause;
re-install etter node-upgrade).
Operatør-valg: daglig default, kadens egen innstilling (settes i onboarding/C2).
Verifisert: launchd-plist 13/13 · detection-schedule 21/21 · kb-update 173 ·
kb-eval 100 · validate 239/0 · test-hooks 6/6 · plutil -lint OK · live
install→status→idempotent→uninstall på maskinen (gui/501, rent).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 19:59:18 +02:00
f8a160585f
test(ms-ai-architect): Sesjon 23 — auto_discover stale-felt assertion korrigert (søk-verifisert, 13/13) [skip-docs]
...
Oppgave 0 (#44 ): søk-først (claude-code-guide mot offisiell docs) verifiserte at
`auto_discover` IKKE er et gyldig Claude Code plugin.json-felt — auto-discovery er
implisitt default (code.claude.com/docs/en/plugins-reference; ukjent felt gir kun
valideringsadvarsel, ikke feil). → stale konvensjon, IKKE manglende felt.
- tests/test-plugin-discovery.sh: stale hard-assertion (krevde `auto_discover: true`)
→ optional-felt-logikk som speiler validate-plugin.sh (fravær = PASS «auto-discovery
implisitt»; present må være true). plugin.json URØRT (la IKKE til ugyldig felt).
12/13 → 13/13.
validate 239/0 (ingen regresjon). STATE oppdatert: NESTE = C1 Tier 2.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 13:48:40 +02:00
039b61ca24
chore(ms-ai-architect): Sesjon 22 — rydd stale pre-edit-secrets-testreferanser [skip-docs]
...
pre-edit-secrets.mjs-hooken ble bevisst fjernet i v1.7.0 (secrets scanning
consolidated to llm-security, CHANGELOG l.413), men 2 testfiler refererte den
fortsatt og ga falske feil.
- tests/test-hooks.sh: fjernet pre-edit-secrets-testblokk (5 tester) → 6/6 grønn.
- tests/test-plugin-discovery.sh: fjernet pre-edit-secrets fra CLAUDE.md-dok-loop.
Separat funn (IKKE fikset, scope-guard): test-plugin-discovery.sh har 1
gjenværende feil `auto_discover is not true` — plugin.json mangler feltet; ikke
hook-relatert, krever søk-først (gjeldende felt vs stale test). Flagget → task #44 .
De 4 sporede suitene uendret (validate 239 · kb-update 155 · kb-eval 100 · kb-integrity 192/192).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 23:08:11 +02:00
150b20584e
feat(ms-ai-architect): Sesjon 21 — C1 Tier 1 opt-in session-forankret deteksjon (ToS-forankret) [skip-docs]
...
Spor C fase C1 Tier 1. Ny verifisert ToS-analyse avdekket falsk «enten/eller»:
Consumer Terms §3.7 begrenser automatisert tilgang til Claude/Anthropic, IKKE
kjøring av lokale node-scripts. Deteksjon kontakter aldri Claude → utenfor
ToS-flaten; apply (eneste Claude-steg) forblir manuelt/in-session/gated.
- lib/detection-schedule.mjs (ren): opt-in config (default AV) + shouldRunDetection
gate + DETECTION_STEPS allow-liste + summarizeSkillLifecycle. Zero-dep parser.
- run-detection.mjs: Claude-FRITT entrypoint — kjører kun `node` på de
allow-listede deteksjons-scriptene; kan ikke invokere claude (guard-testet).
- session-start-context.mjs: ubetinget bakgrunns-spawn → opt-in (default AV
spawner ingenting) + surfacer skill-signaler read-only.
- commands/kb-update.md: opt-in-seksjon + ToS-note; ms-ai-architect.local.md.example.
TDD: ny test-detection-schedule.test.mjs (16). kb-update 139→155.
Suiter uendret: validate 239 · kb-eval 100 · kb-integrity 192/192.
0 skills/-mutasjon. Tier 2 (lokal OS-timer, deteksjon-only) = neste økt.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 22:54:18 +02:00
e47fc9bd59
feat(ms-ai-architect): Sesjon 20 — B3 create_skill (dvelende, konstruktiv op) [skip-docs]
...
B3 + Spor B (krav 5+6) KOMPLETT. create_skill er speilbildet av de
destruktive ops: merge/saner/retire beviser "ingen kuratert verdi TAPT";
create beviser "ingen sub-bar skill FØDT" (kvalitetsgulv). Ingen ny
domene-skill shippet (svar 3) — mekanismen bevist, ikke brukt.
- planCreateSkill (ren): genererer scaffold + selv-validerer mot eval.mjs
sine EGNE checkers (K2/K3/K5/K6/refTall + K10) — rubrikken har én kilde.
Guardrail ok iff alle deterministiske K passerer + K10<terskel + navn ledig.
- TEST_DOMAIN_SPEC: kanonisk dvelende-scaffold (born compliant, K5 ratio 1.0).
- runCreatePlan (uren): gated dry-run, 0 skriving til skills/.
- applyApprovedAction create-gren: re-plan fersk → revalider (drift+kollisjon)
→ skriv scaffold + persister taksonomi-tillegg → flipp ledger.
- applyCategoryAdditions (taxonomy.mjs): additiv, klobrer aldri eksisterende eier.
- CLI create-verb i plan-skill-op + apply-skill-op.
TDD: ny test-skill-ops-create.test.mjs (16). kb-eval 84→100.
Suiter uendret: validate 239 · kb-update 139 · kb-integrity 192/192.
Deterministisk eval K1–K10 for de 5 ekte: 0 regresjon. 0 ekte skills/-mutasjon.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 21:37:19 +02:00
de3a9a483b
feat(ms-ai-architect): Sesjon 19 — B3 merge-apply (cross-skill + taksonomi-persist) [skip-docs]
...
Merge-apply = den tyngste destruktive op-en: eksekver en operatør-godkjent
merge_skills-entry → faktisk cross-skill skills/-mutasjon. Tre mekanismer
som sanitize/retire ikke trengte: kuratert relokasjon (ikke arkiv),
taksonomi-persistering, retire-av-absorbert.
- taxonomy.mjs (ny persist): saveTaxonomy (atomisk .tmp+rename, speiler
saveDecisions) + ren applyCategoryReassignments (repointer KUN der eier
=== from; absent/allerede-flyttet = no-op). Lag-0 er normalt read-only;
ENESTE writer = gated merge-apply.
- applyApprovedAction merge-gren (skill-ops.mjs): re-plan fersk → revalidér
(kollisjon → guardrail.ok=false → abort) → flytt absorbed-refs → absorber
(moveFile; flyttingen ER bevaringen set-equality beviser) → persister
taksonomi-repoint fra FERSK plan (drift-sikker) → arkivér absorbed-SKILL.md
FØR rmdir → flipp ledger approved→applied. Description-forsoning forblir
MANUELL (planner-kontrakt: apply rører aldri absorber-SKILL.md).
archiveMove→moveFile (generisk: arkiv + kuratert flytt).
- CLI apply-skill-op.mjs merge <absorber> <absorbed> — lookup via actionKey
(merge_skills:<sortert par>); default PREVIEW, --apply = dobbel-gate.
TDD, tmpdir-fixtures: 0 ekte skills/-mutasjon. Ny test-skill-ops-merge-apply
(7) + 2 taksonomi-tester; fjernet foreldet merge-throws fra S18-fila. Tester:
kb-eval 78→84, kb-update 137→139; validate 239 · kb-integrity 192/192 uendret.
eval --json deterministisk uendret (K10 eng+infra FAIL, øvrige PASS).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 20:54:13 +02:00
4ac18a76c8
feat(ms-ai-architect): Sesjon 18 — B3 apply-path (sanitize+retire), merge→S19 [skip-docs]
...
Apply-path = den destruktive frontieren: eksekver en operatør-godkjent
(status:approved) ledger-entry → faktisk skills/-mutasjon. Staget per
operatør-beslutning til single-skill ops (sanitize+retire); merge-apply
isoleres til S19 (krever taksonomi-persistering + cross-skill flytt).
- revalidateApply (ren, skill-ops.mjs): idempotent revalidering mot fersk
re-plan — nekter ved status≠approved, op-mismatch, fersk guardrail≠ok,
eller drift (isDeepStrictEqual fresh vs approved guardrail-snapshot).
- applyApprovedAction (impur): arkiver-så-slett (rename skills/…→archive/…
atomisk; retire rmdir'er tom katalog sist) + flipp ledger approved→applied.
apply:false = preview (0 mutasjon). merge_skills → throw (S19).
- setActionStatus (ren, decisions-io.mjs): ledger status-transisjon, bevarer
targets+guardrail, audit-record beholdes.
- CLI apply-skill-op.mjs {list|sanitize|retire} — default PREVIEW, --apply =
dobbel-gate utover ledger-approved.
TDD, tmpdir-fixtures: 0 ekte skills/-mutasjon. Tester: kb-eval 66→78,
kb-update 132→137; validate 239 · kb-integrity 192/192 uendret.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 20:32:51 +02:00
f7b622b318
feat(ms-ai-architect): Sesjon 17 — B3 sanitize_skill + retire_skill dry-run-planners [skip-docs]
...
Speiler S16 merge-mønsteret: rene planners (leser ingen disk, anvender
ingenting) + impurt skall med gated --write. 0 skriving til skills/.
Intern kb-eval maintenance-tooling — ingen brukervendt /architect-kommando.
- planSanitizeSkill: fjerner KUN dødt innhold (kb-integrity orphan/dead-path).
Guardrail refuserer fjerning av kuratert/manglende innhold (illegalRemovals/
missingRemovals MÅ være tom). Dateless = kuratert, behandles ikke her.
- planRetireSkill: hel-skill m/ obligatorisk arkivering; guardrail refuserer
hard delete (--hard -> archiveDir=null, ok=false). taxonomyOrphaned flagget.
- loadSkillOrphans (read-only) + runSanitizePlan/runRetirePlan (gated).
- CLI plan-skill-op.mjs utvidet: {sanitize|retire} <skill> [--hard].
Ekte dry-runs: sanitize ms-ai-security 62/33 orphans OK · retire
ms-ai-infrastructure 35 arkivert OK · --hard FAILED (blokkert). git clean.
TDD: test-skill-ops-sanitize-retire.test.mjs (16). kb-eval 50->66.
Baseline uendret: validate 239 · kb-update 132 · kb-integrity 192/192.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 17:45:37 +02:00
f03a0e08b2
feat(ms-ai-architect): Sesjon 16 — B3 ledger action-lag + merge_skills dry-run-planner
...
Spor B / B3 start. Operatør-gated dry-run for skill-livssyklus, merge først.
- decisions-io.mjs: additivt skill-nøklet `actions`-lag ved siden av urørt
URL-nøklet `decisions` (14 URL-tester urørt = regresjonsbevis). version=1,
loadDecisions backfiller manglende actions-nøkkel. Nye rene fn: actionKey
(merge symmetrisk på paret), isActionDecided, recordAction (no-mutate),
listActions. Policy A gjelder også actions.
- scripts/kb-eval/lib/skill-ops.mjs: ren planMergeSkills → {entry,diff,guardrail},
leser ingen disk, anvender INGENTING. Guardrail = ingen kuratert verdi tapt
(count-invariant + set-equality + kollisjons-deteksjon; ok=false ved klobring).
Impur skall loadSkillRefs/runMergePlan + CLI plan-skill-op.mjs (gated --write).
- Ekte eng↔infra dry-run: guardrail OK (34+153=187, 0 kollisjoner), 153 fil-flytt
+ 7 taksonomi-reassign + retire eng; 0 skriving til skills/, ledger uendret
(retning er operatør/judge-valg, ikke pushet gjennom gaten).
- TDD: test-decisions-actions (10) + test-skill-ops-merge (10, inkl. byte-for-byte
skills/-snapshot som no-write-bevis). kb-eval 40→50, kb-update 122→132.
Regresjon grønn: validate 239, kb-integrity 192/192.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 17:10:33 +02:00
ba597eb988
feat(ms-ai-architect): Sesjon 15 — B2 K10 søsken-scope-ikke-overlapp
...
- Refaktor: overlap-kjerne flyttet til scripts/kb-eval/lib/sibling-overlap.mjs
(bryter sirkulær import eval.mjs<->detect); detect re-eksporterer → B1-tester urørt
- K10 = søsken-scope-ikke-overlapp, deterministisk cross-skill: perSkillSiblingOverlap
+ attachSiblingOverlap i eval.mjs. combined = boundaryTension + df-vektet leksikalsk;
per-skill verdikt = verste søskenpar; terskel 7.0 (naturlig gap 7.42→6.67)
- Empirisk (alle 5): eng+infra FAIL (7.42 mot hverandre), advisor/gov/sec PASS
→ eng↔infra-signal mater B3 merge/saner (ikke blokkering)
- Gated baseline-regen via --write (descriptions urørt → judge K1/K4/K7/K8/K9 merget
uendret, ikke fabrikkert); rubric K1-K10
- TDD: +9 tester (tests/kb-eval/test-k10-sibling-overlap.test.mjs), kb-eval 31→40
- 0 skriving til skills/. Suiter: validate 239 · kb-update 122 · kb-integrity 192/192
2026-06-20 11:59:59 +02:00
5ad4ed025c
feat(ms-ai-architect): Sesjon 14 — B1 fullført (coverage/gap + bloat/stale) [skip-docs]
...
Utvider scripts/kb-eval/detect-skill-lifecycle.mjs med to deterministiske
detektorer (B1 nå komplett, 3 seksjoner i skill-lifecycle-report.json).
Skriver ALDRI til skills/ — kun rapport; kandidater mater decisions.json + gate (B3).
Intern kb-eval-tooling: ingen brukervendt kommando/agent/skill/hook endret.
Detektor 2 — coverage/gap (innen-domene): taksonomi category_skill (deklarert
eierskap) vs fysisk disk-mappetelling. Klasser gap/thin/orphan/misowned.
Empirisk: 21 deklarerte kat, 20 dekket, 1 gap (security-scoring — deklarert
men ingen disk-mappe; innhold bor i ai-security-engineering = fantom-rutekat),
2 tynne (development=1, platforms=5).
Detektor 3 — bloat/stale (per skill): K3-margin (eval.checkK3 body vs 500) +
dateless ref-andel (mangler Last updated:-header = uverifiserbar ferskhet).
Disk-only/deterministisk; poll-avledet staleness (change-report) bevisst utenfor.
Empirisk: 0 split-kandidater, 1 saner (ms-ai-governance 4/78 dateless).
TDD: 8 nye tester (coverage 4, stale-primitiv 1, bloat 3). kb-eval 23->31.
Gate: validate 239, kb-update 122, kb-eval 31, kb-integrity 192/192 — grønn.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 11:34:57 +02:00
2665a3a2d8
feat(ms-ai-architect): Sesjon 13 — B1 overlap-detektor (skill-livssyklus)
...
Spor B fase B1, første detektor (lag-1-analog på SKILL-granularitet).
PRODUSERER KUN RAPPORT — skriver aldri til skills/ (invariant bekreftet).
Detektor (scripts/kb-eval/detect-skill-lifecycle.mjs) kombinerer to
deterministiske overlapp-signaler per skill-par:
- grensetension: operatør-kuratert k1-trigger-prompts.json belongs_to-graf
(out_of_domain = håndmerkede confusable-naboer), symmetrisk telt
- df-vektet leksikalsk trigger-surface-overlapp (1/df nedvekter domene-
vanlige ord som «azure»; format-boilerplate «triggers» filtrert)
combined = grensetension + weightedScore.
Empirisk: eng↔infra topper (combined 7.42, tension 6, delt: architecture/
azure/data/multi) — operatørens Azure-deployment-grenseinstinkt bekreftet.
Surfaces som focusPair (operatør-utpekt B1-mål).
CLI: default human-summary · --json · --write (rapport gitignored som de
andre deteksjonsrapportene; detektor + kuraterte inputs er tracked).
TDD: 8 nye tester i tests/kb-eval/ (tokenize, surface, df, lexical, pairKey,
tension differensial-sjekk, full compute m/determinisme). Gate møtt.
Ingen regresjon: validate 239 · kb-update 122 · kb-eval 23 (15+8) · kb-integrity 192/192.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 11:17:19 +02:00
e8ceb7a8b4
docs(ms-ai-architect): Spor B plan godkjent — skill-livssyklus (krav 5+6, omdefinert)
...
Aktiverer de utsatte krav 5 (lage nye skills) + krav 6 (merge/saner/retire),
omdefinert per operatør-retning 2026-06-20:
- deteksjon først (ikke-destruktiv, driver ops)
- best-practice-bar = K1–K9 + K10 søsken-scope-ikke-overlapp
- INGEN nye domener (ikke Power Platform/Dynamics); tyngdepunkt merge/saner
på de 5 eksisterende; create = dvelende kapabilitet
- Azure-deployment = grensesone eng↔infra (B1 første deteksjonsmål), bekreftet
Superseder kb-mechanism-redesign-plan.md:19 (krav 5/6 «UTE av scope») for Spor B.
3 faser B1 (deteksjon) → B2 (K10) → B3 (ledger+ops). Arkitektur-invariant arvet:
alle skill-ops via decisions.json + operatør-gate; aldri tap av kuratert verdi.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 11:09:11 +02:00
c778cf6cd2
fix(ms-ai-architect): Sesjon 12 — lukk SPOR A, ny eval-baseline (K1–K9 grønn alle 5)
...
Regenerert eval-baseline.json via gated `eval.mjs --write` så baselinen fanger
S9+S10+S11 judge-verdiktene (var pre-S9). Eneste endrede artefakt: baseline-fila
(123+/128−, ren regenerering — judge-felt null→populert fra data/judge-results.json).
Verifisert FØR skriving (read-only) og i resultatet:
- judge-cache: K1/K4/K7/K8/K9 PASS alle 5 (advisor K8=0.8 at-threshold, pass)
- deterministisk: K2/K3/K5/K6/refTall PASS alle 5
- ny baseline: 0 åpen FAIL K1–K9 på alle 5 skills, judge populert alle 5
SPOR A (krav 1–4) er nå komplett: K1 autoritativ+blindet (S11), 6×5 kanonisk (S8),
K4+K9 body-cleanup (S9 sec+gov, S10 eng+infra), skill-optimalisering refTall+K5 (S7).
eval-baseline.json er sannhetskilden og grønn på K1–K9.
Ingen regresjon: validate 239 · kb-update 122 · kb-eval 15 · kb-integrity 192/192.
NESTE: Spor B (scheduled deteksjon · kurs-spor #25 · low-currency · onboarding #26 ).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 10:11:45 +02:00
c1f75f9c78
fix(ms-ai-architect): Sesjon 11 — K1 trigger-presisjon, blindet judge PASS alle 5
...
(a) 2 description-fikser (operatør-godkjent):
- governance: +Schrems II/TIA-trigger (recall-gap 0.85→1.0; governance eier
domenet — 20 ref-filer + data-residency-audit-monitoring.md)
- advisor: strammere — selection-forankret + eksplisitt negativ scope
(NOT for build/secure/operate/legally-assess); fjernet bred
"Microsoft AI architecture"-trigger som kolliderte med søsken
(b) Kuratert testsett + mekanikk:
- ny data/k1-trigger-prompts.json (100 prompts: 10 in + 10 adversarielt out/skill)
- judge-prompt.md K1: generer→konsumer kuratert sett + nytt skjema
(inDomainHitRate/outDomainFalsePositiveRate/pass/misclassified, provisional=false)
- blindet måling: 5 Opus-dommere ser kun description + 20 stokkede umerkede
prompts; ground-truth scoret deterministisk utenfor dommeren
Resultat: K1 PASS alle 5 — hit 1.0 / fp 0.0 / presisjon 1.0 / 0 miss.
Begge fikser validert i dommer-begrunnelsene. K2 fortsatt PASS.
Ikke regredert: validate 239 · kb-eval 15 · kb-update 122 · kb-integrity 192/192.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 10:00:47 +02:00
6b3c44adc3
fix(ms-ai-architect): Sesjon 10 — K9-destale eng+infra (volatil status → ref)
...
Begge S10-kriterier møtt (operatør-gated kald LLM-judge): engineering K9 PASS,
infrastructure K9 PASS. Deterministisk ikke regredert: validate 239 · kb-eval 15
· kb-update 122 · kb-integrity 192/192. K4 hevet 4→5 begge skills.
Engineering: modellversjoner (GPT-4o/Whisper/Florence/text-embedding-3) →
generisk kapabilitets-framing; MAF-«erstatter SK»-transisjon + Foundry Agent
Service GA → pekere; «Start med GPT-4o» (ABSENT i ref) droppet.
Infrastructure: SLA-tabell (ABSENT i ref) → relativ-veiledning + MCP-peker;
RTO/RPO-tabell → sammendrag + peker (ref bærer hele tier-modellen); «peak+30%»
(ref sier 20%) → generisk; Phi-3/Phi-4 + parametertall → «Phi-familien»
(fjernet faktafeil «Phi-4 14B»).
Metode: read-only verifiserings-agenter kartla ref-dekning FØR sletting.
judge-results.json oppdatert med ferske kalde eng+infra-verdikter (_updated: S10).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 09:31:21 +02:00
a9ff401b6e
docs(ms-ai-architect): Sesjon 9 SPOR A-resultater i roadmap + STATE
...
Sesjon 9 RESULTATER i roadmap (metode, per-skill-endringer, S10-binding)
+ S9-rad i PLANLAGT-tabellen merket FERDIG. STATE peker paa Sesjon 10
(K9-destale engineering + infrastructure) som neste.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 07:37:12 +02:00
c4230d2e88
fix(ms-ai-architect): Sesjon 9 - K4+K9 body-cleanup security + governance
...
Tynner duplisert/volatil body-info i de to skills som feilet begge
kriterier, til pekere mot kanoniske ref-filer. Fersk operatør-gated
LLM-judge: security K4 5/5 + K9 PASS; governance K4 5/5 + K9 PASS.
Security (K9): Defender GA/preview/Azure-Gov-status, §3-ytelsestall,
GPT-4o-par og PTU break-even ut av body. Uverifiserte tall (20-50ms,
5-10x, 80% latens — fantes i ingen ref) droppet, ikke flyttet.
Security (K4): risikoklassifiserings-tabellen (divergerte fra rubrikk:
6 band vs 5, manglet Uakseptabel) + P10/P50/P90-tabellen (flat x0.6/x1.8
motsa kanonisk per-komponent-modell, agentens OBLIGATORISK-kilde) ->
peker. Antakelse-test bestaatt: ingenting asserter body-tallene.
Governance (K9): EU Data Boundary §2.3 - droppet volatile regioner
(Sweden Central/West Europe; body motsa refs som sier Norway East/West
Europe), repek kryss-ref til gdpr-compliance-ai-systems.md.
Governance (K4): §6.2 AI Act-tre - kollapset oppramsede (og ufullstendige)
Art.5 + Annex III-lister til pekere mot ai-act-classification-methodology.md;
§2.1 eneste oversiktstabell.
judge-prompt.md K9 strammet: stabile identifikatorer (forordningsaar,
OWASP 2025, MADR v3.0, saksnr) eksplisitt ute av scope. judge-results.json
oppdatert med ferske sec+gov-verdikter.
Gates: validate 239 · kb-eval 15 · kb-update 122 · kb-integrity 192/192.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 07:37:03 +02:00
2356d211ee
docs(ms-ai-architect): Sesjon 8 SPOR A-resultater i roadmap + STATE
...
- Roadmap: «Sesjon 8 — RESULTATER» (6×5-vekting konsolidert til kanonisk
rubrikk; varianttall, antakelse-test, ⚠ flagget risikotabell-divergens
utenfor scope). Tabellrad 8 markert ✅ FERDIG.
- STATE: S8 ferdig → NESTE = Sesjon 9 (K4+K9 body-cleanup sec+gov, inkl.
K4-re-judge for security). kb-integrity 181→182.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 06:35:59 +02:00
a6bda85c6e
fix(ms-ai-architect): Sesjon 8 - konsolider 6×5-vekting til kanonisk rubrikk
...
Løser K4-bug «DUPLICATION-WITH-CONTRADICTION»: security SKILL.md gjenga en
vekttabell (Identity 20/Network 15/Data 20/Content 20/Compliance 15/Mon 10)
som motstred den kanoniske rubrikken (Compliance 25/Data 20/Identity 20/
Content 15/Network 10/Mon 10) som security-assessment-agent allerede bruker.
- Rubrikk: ny seksjon «Arbeidsbelastnings-profiler (adaptiv vekting)» —
Standard = kanonisk, + variantene Eksternt eksponert / Persondata-intensiv
(godkjente retningsdeltaer re-forankret til kanonisk baseline; sum 100 %).
- SKILL.md: fjernet divergerende 3-kolonne vekttabell → peker til rubrikken.
Beholdt risikoklassifiserings-tabellen (per roadmap).
Antakelse testet: ingen kode/test asserter SKILL.md-vekttallene (agent bruker
rubrikken). Verifisert: validate 239 · kb-integrity 182/182 · kb-eval 15/15 ·
eval security K3 212→203 (pass) / K5 0.2581 uendret / refConsistency 0 mismatch.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 06:33:27 +02:00
b32580f7e1
docs(ms-ai-architect): planlegg SPOR A-restsesjoner (S8–S12) + beslutninger
...
Operatør godkjente alle 4 anbefalinger (2026-06-20). Roadmap «SPOR A —
gjenstående sesjoner»: S8 6×5-vekting · S9 K4+K9 sec+gov · S10 K9 eng+infra ·
S11 K1 · S12 lukk (full LLM-judge + ny baseline). Hver med verifiserbart
kriterium + gated SKILL.md-skriving + LLM-judge for K4/K9/K1. STATE peker på
S8 som START HER. Tasks #28-32. Implementering starter neste sesjon.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 06:17:02 +02:00
2d27b3ffbd
chore(ms-ai-architect): track STATE.md (avslutter stale polyrepo-gitignore)
...
STATE.md var gitignored fra polyrepo-splittet (d09e0e9 ) — den gamle konvensjonen
som den globale ~/.claude-regelen nå eksplisitt overstyrer ("STATE.md er tracked
og committes i hvert repo — ALDRI gitignored"). Uten dette persisteres ikke
sesjonsslutt-staten til Forgejo, hvilket bryter kontinuitetssystemets formål.
Fjernet kun STATE.md fra ignore; REMEMBER/ROADMAP/TODO/*.local.md forblir lokale.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 05:49:02 +02:00
797179fc5f
docs(ms-ai-architect): Sesjon 7 SPOR A-resultater i roadmap + STATE
...
Roadmap «Sesjon 7 — RESULTATER» (refTall + dead-path + K5, deterministisk del
FERDIG). STATE peker på NESTE = SPOR A beslutning-gated rester (6×5-vekting,
K9, K4, K1 — krever operatør-input). Telling oppdatert: kb-integrity 181/181,
K5 navngitte per skill.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 05:47:26 +02:00
abac74fe67
feat(ms-ai-architect): Sesjon 7 steg 3 - K5 progressive disclosure (3 skills PASS)
...
Lukker K5-FAIL (navngitte fil-lenker / totale ref-filer ≥ 0,20) ved å følge
infrastructure-forbildet (0,97): full-sti `references/<mappe>/<fil>.md`-pekere
til kjernefiler, ikke bare mappe-refs.
Funn: security + advisor hadde filene navngitt allerede, men som BARE filnavn
uten `references/`-prefiks → ufanget av både eval-regex og kb-integrity (samme
klasse som de døde ref-paths i steg 2). Fiks = konverter til full sti:
- security: 10→16 navngitte (0,16→0,26). Konverterte 5 perf-filer (§3) + owasp (§1).
- advisor: 1→25 navngitte (0,016→0,40). Konverterte ~18 bare-filnavn i Kunnskaps-
basen + la til model-catalog-2026 og entry-points for copilot-extensi-
bility/prompt-engineering (40 filer som manglet ALLE navngitte pekere).
- engineering: 0→35 navngitte (0,0→0,23). Genuint 0 før; la til `> Kjernefiler:`-linje
med 4-6 kuraterte filer per §1-7.
Bivirkning: kb-integrity-checks 115→181 (de nye full-sti-refsene valideres nå),
orphan-warnings 260→223. Verifisert: K5 PASS alle 5 · K3/refTall ikke regredert ·
validate 239 · kb-eval 15 · kb-update 122 · kb-integrity 181/181.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-20 05:44:53 +02:00
3c097f5fb4
fix(ms-ai-architect): Sesjon 7 steg 1+2 - refTall-konsistens + døde ref-paths
...
Lukker målte eval-FAIL i optimaliseringsfasen (krav 4):
Steg 1 (refTall): engineering agent-orchestration 20→24 (faktisk på disk)
+ total 149→153; governance npsg 29→30; fjerner inkonsistent 24/20-dobbel-
sitering. Verifisert: eval refCountConsistency PASS for alle 5.
Steg 2 (døde ref-paths i governance §4 monitoring-bullets — bare-filnavn,
derfor ufanget av kb-integrity): azure-monitor-ai-services-setup →
azure-monitor-setup-ai-workloads; drift-detection-automated-retraining →
model-performance-drift-detection. Begge fant ekte filer på disk (STATE
flagget kun den ene; den andre er et verifiseringsfunn). Grep: ingen døde igjen.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 23:18:45 +02:00
0e0c43dc1a
docs(ms-ai-architect): Sesjon 6-resultater i KB-redesign-roadmap
...
Lag 3 ferdig → alle 6 lag står. Roadmap markerer lag 3 done; gjenstår (operatør prioriterer): optimalisering krav 4, kurs-spor, scheduled deteksjon, low-currency, flere Source-backfills.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:58:10 +02:00
dab3f1d044
chore(ms-ai-architect): Sesjon 6 bootstrap - **Source:**-header på 3 entydige ref-filer
...
De 3 ref-filene som siteres av nøyaktig 1 URL med rent topisk treff får sin **Source:**-autoritetsheader (entydig, ingen gjetning): late-chunking-patterns→embeddings-tutorial, ai-red-team-operations-practical→ai-red-team/training, batch-api-usage-optimization→batch-blob-storage. authority_source-dekning 0→0,22%; lag-5 regel 3 nå virksom for disse filene.
Bevisst utelatt: ai-act-annex-iii-checklist.md — dens autoritet er EU-forordningen (deklarert **Hjemmel:** Regulation (EU) 2024/1689), ikke den tangentielle Purview-URLen den siterer. Å sette Purview som autoritet ville vært en gjetning som får regel 3 til å bomme (verifiseringsplikt).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:58:10 +02:00
e42a84fb7b
feat(ms-ai-architect): Sesjon 6 - lag 3 verifisering-INN (authority-binding)
...
Lag 3 etablerer per-fil autoritetsbinding som mater verify-out regel 3 (autoritets-mismatch — regresjonens rotårsak, inert til nå pga 0% dekning). Designvalg (operatør 2026-06-19): HEADER-AS-TRUTH — en fils **Source:**-header ER den utpekte autoriteten. Gjetter ALDRI fra siterte URLer (251/303 filer siterer 4-10 → gjetning ville fått regel 3 til å bomme + 303 operatør-beslutninger = primær-fallgruven).
- lib/authority.mjs (ren lib, SKRIVER ALDRI; kun read-only kb-headers+url-normalize): resolveAuthority (validert http(s); fri tekst avvist; ikke-MS-autoritet som EU-forordning tillatt), collectDeclaredSources (normalisert Set), markUrlAuthority, authorityCoverage. - build-registry: recomputer authority_source per URL-entry fra headere (ikke carry-over) + dekningslogg. - commands/kb-update.md §4 c1: authority_source=resolveAuthority(fil) → lag-5 c2.
TDD: 11 tester FØR kode inkl. import-invariant + ende-til-ende regel 3 (source_url ≠ header-autoritet → flagged). Tester: validate 239 · kb-update 122 (+11) · kb-eval 15 · kb-integrity 115/115.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:58:10 +02:00
3ed32c343c
docs(ms-ai-architect): Sesjon 5-resultater i KB-redesign-roadmap + STATE
...
Numerert roadmap (Sesjon 1–5) er ferdig; 6-lags-arkitekturen står strukturelt. STATE peker neste fase på operatør-valg: lag 3 verifisering-INN / optimaliserings-fase (krav 4) / kurs-spor / scheduled deteksjon / low-currency-bøtta.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:31:40 +02:00
48884b67a6
feat(ms-ai-architect): Sesjon 5 - transformasjonslag (lag 4, doc→KB-fil)
...
Lag 4 destillerer et hentet Microsoft Learn-dokument til en KB-referansefil. Speiler mønsteret fra decisions-io/verify-out: ren-funksjon-lib + tynn LLM-integrasjon + TDD. lib/transform.mjs SKRIVER ALDRI — returnerer content/verdict/sti; skriving skjer kun via operatør-gate etter lag 5.
Nøkkelfunn/-fiks: gammel prompt-template.md la kilder i en bunn-seksjon, men build-registry/kb-headers.parseSourceHeader skanner kun øverste 500 bytes → authority_source-dekning = 0 %. Lag 4 legger **Source:** i HEADER-blokka — forutsetningen for at lag 3 (fremtidig) kan backfille authority_source og lag-5 regel 3 fyrer.
- buildKbHeader({title,status,category,source,lastUpdated}): Status+Source obligatoriske (kaster ved mangel). - validateKbFile(content) → {valid,missing[]}; bruker parseSourceHeader (én sannhetskilde med build-registry). - buildChange(...): eksplisitt lag-4→lag-5-bro, mater classifyChange. - resolveTargetPath(tax,category,filename): ruter via taksonomi getCategorySkill; null=ukjent→gate.
Prompt: scripts/kb-update/transform-prompt.md (doc→KB; husformat fra prompt-template.md, status-påstander eksplisitte for lag-5-gaten). Wiret i commands/kb-update.md §3.d (ny godkjent URL→fetch→destillér→header→validate→buildChange→lag5→resolveTargetPath→gate→atomisk) + §4.d (oppdateringer passerer validateKbFile). eval.mjs eksporterer nå evalSkill for kriterium-testen.
Kriterium møtt: «regenerer 1 fil → eval-score ≥ baseline» (test-transform-criterion.test.mjs). TDD: 12 lib-tester (inkl. import-invariant: ingen write-utils) + 2 kriterium FØR kode. Tester: validate 239 · kb-update 111 (+16) · kb-eval 15 (+2) · kb-integrity 115/115.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:31:26 +02:00
94a5d1bb14
feat(ms-ai-architect): Sesjon 5 carry-forward B — datoløse filer → unverified-tier
...
Rotårsak: en datoløs ref-fil fikk effectiveDate=0000-01-01 (alltid «stale») OG en path-basert prioritet (kunne bli critical) → flommet critical-bøtta og druknet genuint kritiske filer. Fix: ny unverified-tier deklarert i domain-taxonomy.json (lag 0, eneste sannhetskilde for prioritet).
makePriorityFn(tax) tar nå valgfri hasDate (default true → bakoverkompatibelt for eksisterende én-args-kallere); report-changes sender Boolean(fileDate). unverified rangerer sist i sorteringen — manglende dato er metadata-hygiene, ikke currency-hast. Ekte registry: 1 fil skilt ut som Unverified.
TDD: 4 tester FØR kode (test-priority-unverified.test.mjs).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:31:25 +02:00
97aa5d3378
chore(ms-ai-architect): Sesjon 5 carry-forward A — slett ukonsumert category-skill-map.json
...
Map-fila divergerte fra disk-sannhet i 4 entries og var ukonsumert av all runtime (verifisert: docs/development.md erklærte allerede taksonomien som eneste kilde; kun README kalte den feilaktig «used by generate-skills»). Operatør-valg 2026-06-19: slett + rydd README. Fjerner en av de divergerende taksonomiene redesignet finnes for å eliminere.
README.md peker nå på scripts/kb-update/data/domain-taxonomy.json via lib/taxonomy.mjs getCategorySkill (disk-sann).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:30:49 +02:00
3bbcd9168b
docs(ms-ai-architect): fold 2 carry-forward cleanups inn i Sesjon 5
...
Operatør-valg 2026-06-19: category-skill-map-stale (4 entries) + datoløse-fil-
reklassifisering i getFilePriority tas i Sesjon 5 sammen med lag 4, ikke som
egen cleanup. Binding-fakta (disk-sannhet per entry, §151/§152) festet i
roadmap så neste sesjon har presist scope.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:06:03 +02:00
7bd94e8e27
docs(ms-ai-architect): Sesjon 4-resultater i KB-redesign-roadmap + STATE
...
Markerer lag 5 (verifisering-ut) ferdig: kriterium møtt (agentic-retrieval-
fixtur → flagged, ikke auto-applied). Roadmap-tabell rad 4 ✅ + resultatseksjon.
STATE peker på Sesjon 5 (lag 4 transformasjon). Tester: kb-update 95.
Carry-forward flagget: category-skill-map stale + datoløse-reklassifisering
(operatør avgjør Sesjon 5 vs egen cleanup); authority_source 0 % → regel 3
inert til lag 3 verifisering-INN.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:02:34 +02:00
6af3624b17
feat(ms-ai-architect): Sesjon 4 - verifisering-ut (lag 5) + adversarial regresjonstest
...
Lag 5 kjører ETTER transformasjon (lag 4) og FØR en kandidat-endring skrives til
en KB-fil. Den fanger regresjons-klassen: en status-påstand «korrigert» mot en
tilfeldig sitert side og stille auto-applyet (den kjente agentic-retrieval-
regresjonen — hovedkontekst måtte rette manuelt).
Regel (spec §21): status-påstander (GA/preview/versjon/pris) flagges ALLTID for
operatør, aldri auto-applyet — uansett hvor sikker evidensen ser ut.
- lib/verify-out.mjs: ren klassifiserer, null deps (speiler decisions-io).
detectStatusClaim(text) → {isStatus, kinds}; classifyChange(change) →
{verdict: flagged|auto-applied, status_claim, reasons}. Tre flag-regler:
status-gate (§21) · adversarial refutering · autoritets-mismatch (regresjonens
rotårsak). Konservativ med vilje: ved tvil flagges. SKRIVER ALDRI.
- Fixtur tests/fixtures/kb-update/agentic-retrieval-regression.json: den kjente
regresjonen (flat «GA» mot nyansert «delvis GA … resten preview»).
- TDD: 13 tester før kode, inkl. import-invariant (ingen write-utils).
- Wiret i kb-update.md §4 c2 (lag 5 mellom identifiser-endring og skriv).
Kriterium møtt: fixtur → flagged:true, ikke auto-applied.
Tester: validate 239 · kb-update 95 (+13) · kb-eval 13 · kb-integrity 115/115.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 22:00:36 +02:00
57166e82d6
docs(ms-ai-architect): Sesjon 3-resultater i KB-redesign-roadmap
...
Per-sesjon-resultater + Sesjon 4-peker (verifisering-ut, lag 5).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 21:48:03 +02:00
fe484ec323
feat(ms-ai-architect): Sesjon 3 - decision-ledger (lag 2) + discovery-dedup
...
Lukker discovery-løkken gjennom operatør-gaten. data/decisions.json er eneste
skrive-autoriserte bro mellom deteksjon og KB/registry; discovery LESER den og
utelater alt operatøren har tatt stilling til.
Dedup-policy = A (operatør-valg): isDecided = enhver ledger-entry (approved/
rejected/pending). Kun helt fraværende URLer re-foreslås.
- lib/decisions-io.mjs: createLedger/load/save(atomisk)/isDecided/recordDecision
(ren)/filterUndecided. TDD: 10 tester før kode.
- discover-new-urls.mjs leser ledger, filtrerer, rapporterer deduped_by_ledger.
Importerer ALDRI write-utils (invariant verifisert, 6 guard-tester).
- Gate dokumentert i kb-update.md §3b (eneste skrivevei).
- decisions.json tracket via gitignore-negasjon (som domain-taxonomy.json).
Kriterium møtt: dedup-diff (rejected re-foreslås ikke runde 2).
Tester: validate 239 · kb-update 82 (+16) · kb-eval 13 · kb-integrity 115/115.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 21:48:03 +02:00
444b9a375a
docs(ms-ai-architect): spor onboarding-mekanisme-redesign som kommende fase
...
Operatør-flagget kritisk for brukervennlighet (2026-06-19): virksomhetskontekst
må være ambient i enhver interaksjon, overleve oppgraderinger/reinstall, og bære
fritekst utover de formelle spørsmålene. Dagens mekanisme (org/*.md, gitignored,
i plugin-katalog, betinget per-agent-lesing) oppfyller ingen av delene.
Brief, ikke godkjent plan — design godkjennes separat. Egen fil i docs/ per
ingen-lokale-kontinuitetsmekanismer-regelen.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 21:48:03 +02:00
17865a251b
docs(ms-ai-architect): konkret Sesjon 3-startplan i roadmap (handoff)
...
7-stegs startplan for lag 2 (decision-ledger data/decisions.json + dedup som
lukker discovery-loopen gjennom operator-gaten), m/ kjorbart kriterium
(discovery 2x re-foreslar ikke rejected URL) og invariant-guard (deteksjon
importerer aldri write-utils). Speiler Sesjon 2-monsteret (ren-funksjon-lib +
tynn script + TDD). Sikrer at neste sesjon starter uten re-utledning.
Inkluderer 2 Sesjon 2-funn som Sesjon 3-kandidater (category-skill-map stale,
datolose-reklassifisering) + eksplisitt ikke-i-scope.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 21:18:08 +02:00
c7147618c9
docs(ms-ai-architect): Sesjon 2-resultater + oppdater match-rate/taksonomi-doc
...
Roadmap: Sesjon 2 RESULTATER (begge kriterier mott - grep TARGET_PREFIXES==0,
foundry not_in_sitemap 38.4%<50%). Binding Sesjon 3-funn: category-skill-map.json
stale i 4 entries (disk er kanon, map ukonsumert av kode), datolose-reklassifisering
utsatt, foundry/openai-tail (63 ikke-probet).
development.md: oppdatert match-rate (~73% av 1343), ai-foundry->foundry-remap,
ny taksonomi-seksjon (lag 0, domain-taxonomy.json eneste sannhetskilde).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-19 21:12:32 +02:00