Verifisert mot live Microsoft Learn (foundry/openai/concepts/priority-processing,
foundry/foundry-models/concepts/deployment-types, foundry/concepts/manage-costs):
- Priority processing lagt til (deployment-tabell + Nivå 4). ÆRLIG framing: delt doc-signal —
provisioned-throughput-siden lister den som fullverdig pay-per-token-kategori m/ latensmål per
modell (gpt-5.5/5.4/5.2/5.1/4.1), mens deployment-types/enable-siden markerer preview/invitasjon.
Skrevet som tier på GlobalStandard/DataZoneStandard (modellv. 2025-12-01+), m/ «rulles ut»-caveat.
- VERIFY meter-skille bekreftet: «Foundry Models sold by Azure billed via Azure meters as First Party
Consumption Services» under Foundry-ressurs; partner/community «billed through Azure Marketplace» →
Global resources, format model-name-GUID. Oppdatert Cost-tracking-bullet (slo feil sammen før).
- Phi-3→Phi-4-familien (2 steder): katalog viser kun Phi-4-familien (Phi-4, -mini-instruct,
-multimodal, -reasoning) i sky-serverless; Phi-3 superseded. Estimat-priser beholdt m/ (estimat).
- Quota 200k TPM/1k RPM: lagt til «verifiser i quota-docs (varierer per modell/type/region)».
Korreksjons-disiplin (operatør-godkjent): footer-dato-inkonsistens fikset — header 2026-04→2026-06,
footer «Sist oppdatert 2026-02»→2026-06 (561-seksjonsstempel urørt, ikke re-verifisert). 2 kilde-
rader stemplet Verified MCP 2026-06 (faktisk re-fetchet). Disclaimed priser urørt. validate 239/0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Verifisert mot live Microsoft Learn (foundry/concepts/manage-costs) — alle tre nye
VERIFY-påstander bekreftet før skriving:
- (a) Project-level cost attribution (Preview): «Every Foundry project is automatically
tagged with a project tag ... You don't need to add tags manually». Begrensning bekreftet:
kun Models sold by Azure (Azure Direct/OpenAI), ikke Marketplace ennå. Lagt til ny seksjon.
- (b) Agent cost monitoring: Operate→Overview Estimated cost-tile (ekskl. prompt-/ikke-Foundry-
agenter) + Assets→Agents Estimated costs-kolonne + Build→Agents→Monitor token-kostnad. Lagt til.
- (c) 3rd-party meters: «Some providers' models are displayed as meters under Global resources ...
format model-name-GUID». Oppdatert Multi-Model-seksjonen med Global resources + Cost-by-resource.
- Modell-deployment-kostnader (Build→Models→Monitor) tatt med i samme nye seksjon.
Verifiserte korreksjoner funnet under fetch (korreksjons-disiplin, operatør-godkjent):
- Implementering-steg 2 «filtrer på Service Name: SaaS» finnes ikke i doc → «Gruppér på Meter».
- Microsoft-modeller vises under Foundry-ressursen (ikke «Cognitive Services-ressursen»).
- prompt caching «(beta)» fjernet (GA, jf. fil 1 cache-100% verifisert current).
- Model-selection-tips «GPT-3.5 Turbo i stedet for GPT-4» (legacy) → mindre/billigere modell (gpt-4o-mini).
- gateway-diagram gpt-35-turbo→gpt-4o-mini (illustrativt). Disclaimed priser urørt.
Header 2026-04→2026-06; kilde #1 stemplet Verified MCP 2026-06 (faktisk re-fetchet). validate 239/0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Verifisert mot live Microsoft Learn (cost-management-billing/reservations/azure-openai +
provisioned-throughput-billing + provisioned-throughput-sizing):
- VERIFY BEKREFTET — overage-prioritering: kilden sier «discount is shared automatically
across all models in scope ... matching isn't by model or deployment ID». Filens
«anvendes først Azure OpenAI, deretter Foundry Models» var feil regel-framing → erstattet
med aggregert-per-time-på-tvers-av-scope. Eksempelet (500/300/200/100) matcher docs eksakt, beholdt.
- DRIFT (kirurgisk): «~150 PTU»-kalkulatoreksempel var stale (gammel TPM/PTU). Dagens
gpt-5.1 = 4750 input-TPM/PTU, ratio 8 → 300K/4750 ≈ 63 rå → 100 regional. Korrigert + reproduserbar.
- gpt-5→gpt-5.1 (2 steder): ratio verifisert = 8 (identisk gpt-5; gpt-5.5 ville vært 6 — unngått).
- Ny «Priority processing» (pay-per-token, latensmål, ikke reserverbar) i beslutningstre.
- Min-PTU-caveat (varierer per modell: gpt-5-mini 25, DeepSeek/Fireworks 100+) + sizing-link.
- Header 2026-04→2026-06 + 2 verifiserte kilde-stempler til 2026-06 (gov-rad urørt, ikke re-verifisert). validate 239/0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Samler drift-funn fra 7 parallelle research-agenter for de gjenstående critical
cost-filene + main-agent direkte-verifiserte ground-truth. Resumerbar apply-plan;
NYE påstander merket VERIFY (må bekreftes mot kilde før skriving — verifiseringsplikt).
1/8 (ptu-vs-paygo) allerede ferdig i d36cddd.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Frigir akkumulert KB-arbeid som lå ufrigitt på main siden v1.16.0:
- Modellkatalog GPT-5.1 → GPT-5.5 (3 filer)
- Foundry-navnesveip «Azure AI Foundry» → «Microsoft Foundry» (233 filer, 810 forekomster)
- RBAC-rolle-renavn «Azure AI User» → «Foundry User» (1 fil)
Kun reference docs — ingen kommando-/agent-/skill-endringer. validate-plugin 239/0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Microsoft har omdøpt Foundry RBAC-rollene (visningsnavn) — rolle-IDer og
kjernepermisjoner UENDRET. Verifisert mot offisiell MS-doc (juni 2026,
konsistent «Important»-note på tvers av kilder):
- Azure AI User → Foundry User
- Azure AI Owner → Foundry Owner
- Azure AI Account Owner → Foundry Account Owner
- Azure AI Project Manager → Foundry Project Manager
Kun ÉN genuin bruks-forekomst i korpuset (RBAC-krav for publisert
Agent Application-endepunkt). Renavnet med parentes «(tidligere Azure AI
User — rolle-ID og kjernepermisjoner uendret)» ved nevningen, konsistent
med at gamle navn fortsatt vises under utrullingen.
BEVART: azure-ai-foundry-cost-governance.md:109 dokumenterer hele
renavn-mappingen som forklarende ref (tema b) — ikke rørt.
Ref-fil-edit (ikke SKILL.md) → judge-cache gyldig. Deterministisk re-score:
advisor 91, eng/gov/infra/sec 96 (alle ≥90, uendret). validate 239/0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tema (a) sveip av 27 GPT-5-filer fullført (triage). Korpuset er overveiende
allerede current eller pedagogisk: 9 filer kjenner allerede 5.x-generasjonen
(gpt5-gpt41-pricing, reasoning-models, structured-output, token-per-second,
m365-copilot, copilot-studio, cost-models, deterministic-cost, multimodal),
~14 har kun pedagogiske/passing mentions ("GPT-4→GPT-5", generisk "GPT-5-serien").
Eneste genuine drift: azure-ai-foundry.md — GPT-5 GA-tabell + intro-enumerering
var én generasjon bak (kun aug-2025-settet), tross delvise 2026-06-18 residens-edits.
- GPT-5-tabell utvidet med gpt-5.1->5.5 (GA-datoer, kontekst, kontekstsprang ~1M
for 5.4/5.5, gpt-5.5 Data Zone EU i Norway East) — speilet eksakt mot katalogen.
- Intro-enum: "GPT-5-serien (...)" -> "GPT-5-generasjonen (... utvidet med 5.1->5.5)";
o3/o4-mini -> full o-serie.
- Header->2026-06 + Source + pointer til kanonisk model-catalog-2026.md.
Naming (Azure AI Foundry->Microsoft Foundry) urørt — egen pass (tema b).
validate 239/0, ms-ai-advisor 91/100 (judge-cache gyldig, kun deterministisk re-score).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Speiler Phase 6-coachingen til de fem strukturerte fasene: hver Phase 1–5
får et `**Hint — typisk relevant / sjelden relevant:**`-prosahint som agenten
deler med brukeren før AskUserQuestion-spørsmålene, slik at intervjuet coacher
mot riktig alternativ i stedet for å fyres av blankt. Hintene er grunnet i
filens egne option-lister (ingen nye eksterne påstander → verifiseringsplikt
ivaretatt). Agent-fil, ikke skill → ingen judge-/score-effekt.
TDD: 4 nye assert i test-onboarding-parity.sh (RED→GREEN) — ASCII-only anker
«typisk relevant / sjelden relevant» ×5 + «Del med brukeren» + begge framing-ord.
Bash 3.2-fix: ankeret holdes ASCII-only fordi multibyte em-dash i en shell-var
under `set -u` + gåseøyne-interpolasjon kræsjer scriptet.
e2e onboarding-parity 25/25, validate 0/0, discovery 13/13, kb-integrity 192/0,
full e2e grønn.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
apply-skill-op.mjs skrev aldri score-cachen (data/skill-score-report.json) selv
— kun score-skill.mjs --write gjorde det. Etter en create/merge/sanitize/retire-
apply var derfor STEG C SessionStart-surfacingen stale til operatøren manuelt
re-scoret.
Ny eksportert refreshScoreCache(report, {cachePath, generatedAt}): ren
scoreReport+buildScoreCache, én writeFileSync, injiserbar generatedAt (determini-
stisk i test). main() bygger nå buildReport() ÉN gang ved res.applied og deler
den mellom printQualityGate(report,…) (refaktorert til å ta report) og
refreshScoreCache(report). Hel-korpus med vilje: retire dropper, create legger
til, merge/sanitize flytter søsken-K10 → cachen er uavhengig av HVILKEN skill
endret seg.
TDD: 4 nye assert i tests/kb-eval/test-apply-score-cache.test.mjs (RED→GREEN).
kb-eval 154/154, kb-update 323/323, validate 239/0, kb-integrity 192/0. Real
cache er gitignored → testene skriver kun til tmpdir.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Phase 6 (fri kontekst) coacher nå brukeren FØR det åpne spørsmålet med to
lister: «hva som typisk hører hjemme» (initiativer, smertepunkter, tidligere
hendelser, strategiske føringer, leverandør-preferanser/-forbud) og «hva du
vanligvis kan hoppe over» (det de fem strukturerte kategoriene alt fanget;
generell AI-synsing; secrets/sensitive personopplysninger → ALDRI). Lagring
forblir ordrett. Lukker operatør-krav 2 (S39): onboarding skal coache på
inkludering/ekskludering, ikke bare stille ett blankt spørsmål.
TDD: 7 nye assert i tests/test-onboarding-parity.sh (RED→GREEN), suite-navn
utvidet til «K4-paritet + Phase 6 guided-prose». 21/21 PASS. validate 0-fail,
test-hooks 11/11, user-data node 25/25 — alle grønne.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
summarizeSkillQuality(cache) (pure) in detection-schedule.mjs: one-liner
"Skill-kvalitet: N skills < 90 % (navn)"; null when all skills meet target,
when the cache is missing (gitignored → absent in a fresh clone), or when the
shape is malformed. Reads the CACHED skill-score-report.json (from Steg B) —
never scores live (buildReport reads ~400 ref-files). Wired into
session-start-context.mjs after the course-signals block (same
existsSync/try-catch pattern). 7 new tests (kb-update 316 → 323).
[skip-docs]: README is the public end-user doc; skill-quality scoring is
maintainer-only tooling (the cache is gitignored, so the signal never surfaces
for end-users). The right doc homes ARE updated: CLAUDE.md hook table + a
caveat note (this commit), and docs/skill-quality-scoring-plan.md §3 komponent 4.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
STATE.md er intern state-of-play og skal ALDRI nå et offentlig speil. Dette repoets
Forgejo-remote (open/) publiseres open source, så STATE.md gjøres local-only per den
globale kontinuitets-regelen (samme som linkedin-studio). Hooken injiserer den fra
disk uavhengig av tracking → kontinuitet upåvirket. Historikk-scrub følger.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Skjerper ms-ai-infrastructure-description for å bryte build↔operate-overlappet
mot ms-ai-engineering (operatør-godkjent leaning, S38): "multi-region"→"cross-region"
og "edge AI architecture"→"edge AI deployment". Fjerner de delte distinktive tokenene
`multi` (vekt 0.5) og `architecture` (0.333) → eng↔infra combined 7.4167→6.5833 (< 7.0
terskel). Korpus-maks faller til 6.8333 (eng↔gov, pass). Begge edits sammen gir lavere
worst-case enn edit #1 alene (6.9167), derfor robust margin.
Resultat: K10-gulvet løftes for begge → eng 89→96, infra 89→96. ALLE 5 skills nå ≥90
(advisor 91, eng/gov/infra/sec 96). Korpus-invarianten (operatør-krav S38) oppfylt.
Judge-cache (🔑-regel): description-edit invaliderer infra K1. Re-judget mot det
operatør-kuraterte 20-settet — UENDRET 1.0/0.0/1.0 (edit fjerner kun tokens → kan ikke
gi falske positive; in-domain #2/#6 trigger fortsatt på BCDR/hybrid-vokabular).
K4/K7/K8/K9 uendret (body/refs urørt). Provenance oppdatert S11→S39.
Test: K10-real-five-testen pinnet pre-fix-baseline (eng+infra FAIL) — oppdatert til å
pinne korpus-invarianten (alle 5 pass, eng↔infra < 7.0). kb-eval 142/142, kb-update
316/316, validate 239/0, kb-integrity 192/0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Legger de fem deterministiske sjekkene fra Anthropics «Skill authoring best
practices» som K1–K10-rubrikken manglet, i begge lag av score-motoren:
- eval.mjs (disk-laget): extractName + checkN1..checkN5
- N1 name-validitet (≤64, a-z0-9-, ingen «claude»/«anthropic»; gerund rapporteres, gater ikke)
- N2 description ikke-tom + ≤1024 tegn
- N3 refs én nivå dypt (ref-fil lenker ikke til annen ref-fil)
- N4 TOC i ref-filer >100 linjer (delpoeng = andel store filer med TOC)
- N5 forward-slash-stier (ingen Windows-backslash-stier i body)
wiret inn i evalSkill.deterministic (leser nå ref-fil-innhold for N3/N4)
- lib/skill-score.mjs (ren): N1–N5 i CRITERIA (vekt 1, ikke-gulv, det)
Live-sanity mot de 5 skills: N1/N2/N5 rene, N3 fanger ekte nøstet ref i
advisor (licensing-matrix.md → 3 andre ref-filer), N4 avdekker 387 store
ref-filer uten TOC (primær forbedringsspak for oppgraderingsfasen).
Tester: kb-eval 110→134 (+24). validate 239, kb-update 316 uendret grønt.
[skip-docs]: N1–N5 alt spesifisert i docs/skill-quality-scoring-plan.md §2.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Eier-CLI kan nå sette include_course_detection uten å hand-edite den gitignored
local.md: `write-schedule-config.mjs --enabled true --cadence daily --courses true`.
Flagget er VALGFRITT (opt-in inni opt-in) — utelates det, bevares en verdi satt
andre steder gjennom onboarding-rewriten (samme merge-semantikk som
interval_days / include_skill_lifecycle).
Tester (+3): --courses true setter nøkkelen, string-coercion (CLI-args er
strenger), og non-clobbering når flagget utelates. kb-update 313→316.
docs/development.md: C3-workflow peker nå på CLI-flagget framfor manuell local.md.
Live-probe (2) kjørt mot ekte Learn Platform API: baseline-registry etablert
(1093 kurs: 843 modules + 250 learning-paths), 0 leads (korrekt baseline §8 b).
Registry/report er detektorens gitignored private state — ingen filer committet.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tredje ledger-kolleksjon (courses), additivt ved siden av decisions (URL,
Spor A) og actions (skill, Spor B). De tre rene helperne speiler
recordAction-trioen 1:1:
- recordCourseLead(led, uid, lead) (ren, UID-nøklet)
- setCourseLeadStatus(led, uid, status, at) (ren transisjon, kaster på ukjent UID)
- isCourseLeadDecided(led, uid) (dedup policy A: any status)
createLedger()->courses:{}; loadDecisions backfiller courses ??= {} (bakoverkompat).
Strukturell ingen-ingest-invariant: apply-pathene leser ALDRI courses
(apply-skill-op.mjs->kun actions, discover-new-urls.mjs->kun decisions),
så et godkjent kurs-lead trigger aldri fetch/transform/KB-skriving.
commands/kb-update.md §3c: operatør-gate som leser course-detection-report.json,
dedup'er via isCourseLeadDecided, skriver godkjente leads via recordCourseLead
(--dry-run viser leads uten å skrive).
Tester (+16): test-decisions-courses.test.mjs. Eksisterende test-decisions-io
+ test-decisions-actions URØRT grønne (ikke-regresjons-bevis, samme mønster
som Spor B). kb-update 291->307 · validate 239/0 · kb-eval 100/0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
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>
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