|
|
94c7f42128
|
feat(ms-ai-architect): C3.2 — course-diff (ren) + course-registry load/save (TDD) [skip-docs]
Pure diff/fold + run-mode selector for course detection (C3.2 av GODKJENT C3-spec).
- lib/course-diff.mjs (REN, null imports): normalizeCourse, selectMode,
isFullEnumDue, diffCourses, updateRegistry, FULL_ENUM_MAX_AGE_DAYS=30.
Full-enum-pin (§4.2): removed beregnes KUN i full-modus; inkrementell og
baseline gir removed:[]. Baseline emitterer ingen leads (§8 b).
updateRegistry ren (muterer aldri): incremental merger, baseline/full bygger
fra API-sett + dropper retirerte UIDs, stamper last_full_enum.
- registry-io.mjs +loadCourseRegistry/saveCourseRegistry (additivt, speiler
loadRegistry/saveRegistry; fil course-registry.json).
- test-course-diff.test.mjs (23) + test-courses-invariant (+3: diff-modul ren).
Gate §7 C3.2 møtt. kb-update 237->263, validate PASSED, null regresjon.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-23 13:12:49 +02:00 |
|
|
|
0390cc10ca
|
feat(ms-ai-architect): C3.1 — keychain + Learn Platform API-klient (TDD) [skip-docs]
C3 kurs-deteksjon, fase C3.1 (spec docs/c3-course-detection-plan.md §6/§7).
Claude-frie, fil-frie infrastruktur-lag for kurs-detektoren (C3.4):
- lib/keychain.mjs: readSecret() leser én Keychain-item via `security`-CLI,
fail-soft (manglende item / ikke-macOS → null). execImpl-DI for test.
- lib/learn-api.mjs: getToken (Entra client-credentials), paginate (async-gen,
følger nextLink), buildApiUrl (pinner api-version), buildUpdatedAtGt (kaster
på dato-only, canon Z — gotcha #1). Robusthetskontrakt §6: response.ok-sjekk
(fetch kaster ikke på 4xx/5xx), AbortSignal.timeout, 429/5xx-retry som
respekterer Retry-After, 4xx≠429 ikke-retry, fail-closed. fetchImpl/sleep-DI.
Tester (24, alle grønne): test-learn-api (token-body, buildUpdatedAtGt,
nextLink-paginering, produkt-param, alle robusthets-asserts), test-keychain,
test-courses-invariant (Claude-fri + skriver-ingen-filer). Live-probe (efemer)
grønn mot ekte Platform API m/ ekte creds: token + full-enum + inkrementell.
Intern infrastruktur (ingen brukervendt kommando/hook/atferd endret ennå —
surfacing + docs lander i C3.6). kb-update 213→237 · validate 239 · null regresjon.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-23 12:59:16 +02:00 |
|