diff --git a/public/admin/audit-analytics.html b/public/admin/audit-analytics.html index 42ea251c..6cfd6a4b 100644 --- a/public/admin/audit-analytics.html +++ b/public/admin/audit-analytics.html @@ -171,7 +171,7 @@ -
+
@@ -195,6 +195,23 @@
+ +
+
+

Framework Participation

+ + + +
+
-
+
+ +
+
+ +
+
+

Framework Maturity Score

@@ -238,10 +255,30 @@
- + +
+
+ + + + ⚠️ Cost Avoidance Methodology & Limitations +
+
+

Data Source: Cost avoidance calculated from observed reduction in governance violations since framework deployment. Based on empirical comparison of pre-framework behavior (routine violations in CSP compliance, credential exposure, inappropriate terminology, fake data generation) versus post-framework enforcement.

+ +

Limitation: No formal baseline exists. The framework was deployed without conducting controlled A/B testing (LLM with framework vs. without framework on identical tasks). Cost avoidance represents observed correlation, not proven causation.

+ +

What This Means: While violation reduction has been observed and sustained over multiple months, we cannot prove with certainty what percentage would have been prevented without framework intervention. Figures should be interpreted as "estimated cost avoidance based on observed violation reduction" rather than "certain prevented costs."

+ +

Validation Opportunity: A controlled study comparing identical governance-relevant tasks with/without framework enforcement would provide stronger ROI validation evidence. This remains a future research priority.

+
+
+ +
🔬 Current Research Focus Areas:
+ • A/B Testing Protocol (framework-enabled vs. baseline LLM performance)
• Tiered Pattern Recognition (session, sequential, temporal anomalies)
• Feedback Loop Analysis (learning rates, recidivism tracking, rule effectiveness)
• Organizational Benchmarking (cross-org anonymized data sharing) diff --git a/public/js/admin/audit-analytics.js b/public/js/admin/audit-analytics.js index 2f255a9c..cf427305 100644 --- a/public/js/admin/audit-analytics.js +++ b/public/js/admin/audit-analytics.js @@ -249,6 +249,58 @@ async function renderBusinessIntelligence() { const progressBar = document.getElementById('maturity-progress'); progressBar.style.width = maturityScore + '%'; + // PHASE 3.4: Framework Participation Rate + const frameworkBackedDecisions = auditData.filter(d => + d.metadata && d.metadata.framework_backed_decision === true + ); + const participationRate = auditData.length > 0 + ? ((frameworkBackedDecisions.length / auditData.length) * 100).toFixed(1) + : '0.0'; + + document.getElementById('participation-rate').textContent = `${participationRate}%`; + + // Message based on participation rate + const rate = parseFloat(participationRate); + let participationMessage = ''; + if (rate >= 80) { + participationMessage = 'Excellent - Framework actively guiding most decisions'; + } else if (rate >= 60) { + participationMessage = 'Good - Framework participating in majority of decisions'; + } else if (rate >= 40) { + participationMessage = 'Moderate - Framework guidance available for some decisions'; + } else if (rate >= 20) { + participationMessage = 'Low - Framework participation needs improvement'; + } else { + participationMessage = 'Critical - Framework rarely providing guidance'; + } + document.getElementById('participation-message').textContent = participationMessage; + + // Breakdown by service + const participationByService = {}; + frameworkBackedDecisions.forEach(d => { + const service = d.service || 'Unknown'; + if (!participationByService[service]) { + participationByService[service] = 0; + } + participationByService[service]++; + }); + + const breakdownEl = document.getElementById('participation-breakdown'); + const sortedServices = Object.entries(participationByService) + .sort((a, b) => b[1] - a[1]) + .slice(0, 5); // Top 5 services + + if (sortedServices.length > 0) { + breakdownEl.innerHTML = sortedServices + .map(([service, count]) => { + const percentage = ((count / frameworkBackedDecisions.length) * 100).toFixed(0); + return `
${service}: ${count} (${percentage}%)
`; + }) + .join(''); + } else { + breakdownEl.innerHTML = '
No framework guidance data yet
'; + } + // Team Comparison (AI vs Human) const aiDecisions = auditData.filter(d => d.service === 'FileEditHook' || d.service === 'BoundaryEnforcer' ||