Read-only eval-verktoy scripts/kb-eval/eval.mjs (determ. K2/K3/K5/K6 + ref-tall) + operator-gated LLM-judge (judge-prompt.md -> data/judge-results.json) flettet til data/eval-baseline.json. 13 enhetstester (tests/kb-eval/), 42 kb-update-tester gronne. Baseline: K5 3/5 fail, K9 4/5 fail, K4 2/5 fail, ref-tall 2/5 fail; 2 konkrete bugs flagget (security 6x5-vekting-motstrid, governance broken ref-path). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
500 lines
22 KiB
JSON
500 lines
22 KiB
JSON
{
|
|
"rubric": "K1-K9",
|
|
"note": "Deterministic: K2,K3,K5,K6,refCountConsistency. LLM-judge (operator-gated): K1,K4,K7,K8,K9.",
|
|
"skills": [
|
|
{
|
|
"name": "ms-ai-advisor",
|
|
"skillMd": "skills/ms-ai-advisor/SKILL.md",
|
|
"refFilesActual": 62,
|
|
"refCountsPerFolder": {
|
|
"architecture": 16,
|
|
"copilot-extensibility": 22,
|
|
"development": 1,
|
|
"platforms": 5,
|
|
"prompt-engineering": 18
|
|
},
|
|
"deterministic": {
|
|
"K2_descriptionFormat": {
|
|
"quotedPhrases": 5,
|
|
"useWhenForm": true,
|
|
"imperativeStart": false,
|
|
"pass": true
|
|
},
|
|
"K3_bodyLength": {
|
|
"bodyLines": 240,
|
|
"pass": true
|
|
},
|
|
"K5_progressiveDisclosure": {
|
|
"namedFileLinks": 1,
|
|
"folderRefs": 5,
|
|
"totalRefFiles": 62,
|
|
"namedRatio": 0.0161,
|
|
"pass": false,
|
|
"sampleNamed": [
|
|
"references/architecture/diagram-prompt-templates.md"
|
|
]
|
|
},
|
|
"K6_routingTable": {
|
|
"namedStartFiles": 1,
|
|
"pass": true
|
|
},
|
|
"refCountConsistency": {
|
|
"consistent": true,
|
|
"mismatches": []
|
|
},
|
|
"K9_timeSensitiveHints": {
|
|
"timeSensitiveTokenHits": 7,
|
|
"sample": [
|
|
"Preview",
|
|
"GA",
|
|
"preview",
|
|
"v3.0"
|
|
]
|
|
}
|
|
},
|
|
"judgeInputs": {
|
|
"description": "Microsoft AI architecture guidance, choosing between Azure AI platforms, Copilot vs Foundry trade-offs. Cosmo Skyberg persona guides through structured problem understanding before technology selection. Specialist in Azure AI Foundry, M365 Copilot, Copilot Studio, Power Platform, Azure OpenAI, Microsoft Agent Framework. Triggers on: \"Microsoft AI architecture\", \"Copilot vs Foundry\", \"which Microsoft AI platform\", \"Cosmo\", \"/architect\".",
|
|
"bodyLines": 240,
|
|
"refFileSample": [
|
|
"skills/ms-ai-advisor/references/architecture/adr-template.md",
|
|
"skills/ms-ai-advisor/references/architecture/ai-utredning-template.md",
|
|
"skills/ms-ai-advisor/references/architecture/alternativanalyse-methodology.md",
|
|
"skills/ms-ai-advisor/references/architecture/capacity-feasibility-benchmarks.md",
|
|
"skills/ms-ai-advisor/references/architecture/cost-models.md",
|
|
"skills/ms-ai-advisor/references/architecture/decision-trees.md",
|
|
"skills/ms-ai-advisor/references/architecture/diagram-prompt-templates.md",
|
|
"skills/ms-ai-advisor/references/architecture/licensing-matrix.md"
|
|
]
|
|
},
|
|
"judge": {
|
|
"K1_triggerPrecision": {
|
|
"provisional": true,
|
|
"precision": 1,
|
|
"notes": "20/20 from description. BORDERLINE: cost/diagram/DPIA/AI-Act prompts are MS-AI-adjacent; broad 'Microsoft AI architecture' phrase risks over-triggering vs sibling commands. Operator must curate + stress-test sibling overlap."
|
|
},
|
|
"K4_noDuplication": {
|
|
"score": 5,
|
|
"pass": true,
|
|
"evidence": "Body = persona + 7-phase workflow + ref-index; no ref detail reproduced. Only internal MCP-table redundancy (SKILL-internal, not SKILL<->ref)."
|
|
},
|
|
"K7_imperativeStyle": {
|
|
"ratio": 1,
|
|
"pass": true,
|
|
"notes": "10/10 sampled instruction sentences imperative."
|
|
},
|
|
"K8_sourceCitation": {
|
|
"ratio": 0.8,
|
|
"pass": true,
|
|
"notes": "AT THRESHOLD: architecture/decision-trees.md lacks dated header (footer source only). Add dated header to harden margin."
|
|
},
|
|
"K9_noTimeSensitive": {
|
|
"pass": true,
|
|
"findings": [
|
|
"Only meta-instructions (preview/GA as dynamic-to-verify) + stable identifiers (M365 SKUs, MADR v3.0). No stale-able product claim in body."
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "ms-ai-engineering",
|
|
"skillMd": "skills/ms-ai-engineering/SKILL.md",
|
|
"refFilesActual": 153,
|
|
"refCountsPerFolder": {
|
|
"agent-orchestration": 24,
|
|
"api-management": 19,
|
|
"azure-ai-services": 20,
|
|
"data-engineering": 22,
|
|
"mlops-genaiops": 22,
|
|
"multi-modal": 18,
|
|
"rag-architecture": 28
|
|
},
|
|
"deterministic": {
|
|
"K2_descriptionFormat": {
|
|
"quotedPhrases": 6,
|
|
"useWhenForm": true,
|
|
"imperativeStart": false,
|
|
"pass": true
|
|
},
|
|
"K3_bodyLength": {
|
|
"bodyLines": 150,
|
|
"pass": true
|
|
},
|
|
"K5_progressiveDisclosure": {
|
|
"namedFileLinks": 0,
|
|
"folderRefs": 10,
|
|
"totalRefFiles": 153,
|
|
"namedRatio": 0,
|
|
"pass": false,
|
|
"sampleNamed": []
|
|
},
|
|
"K6_routingTable": {
|
|
"namedStartFiles": 0,
|
|
"pass": false
|
|
},
|
|
"refCountConsistency": {
|
|
"consistent": false,
|
|
"mismatches": [
|
|
{
|
|
"folder": "agent-orchestration",
|
|
"cited": 20,
|
|
"actual": 24
|
|
},
|
|
{
|
|
"folder": "agent-orchestration",
|
|
"citedMultiple": [
|
|
24,
|
|
20
|
|
],
|
|
"actual": 24
|
|
}
|
|
]
|
|
},
|
|
"K9_timeSensitiveHints": {
|
|
"timeSensitiveTokenHits": 3,
|
|
"sample": [
|
|
"GA",
|
|
"preview"
|
|
]
|
|
}
|
|
},
|
|
"judgeInputs": {
|
|
"description": "Deep technical guidance for building AI solutions in the Microsoft stack — RAG architecture, multi-agent orchestration, Azure AI Services, data engineering with Fabric, MLOps/GenAIOps, multimodal AI, API Management for AI. Triggers on: \"RAG architecture on Azure\", \"multi-agent orchestration pattern\", \"MLOps for generative AI\", \"Azure AI Search\", \"Semantic Kernel agent\", \"Fabric data pipeline\".",
|
|
"bodyLines": 150,
|
|
"refFileSample": [
|
|
"skills/ms-ai-engineering/references/agent-orchestration/agent-365-governance-and-deployment.md",
|
|
"skills/ms-ai-engineering/references/agent-orchestration/agent-autonomy-and-control-governance.md",
|
|
"skills/ms-ai-engineering/references/agent-orchestration/agent-compliance-and-audit-trails.md",
|
|
"skills/ms-ai-engineering/references/agent-orchestration/agent-cost-optimization-strategies.md",
|
|
"skills/ms-ai-engineering/references/agent-orchestration/agent-ecosystem-and-plugin-marketplace.md",
|
|
"skills/ms-ai-engineering/references/agent-orchestration/agent-evaluation-testing-frameworks.md",
|
|
"skills/ms-ai-engineering/references/agent-orchestration/agent-feedback-and-learning-loops.md",
|
|
"skills/ms-ai-engineering/references/agent-orchestration/agent-latency-optimization.md"
|
|
]
|
|
},
|
|
"judge": {
|
|
"K1_triggerPrecision": {
|
|
"provisional": true,
|
|
"precision": 0.95,
|
|
"notes": "19/20. Miss: 'Semantic Kernel agent governance' overlaps security/governance because description lists 'governance' under agent-orchestration. Operator must curate."
|
|
},
|
|
"K4_noDuplication": {
|
|
"score": 4,
|
|
"pass": true,
|
|
"evidence": "Mostly router. Two inline tables (RAG-vs-finetuning; MLOps test-types w/ Ragas/red-teaming) restate comparison content also in ref files — summary-level, not verbatim."
|
|
},
|
|
"K7_imperativeStyle": {
|
|
"ratio": 0.9,
|
|
"pass": true,
|
|
"notes": "9/10; section intros are descriptive prose by design."
|
|
},
|
|
"K8_sourceCitation": {
|
|
"ratio": 1,
|
|
"pass": true,
|
|
"notes": "5/5 dated headers; schema drift ('Dato:' vs 'Last updated'); no source-URL in headers."
|
|
},
|
|
"K9_noTimeSensitive": {
|
|
"pass": false,
|
|
"findings": [
|
|
"Line 119: 'Foundry Agent Service GA' — explicit GA-status claim in body",
|
|
"GPT-4o/Whisper/text-embedding-3/Florence — version-pinned product names in body",
|
|
"Line 48: 'Agent Framework (erstatter Semantic Kernel Agents)' — lifecycle/transition claim",
|
|
"A2A/CUA/Foundry Workflows — era-bound feature names"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "ms-ai-governance",
|
|
"skillMd": "skills/ms-ai-governance/SKILL.md",
|
|
"refFilesActual": 78,
|
|
"refCountsPerFolder": {
|
|
"monitoring-observability": 18,
|
|
"norwegian-public-sector-governance": 30,
|
|
"responsible-ai": 30
|
|
},
|
|
"deterministic": {
|
|
"K2_descriptionFormat": {
|
|
"quotedPhrases": 6,
|
|
"useWhenForm": true,
|
|
"imperativeStart": false,
|
|
"pass": true
|
|
},
|
|
"K3_bodyLength": {
|
|
"bodyLines": 299,
|
|
"pass": true
|
|
},
|
|
"K5_progressiveDisclosure": {
|
|
"namedFileLinks": 24,
|
|
"folderRefs": 5,
|
|
"totalRefFiles": 78,
|
|
"namedRatio": 0.3077,
|
|
"pass": true,
|
|
"sampleNamed": [
|
|
"references/norwegian-public-sector-governance/utredningsinstruksen-ai-methodology.md",
|
|
"references/norwegian-public-sector-governance/forvaltningsloven-ai-decisions.md",
|
|
"references/norwegian-public-sector-governance/samfunnsokonomisk-analyse-nnv.md",
|
|
"references/norwegian-public-sector-governance/gevinstrealisering-dfo-methodology.md",
|
|
"references/norwegian-public-sector-governance/anskaffelser-ai-procurement-framework.md"
|
|
]
|
|
},
|
|
"K6_routingTable": {
|
|
"namedStartFiles": 24,
|
|
"pass": true
|
|
},
|
|
"refCountConsistency": {
|
|
"consistent": false,
|
|
"mismatches": [
|
|
{
|
|
"folder": "norwegian-public-sector-governance",
|
|
"cited": 29,
|
|
"actual": 30
|
|
}
|
|
]
|
|
},
|
|
"K9_timeSensitiveHints": {
|
|
"timeSensitiveTokenHits": 1,
|
|
"sample": [
|
|
"2024"
|
|
]
|
|
}
|
|
},
|
|
"judgeInputs": {
|
|
"description": "Norwegian public sector AI compliance, utredningsinstruksen for AI, EU AI Act risk classification, DPIA for AI systems, Digdir architecture principles, responsible AI governance, monitoring and observability. Triggers on: \"Norwegian public sector AI compliance\", \"AI Act risk classification\", \"DPIA for AI system\", \"Digdir architecture principles\", \"ansvarlig AI i offentlig sektor\", \"Forvaltningsloven AI\".",
|
|
"bodyLines": 299,
|
|
"refFileSample": [
|
|
"skills/ms-ai-governance/references/monitoring-observability/alerting-strategies-escalation.md",
|
|
"skills/ms-ai-governance/references/monitoring-observability/anomaly-detection-ai-systems.md",
|
|
"skills/ms-ai-governance/references/monitoring-observability/application-insights-llm-monitoring.md",
|
|
"skills/ms-ai-governance/references/monitoring-observability/azure-monitor-setup-ai-workloads.md",
|
|
"skills/ms-ai-governance/references/monitoring-observability/compliance-monitoring-ai-governance.md",
|
|
"skills/ms-ai-governance/references/monitoring-observability/cost-monitoring-cost-attribution.md",
|
|
"skills/ms-ai-governance/references/monitoring-observability/custom-dashboards-ai-operations.md",
|
|
"skills/ms-ai-governance/references/monitoring-observability/data-residency-audit-monitoring.md"
|
|
]
|
|
},
|
|
"judge": {
|
|
"K1_triggerPrecision": {
|
|
"provisional": true,
|
|
"precision": 0.95,
|
|
"notes": "19/20. Miss: Schrems II / data-transfer — body section 2.3 covers it but description has NO Schrems/dataoverføring keyword. Add trigger phrase to description."
|
|
},
|
|
"K4_noDuplication": {
|
|
"score": 3,
|
|
"pass": false,
|
|
"evidence": "Moderate duplication: §6.1 DPIA risk-factor tree (incl. >=2-faktorer threshold) duplicates dpia-norwegian-methodology-ai.md; §6.2 + §2.1 AI Act taxonomy duplicates ai-act-classification-methodology.md; §1.2 Digdir 7-principle table restates per-principle files. Regulatory update must be applied twice."
|
|
},
|
|
"K7_imperativeStyle": {
|
|
"ratio": 1,
|
|
"pass": true,
|
|
"notes": "10/10 imperative."
|
|
},
|
|
"K8_sourceCitation": {
|
|
"ratio": 1,
|
|
"pass": true,
|
|
"notes": "5/5 dated headers + Status + inline source citations (Lovdata/NSM/europalov). BONUS DEFECT: SKILL.md line 191 references 'drift-detection-automated-retraining.md' which does NOT exist (actual: model-performance-drift-detection.md) — broken ref path."
|
|
},
|
|
"K9_noTimeSensitive": {
|
|
"pass": false,
|
|
"findings": [
|
|
"Line 121: 'Microsoft EU Data Boundary ... Azure OpenAI (Sweden Central, West Europe)' — volatile region/availability claim in body (most genuine finding)",
|
|
"Lines 81/121: 'Regulation 2024/1689' + 'Schrems II (C-311/18)' — legal identifiers (stable, borderline)",
|
|
"§2.1/§6.2 AI Act obligation status presented without Digital Omnibus caveat — may date"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "ms-ai-infrastructure",
|
|
"skillMd": "skills/ms-ai-infrastructure/SKILL.md",
|
|
"refFilesActual": 34,
|
|
"refCountsPerFolder": {
|
|
"bcdr": 16,
|
|
"hybrid-edge": 18
|
|
},
|
|
"deterministic": {
|
|
"K2_descriptionFormat": {
|
|
"quotedPhrases": 5,
|
|
"useWhenForm": true,
|
|
"imperativeStart": false,
|
|
"pass": true
|
|
},
|
|
"K3_bodyLength": {
|
|
"bodyLines": 290,
|
|
"pass": true
|
|
},
|
|
"K5_progressiveDisclosure": {
|
|
"namedFileLinks": 33,
|
|
"folderRefs": 5,
|
|
"totalRefFiles": 34,
|
|
"namedRatio": 0.9706,
|
|
"pass": true,
|
|
"sampleNamed": [
|
|
"references/bcdr/multi-region-azure-openai-deployment.md",
|
|
"references/bcdr/rto-rpo-planning-ai-services.md",
|
|
"references/bcdr/backup-recovery-strategies-ai-workloads.md",
|
|
"references/bcdr/failover-testing-ai-services.md",
|
|
"references/bcdr/chaos-engineering-ai-systems.md"
|
|
]
|
|
},
|
|
"K6_routingTable": {
|
|
"namedStartFiles": 33,
|
|
"pass": true
|
|
},
|
|
"refCountConsistency": {
|
|
"consistent": true,
|
|
"mismatches": []
|
|
},
|
|
"K9_timeSensitiveHints": {
|
|
"timeSensitiveTokenHits": 7,
|
|
"sample": [
|
|
"preview",
|
|
"GA",
|
|
"v2"
|
|
]
|
|
}
|
|
},
|
|
"judgeInputs": {
|
|
"description": "Disaster recovery for AI workloads, multi-region Azure AI deployment, hybrid or edge AI architecture, sovereign cloud for Norway, offline-first AI patterns, AI infrastructure resilience. Covers BCDR, Azure Arc for AI, ONNX Runtime edge deployment, disconnected scenarios, Norwegian data sovereignty. Triggers on: \"disaster recovery for AI workloads\", \"edge AI deployment\", \"sovereign cloud AI\", \"Azure Arc for AI\", \"BCDR for AI\".",
|
|
"bodyLines": 290,
|
|
"refFileSample": [
|
|
"skills/ms-ai-infrastructure/references/bcdr/ai-foundry-disaster-recovery-planning.md",
|
|
"skills/ms-ai-infrastructure/references/bcdr/backup-recovery-strategies-ai-workloads.md",
|
|
"skills/ms-ai-infrastructure/references/bcdr/capacity-planning-dr-configurations.md",
|
|
"skills/ms-ai-infrastructure/references/bcdr/chaos-engineering-ai-systems.md",
|
|
"skills/ms-ai-infrastructure/references/bcdr/compliance-requirements-bcdr.md",
|
|
"skills/ms-ai-infrastructure/references/bcdr/cost-analysis-dr-configurations.md",
|
|
"skills/ms-ai-infrastructure/references/bcdr/data-replication-patterns-ai.md",
|
|
"skills/ms-ai-infrastructure/references/bcdr/failover-testing-ai-services.md"
|
|
]
|
|
},
|
|
"judge": {
|
|
"K1_triggerPrecision": {
|
|
"provisional": true,
|
|
"precision": 1,
|
|
"notes": "20/20. Tightly scoped + named trigger phrases, low false-positive risk. Borderline (hybrid RAG, multi-region cost) need real-corpus validation. Operator must curate."
|
|
},
|
|
"K4_noDuplication": {
|
|
"score": 4,
|
|
"pass": true,
|
|
"evidence": "Largely summary/routing w/ '> Ref:' deferral. Minor: RTO/RPO table + SLA table put specific values in body that also live in ref files."
|
|
},
|
|
"K7_imperativeStyle": {
|
|
"ratio": 1,
|
|
"pass": true,
|
|
"notes": "10/10 imperative (concentrated in per-section directives)."
|
|
},
|
|
"K8_sourceCitation": {
|
|
"ratio": 1,
|
|
"pass": true,
|
|
"notes": "5/5 'Last updated: 2026-02' + Status. NO source-URL in headers; identical batch date reads as generation timestamp, not per-file verification."
|
|
},
|
|
"K9_noTimeSensitive": {
|
|
"pass": false,
|
|
"findings": [
|
|
"Lines 93-98: SLA table w/ hardcoded percentages (99.9/99.999/99.95%) + 'Standard v2'",
|
|
"Lines 149/158/184/186/249: Phi-3/Phi-4 model versions + param counts (3.8B/14B) in body",
|
|
"Line 141: 'Azure Local (tidl. Azure Stack HCI)' rename note",
|
|
"Line 87: hardcoded 'peak + 30% buffer'"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "ms-ai-security",
|
|
"skillMd": "skills/ms-ai-security/SKILL.md",
|
|
"refFilesActual": 62,
|
|
"refCountsPerFolder": {
|
|
"ai-security-engineering": 22,
|
|
"cost-optimization": 22,
|
|
"performance-scalability": 18
|
|
},
|
|
"deterministic": {
|
|
"K2_descriptionFormat": {
|
|
"quotedPhrases": 6,
|
|
"useWhenForm": true,
|
|
"imperativeStart": false,
|
|
"pass": true
|
|
},
|
|
"K3_bodyLength": {
|
|
"bodyLines": 212,
|
|
"pass": true
|
|
},
|
|
"K5_progressiveDisclosure": {
|
|
"namedFileLinks": 10,
|
|
"folderRefs": 6,
|
|
"totalRefFiles": 62,
|
|
"namedRatio": 0.1613,
|
|
"pass": false,
|
|
"sampleNamed": [
|
|
"references/ai-security-engineering/security-scoring-rubrics-6x5.md",
|
|
"references/ai-security-engineering/ai-security-scoring-framework.md",
|
|
"references/ai-security-engineering/secure-model-deployment-hardening.md",
|
|
"references/ai-security-engineering/zero-trust-ai-services.md",
|
|
"references/cost-optimization/deterministic-cost-calculation-model.md"
|
|
]
|
|
},
|
|
"K6_routingTable": {
|
|
"namedStartFiles": 10,
|
|
"pass": true
|
|
},
|
|
"refCountConsistency": {
|
|
"consistent": true,
|
|
"mismatches": []
|
|
},
|
|
"K9_timeSensitiveHints": {
|
|
"timeSensitiveTokenHits": 3,
|
|
"sample": [
|
|
"2025",
|
|
"GA",
|
|
"Preview"
|
|
]
|
|
}
|
|
},
|
|
"judgeInputs": {
|
|
"description": "Security assessment, cost estimation, OWASP LLM Top 10 mitigations, performance optimization for AI on Microsoft stack. Deterministic 6x5 security scoring, P10/P50/P90 cost confidence intervals, FinOps practices. Triggers on: \"security assessment for AI\", \"AI threat modeling\", \"cost estimation for Azure AI\", \"FinOps for AI workloads\", \"OWASP LLM\", \"kostnadsestimat for AI-løsning\".",
|
|
"bodyLines": 212,
|
|
"refFileSample": [
|
|
"skills/ms-ai-security/references/ai-security-engineering/adversarial-input-robustness-testing.md",
|
|
"skills/ms-ai-security/references/ai-security-engineering/ai-incident-response-procedures.md",
|
|
"skills/ms-ai-security/references/ai-security-engineering/ai-prompt-shield-network.md",
|
|
"skills/ms-ai-security/references/ai-security-engineering/ai-red-team-operations-practical.md",
|
|
"skills/ms-ai-security/references/ai-security-engineering/ai-security-scoring-framework.md",
|
|
"skills/ms-ai-security/references/ai-security-engineering/ai-threat-modeling-stride.md",
|
|
"skills/ms-ai-security/references/ai-security-engineering/content-safety-filter-calibration.md",
|
|
"skills/ms-ai-security/references/ai-security-engineering/data-leakage-prevention-ai.md"
|
|
]
|
|
},
|
|
"judge": {
|
|
"K1_triggerPrecision": {
|
|
"provisional": true,
|
|
"precision": 0.95,
|
|
"notes": "19/20. Clean sibling separation (AI Act/DPIA/platform/RAG/BCDR not triggered). One ambiguity: model feature-comparison could be pulled by broad 'performance optimization for AI'. Operator must curate."
|
|
},
|
|
"K4_noDuplication": {
|
|
"score": 3,
|
|
"pass": false,
|
|
"evidence": "DUPLICATION-WITH-CONTRADICTION: body weighting table (L52-59 Standard: Identity 20/Network 15/Data 20/Content 20/Compliance 15/Monitoring 10) CONTRADICTS canonical rubric security-scoring-rubrics-6x5.md (Compliance 25/Data 20/Identity 20/Content 15/Network 10/Monitoring 10). Body scoring rule (weighted sum) also diverges from rubric (Ja-checkpoint count). Real correctness bug."
|
|
},
|
|
"K7_imperativeStyle": {
|
|
"ratio": 1,
|
|
"pass": true,
|
|
"notes": "10/10 imperative."
|
|
},
|
|
"K8_sourceCitation": {
|
|
"ratio": 1,
|
|
"pass": true,
|
|
"notes": "5/5 dated headers; mostly no header source-URL (URLs in body cost-register rows)."
|
|
},
|
|
"K9_noTimeSensitive": {
|
|
"pass": false,
|
|
"findings": [
|
|
"Line 73: 'OWASP LLM Top 10 (2025)' — dated standard version",
|
|
"Line 92: 'Defender ... GA for AI applications, Preview for AI agents' + 'ikke i Azure Government' — GA/preview + region status in body",
|
|
"Line 138: 'GPT-4o mini vs GPT-4o' — model versions",
|
|
"Lines 149-153: hardcoded perf/price figures (20-50ms, 5-10x, 50%/80%, Batch 50% @ 24h SLA)"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|