Update-mekanismen lot siterte URL-er stå som not_in_sitemap fordi deres docset aldri ble pollet, og skjemaløse citater (tabellceller: bare learn.microsoft.com/... uten https://) ble aldri ekstrahert. - Taxonomy: +5 docsets (graph, ai-builder, power-apps, power-automate, microsoftsearch) — hver ett child-sitemap, verifisert live mot indeksen. Bevist: 21/24 not_in_sitemap-URL-er i disse docsetene blir nå tracked. - url-normalize: extractUrls fanger skjemaløse citater-med-sti (krever /path etter domenet → avviser bare-domene-prosa og JSON-eksempler); normalizeUrl kanonikaliserer scheme til https. Bevist: +19 nye URL-er ekstraherbare. - Bugfix: backtick fra inline-kode-citat (`learn.microsoft.com/...`) lekket inn i URL-en — ekskludert i regex + trailing-strip. TDD: tests/kb-update/test-url-normalize.test.mjs (ny, 14) + test-taxonomy prefiks-count 18→23 + Fase 1a-assertion. Full suite 338/338, 0 regresjon. Registry-refresh (build-registry --merge + poll) bevisst utsatt — unngår 552KB re-order-churn; effekten er empirisk verifisert read-only.
119 lines
6.1 KiB
JSON
119 lines
6.1 KiB
JSON
{
|
|
"version": 1,
|
|
"description": "Single source of truth (lag 0) for 'in-domain' classification. Consolidates four previously-divergent taxonomies into one: (a) poll-sitemaps TARGET_PREFIXES, (b) discover-new-urls INCLUDE/EXCLUDE, (c) category->skill ownership, (d) report-changes getFilePriority. Scripts READ this file; they no longer embed their own copies.",
|
|
"provenance": {
|
|
"category_skill": "PHYSICAL DISK is canonical (skills/<skill>/references/<category>/). category-skill-map.json drifted on 4 entries (copilot-extensibility, monitoring-observability, performance-scalability, prompt-engineering) and is no longer consumed by code.",
|
|
"sitemap_prefixes": "poll-sitemaps superset (23). discover-new-urls previously had only 12 — now reads this list for poll parity. Fase 1a (2026-06-26) added 5 stack-relevant docsets — graph, ai-builder, power-apps, power-automate, microsoftsearch — each a single child sitemap verified live against the index, reclaiming cited URLs previously stranded as not_in_sitemap.",
|
|
"notes": "dotnet_en-us_ deliberately excluded: 75 sitemaps, only ~12 matches — not worth weekly polling.",
|
|
"course_products": "Product slugs enumerated LIVE from the Learn Platform API (C3.3, server-side /api/v1/modules?products=<slug> probe). Doc slug 'azure-ai-foundry' is DEAD (0 hits) → Foundry/AI-services courses surface under 'azure-openai'. Slug gotchas confirmed live: 'fabric' (not 'microsoft-fabric'), 'entra' (not 'microsoft-entra-id'), 'azure-cosmos-db' (not 'cosmos-db'), 'azure-cognitive-search' (not 'azure-ai-search'). 'azure-kubernetes-service' is live but excluded (no AI category → noise). Maps slug->category; the owning skill is DERIVED from category_skill via makeCourseClassifier (never stored, cannot diverge)."
|
|
},
|
|
"sitemap_prefixes": [
|
|
"azure_en-us_",
|
|
"microsoft-copilot-studio_en-us_",
|
|
"security_en-us_",
|
|
"fabric_en-us_",
|
|
"power-platform_en-us_",
|
|
"ai_en-us_",
|
|
"copilot_en-us_",
|
|
"compliance_en-us_",
|
|
"agent-framework_en-us_",
|
|
"semantic-kernel_en-us_",
|
|
"entra_en-us_",
|
|
"purview_en-us_",
|
|
"microsoftteams_en-us_",
|
|
"sharepoint_en-us_",
|
|
"microsoft-365_en-us_",
|
|
"training_en-us_",
|
|
"cloud-computing_en-us_",
|
|
"privacy_en-us_",
|
|
"graph_en-us_",
|
|
"ai-builder_en-us_",
|
|
"power-apps_en-us_",
|
|
"power-automate_en-us_",
|
|
"microsoftsearch_en-us_"
|
|
],
|
|
"category_skill": {
|
|
"agent-orchestration": "ms-ai-engineering",
|
|
"ai-security-engineering": "ms-ai-security",
|
|
"api-management": "ms-ai-engineering",
|
|
"architecture": "ms-ai-advisor",
|
|
"azure-ai-services": "ms-ai-engineering",
|
|
"bcdr": "ms-ai-infrastructure",
|
|
"copilot-extensibility": "ms-ai-advisor",
|
|
"cost-optimization": "ms-ai-security",
|
|
"data-engineering": "ms-ai-engineering",
|
|
"development": "ms-ai-advisor",
|
|
"hybrid-edge": "ms-ai-infrastructure",
|
|
"mlops-genaiops": "ms-ai-engineering",
|
|
"monitoring-observability": "ms-ai-governance",
|
|
"multi-modal": "ms-ai-engineering",
|
|
"norwegian-public-sector-governance": "ms-ai-governance",
|
|
"performance-scalability": "ms-ai-security",
|
|
"platforms": "ms-ai-advisor",
|
|
"prompt-engineering": "ms-ai-advisor",
|
|
"rag-architecture": "ms-ai-engineering",
|
|
"responsible-ai": "ms-ai-governance",
|
|
"security-scoring": "ms-ai-security"
|
|
},
|
|
"course_products": {
|
|
"azure-openai": "azure-ai-services",
|
|
"azure-machine-learning": "mlops-genaiops",
|
|
"azure-cognitive-search": "rag-architecture",
|
|
"azure-cosmos-db": "data-engineering",
|
|
"fabric": "data-engineering",
|
|
"azure-databricks": "data-engineering",
|
|
"microsoft-copilot-studio": "platforms",
|
|
"power-automate": "platforms",
|
|
"power-apps": "platforms",
|
|
"power-platform": "platforms",
|
|
"ai-builder": "platforms",
|
|
"microsoft-365-copilot": "copilot-extensibility",
|
|
"microsoft-purview": "responsible-ai",
|
|
"entra": "ai-security-engineering",
|
|
"defender-for-cloud": "ai-security-engineering"
|
|
},
|
|
"relevance": {
|
|
"include": [
|
|
{ "pattern": "/azure/ai-foundry/", "category": "azure-ai-services" },
|
|
{ "pattern": "/azure/ai-services/", "category": "azure-ai-services" },
|
|
{ "pattern": "/azure/machine-learning/", "category": "mlops-genaiops" },
|
|
{ "pattern": "/azure/search/", "category": "rag-architecture" },
|
|
{ "pattern": "/azure/api-management/", "category": "api-management" },
|
|
{ "pattern": "/azure/azure-monitor/", "category": "monitoring-observability" },
|
|
{ "pattern": "/azure/well-architected/", "category": "architecture" },
|
|
{ "pattern": "/microsoft-copilot-studio/", "category": "copilot-extensibility" },
|
|
{ "pattern": "/copilot/microsoft-365/", "category": "copilot-extensibility" },
|
|
{ "pattern": "/microsoft-365-copilot/", "category": "copilot-extensibility" },
|
|
{ "pattern": "/security/(?:ai|benchmark|engineering)/", "category": "ai-security-engineering" },
|
|
{ "pattern": "/azure/defender-for-cloud/", "category": "ai-security-engineering" },
|
|
{ "pattern": "/purview/", "category": "responsible-ai" },
|
|
{ "pattern": "/semantic-kernel/", "category": "agent-orchestration" },
|
|
{ "pattern": "/agent-framework/", "category": "agent-orchestration" },
|
|
{ "pattern": "/fabric/(?:data-engineering|data-science|real-time-intelligence)/", "category": "data-engineering" },
|
|
{ "pattern": "/azure/cosmos-db/", "category": "data-engineering" },
|
|
{ "pattern": "/azure/databricks/", "category": "data-engineering" },
|
|
{ "pattern": "/entra/(?:identity|agent)/", "category": "ai-security-engineering" }
|
|
],
|
|
"exclude": [
|
|
"/training/",
|
|
"/credentials/",
|
|
"/legal/",
|
|
"/previous-versions/",
|
|
"/archive/",
|
|
"/samples/",
|
|
"/release-notes?/",
|
|
"/whats-new",
|
|
"/changelog",
|
|
"/migrate/"
|
|
]
|
|
},
|
|
"priority": {
|
|
"rules": [
|
|
{ "match": "cost|pricing|pris", "priority": "critical" },
|
|
{ "match": "responsible-ai|governance|ai-security-(?:engineering|scoring)", "priority": "high" },
|
|
{ "match": "platforms|copilot|azure-ai-services|agent-orchestration|rag|mlops|prompt-engineering|monitoring|performance", "priority": "medium" }
|
|
],
|
|
"default": "low",
|
|
"dateless": "unverified"
|
|
}
|
|
}
|