{
  "format": "palo-kpi-kri-registry",
  "schemaVersion": "1.0.0",
  "status": "educational-non-production",
  "updatedAt": "2026-08-23",
  "disclaimer": "Indicator formulas and thresholds are illustrative defaults. Owners must establish baselines, sampling, decision rights and context-specific thresholds before operational use.",
  "indicators": [
    {
      "indicatorId": "kpi-provenance-coverage",
      "type": "KPI",
      "name": "Material data provenance coverage",
      "purpose": "Track whether material data inputs have reviewed provenance records.",
      "formula": "reviewed material data sources / identified material data sources * 100",
      "cadence": "monthly and before material change",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 95%", "red": "below 85%" },
      "controlIds": ["ctrl-data-provenance", "ctrl-decision-trace"],
      "gateIds": ["assess", "prove"],
      "sourceIds": ["src-nist-ai-rmf"],
      "caveat": "Coverage measures documentation presence, not correctness, permission, or fitness for use."
    },
    {
      "indicatorId": "kpi-review-completion",
      "type": "KPI",
      "name": "Required review completion",
      "purpose": "Track whether decisions requiring human review received a recorded review before execution.",
      "formula": "eligible decisions with timely recorded review / eligible decisions * 100",
      "cadence": "weekly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 98%", "red": "below 95%" },
      "controlIds": ["ctrl-human-review", "ctrl-change-gate", "ctrl-decision-trace"],
      "gateIds": ["control", "measure", "prove"],
      "sourceIds": ["src-oecd-ai-principles", "src-nist-ai-rmf"],
      "caveat": "Completion alone does not show that review was informed, independent, or able to alter the outcome."
    },
    {
      "indicatorId": "kpi-vendor-evidence-coverage",
      "type": "KPI",
      "name": "Supplier evidence coverage",
      "purpose": "Track completion of required supplier evidence items for in-scope services.",
      "formula": "accepted required supplier evidence items / required supplier evidence items * 100",
      "cadence": "quarterly and at renewal",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 90%", "red": "below 75%" },
      "controlIds": ["ctrl-third-party-due-diligence"],
      "gateIds": ["assess", "control"],
      "sourceIds": ["src-iso-42001"],
      "caveat": "Accepted evidence must still be tested for relevance, recency, scope and independent support."
    },
    {
      "indicatorId": "kpi-incident-triage-time",
      "type": "KPI",
      "name": "Median incident triage time",
      "purpose": "Track elapsed time from detection to accountable initial classification and containment assignment.",
      "formula": "median minutes from detectedAt to triagedAt for in-scope incidents",
      "cadence": "monthly",
      "direction": "lower-is-better",
      "thresholds": { "amber": "over 240 minutes", "red": "over 480 minutes" },
      "controlIds": ["ctrl-incident-response"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-nist-ai-rmf"],
      "caveat": "Fast triage is not equivalent to correct severity, containment quality, or regulatory reporting."
    },
    {
      "indicatorId": "kri-scope-change-rate",
      "type": "KRI",
      "name": "Ungated material scope changes",
      "purpose": "Detect purpose, population, authority or workflow changes that bypassed the change gate.",
      "formula": "ungated material changes / identified material changes * 100",
      "cadence": "monthly",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "above 5%" },
      "controlIds": ["ctrl-purpose-boundary", "ctrl-change-gate"],
      "gateIds": ["frame", "classify", "prove"],
      "sourceIds": ["src-nist-ai-rmf"],
      "caveat": "A useful denominator depends on reliable change detection and an agreed definition of material change."
    },
    {
      "indicatorId": "kri-sensitive-data-events",
      "type": "KRI",
      "name": "Sensitive-data control events",
      "purpose": "Surface unauthorized access, disclosure, retention or use involving sensitive data.",
      "formula": "count of confirmed in-scope sensitive-data control events",
      "cadence": "continuous with monthly review",
      "direction": "lower-is-better",
      "thresholds": { "amber": "1 event", "red": "2 or more events or any severe event" },
      "controlIds": ["ctrl-data-provenance", "ctrl-incident-response"],
      "gateIds": ["control", "measure", "prove"],
      "sourceIds": ["src-eu-ai-act", "src-nist-ai-rmf"],
      "caveat": "Counts depend on detection quality and do not by themselves determine legal incident materiality."
    },
    {
      "indicatorId": "kri-override-failure-rate",
      "type": "KRI",
      "name": "Human override failure rate",
      "purpose": "Detect cases where a required reviewer could not pause, alter or reverse a system action.",
      "formula": "failed override attempts / recorded override attempts * 100",
      "cadence": "weekly",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "above 2% or any severe consequence" },
      "controlIds": ["ctrl-human-review"],
      "gateIds": ["control", "measure"],
      "sourceIds": ["src-oecd-ai-principles", "src-eu-ai-act"],
      "caveat": "Low rates can hide low usage, poor logging or reviewers avoiding an ineffective mechanism."
    },
    {
      "indicatorId": "kri-critical-test-failure-rate",
      "type": "KRI",
      "name": "Critical adversarial test failure rate",
      "purpose": "Track unresolved critical failures in approved misuse and failure scenarios.",
      "formula": "unresolved critical failed tests / executed critical tests * 100",
      "cadence": "per release and monthly for adaptive systems",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "any failure without an approved containment decision" },
      "controlIds": ["ctrl-adversarial-testing"],
      "gateIds": ["assess", "measure", "prove"],
      "sourceIds": ["src-nist-genai-profile", "src-owasp-llm-top10"],
      "caveat": "The metric is only as useful as scenario coverage, test independence and severity calibration."
    },
    {
      "indicatorId": "kri-tool-call-error-rate",
      "type": "KRI",
      "name": "Tool call error rate",
      "purpose": "Track the rate of malformed, hallucinated, or unauthorized tool calls made by autonomous agents.",
      "formula": "unauthorized or failed tool calls / total tool calls * 100",
      "cadence": "weekly and per release",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 1%", "red": "above 5% or any unauthorized write attempt" },
      "controlIds": ["ctrl-human-review"],
      "gateIds": ["control", "measure"],
      "sourceIds": ["src-nist-ai-rmf"],
      "caveat": "High error rates indicate semantic drift, poor schema alignment, or attempt to bypass controls."
    },
    {
      "indicatorId": "kri-multi-agent-conflict-rate",
      "type": "KRI",
      "name": "Multi-agent conflict rate",
      "purpose": "Track deadlocked, conflicting, or terminated multi-agent workflows.",
      "formula": "deadlocked or failed workflow runs / total multi-agent runs * 100",
      "cadence": "weekly",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 2%", "red": "above 10%" },
      "controlIds": ["ctrl-human-review"],
      "gateIds": ["control", "measure"],
      "sourceIds": ["src-nist-ai-rmf"],
      "caveat": "Signals goal conflicts, prompt mismatches, or infinite message loop issues."
    },
    {
      "indicatorId": "kpi-subgroup-evaluation-coverage",
      "type": "KPI",
      "name": "Applicable subgroup evaluation coverage",
      "purpose": "Track whether approved demographic and intersectional groups are represented in release and monitoring evaluations.",
      "formula": "applicable approved subgroups with accepted evaluation evidence / applicable approved subgroups * 100",
      "cadence": "per release, after material change and quarterly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 100%", "red": "below 95% or any omitted high-impact group" },
      "controlIds": ["ctrl-fairness-quality-of-service", "ctrl-fair-allocation"],
      "gateIds": ["assess", "measure", "prove"],
      "sourceIds": ["src-nist-ai-rmf", "src-iso-42005"],
      "caveat": "Coverage does not show that group definitions, sample sizes, metrics or thresholds are appropriate."
    },
    {
      "indicatorId": "kri-residual-disparity-rate",
      "type": "KRI",
      "name": "Unaccepted residual disparity rate",
      "purpose": "Surface subgroup metric comparisons that exceed an approved maximum difference without an accountable residual-risk decision.",
      "formula": "subgroup comparisons above approved difference threshold without accepted decision / applicable subgroup comparisons * 100",
      "cadence": "per release and monthly for adaptive systems",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "any unresolved material disparity" },
      "controlIds": ["ctrl-fairness-quality-of-service", "ctrl-fair-allocation"],
      "gateIds": ["assess", "measure", "prove"],
      "sourceIds": ["src-nist-ai-rmf", "src-eu-ai-act"],
      "caveat": "A numerical threshold cannot by itself determine whether a difference is lawful, fair or acceptable."
    },
    {
      "indicatorId": "kri-harmful-representation-rate",
      "type": "KRI",
      "name": "Material harmful-representation rate",
      "purpose": "Track unresolved stereotyping, demeaning, erasing or culturally harmful outputs in approved test scenarios.",
      "formula": "unresolved material harmful outputs / executed representation scenarios * 100",
      "cadence": "per release and monthly",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "any severe output or repeated group-specific pattern" },
      "controlIds": ["ctrl-harmful-representation"],
      "gateIds": ["assess", "measure", "prove"],
      "sourceIds": ["src-nist-genai-profile", "src-iso-42005"],
      "caveat": "Results depend on culturally competent scenario design, reviewers and supported languages."
    },
    {
      "indicatorId": "kpi-system-card-coverage",
      "type": "KPI",
      "name": "Current system-card coverage",
      "purpose": "Track whether in-scope systems have an approved card reflecting the deployed version, use, limitations, data, performance and controls.",
      "formula": "in-scope deployed systems with current approved system cards / in-scope deployed systems * 100",
      "cadence": "per release and quarterly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 100%", "red": "any high-impact system without a current card" },
      "controlIds": ["ctrl-system-card-explanations"],
      "gateIds": ["frame", "assess", "prove"],
      "sourceIds": ["src-nist-ai-rmf", "src-eu-ai-act"],
      "caveat": "A current card is documentation evidence, not proof that its claims are accurate or understood."
    },
    {
      "indicatorId": "kpi-explanation-comprehension",
      "type": "KPI",
      "name": "Stakeholder explanation comprehension",
      "purpose": "Measure whether representative stakeholders can correctly understand limitations, significance, human authority and available actions.",
      "formula": "participants meeting the approved comprehension rubric / tested representative participants * 100",
      "cadence": "before release, after material explanation change and annually",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 85%", "red": "below 70% or any critical misunderstanding" },
      "controlIds": ["ctrl-system-card-explanations"],
      "gateIds": ["assess", "control", "prove"],
      "sourceIds": ["src-iso-42005", "src-wcag-22"],
      "caveat": "The organization must justify participant selection, language, accessibility and the comprehension rubric."
    },
    {
      "indicatorId": "kpi-notice-delivery-coverage",
      "type": "KPI",
      "name": "Affected-person notice delivery coverage",
      "purpose": "Track whether people receive an accessible notice before or at the point of material AI interaction or effect.",
      "formula": "eligible interactions or decisions with verified notice delivery / eligible interactions or decisions * 100",
      "cadence": "continuous with monthly review",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 99%", "red": "below 95% or any systematic channel failure" },
      "controlIds": ["ctrl-affected-person-notice"],
      "gateIds": ["control", "measure"],
      "sourceIds": ["src-eu-ai-act", "src-eu-article50-guidelines", "src-wcag-22"],
      "caveat": "Delivery does not establish comprehension, legal adequacy or that all eligible events were detected."
    },
    {
      "indicatorId": "kpi-appeal-resolution-sla",
      "type": "KPI",
      "name": "Appeals resolved within approved service level",
      "purpose": "Track timely, reasoned and conflict-independent review of affected-person appeals.",
      "formula": "eligible appeals resolved within approved deadline / eligible resolved appeals * 100",
      "cadence": "monthly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 95%", "red": "below 85% or any urgent case overdue" },
      "controlIds": ["ctrl-appeal-remedy"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-eu-ai-act", "src-iso-42005"],
      "caveat": "Speed does not establish reviewer independence, procedural fairness or remedy effectiveness."
    },
    {
      "indicatorId": "kri-overdue-remedy-rate",
      "type": "KRI",
      "name": "Overdue remedy rate",
      "purpose": "Surface accepted corrections, restoration or other remedies that remain incomplete beyond their accountable deadline.",
      "formula": "open remedies past due / open and completed remedies in period * 100",
      "cadence": "weekly",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "above 5% or any severe-harm remedy overdue" },
      "controlIds": ["ctrl-appeal-remedy"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-iso-42005"],
      "caveat": "A closed remedy still requires evidence that the affected outcome was actually corrected."
    },
    {
      "indicatorId": "kpi-machine-readable-marking-coverage",
      "type": "KPI",
      "name": "Machine-readable synthetic-content marking coverage",
      "purpose": "Track successful application and independent detection of configured marks on in-scope generated or manipulated content.",
      "formula": "in-scope content samples with independently detected valid marks / tested in-scope content samples * 100",
      "cadence": "per release and daily production sample",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 99%", "red": "below 95% or any systematically unmarked modality" },
      "controlIds": ["ctrl-article50-transparency"],
      "gateIds": ["control", "measure", "prove"],
      "sourceIds": ["src-eu-ai-act", "src-eu-article50-guidelines"],
      "caveat": "Mark detection in a test set does not prove robustness after downstream transformation or legal sufficiency."
    },
    {
      "indicatorId": "kri-provenance-verification-failure-rate",
      "type": "KRI",
      "name": "Content provenance verification failure rate",
      "purpose": "Detect missing, invalid or broken content-provenance assertions in in-scope outputs.",
      "formula": "content samples with missing or invalid expected provenance / tested content samples * 100",
      "cadence": "daily with release review",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 1%", "red": "above 5% or any unexplained signing-key failure" },
      "controlIds": ["ctrl-article50-transparency"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-eu-article50-guidelines"],
      "caveat": "Provenance assertions indicate origin and processing claims; they do not establish that content is truthful."
    },
    {
      "indicatorId": "kpi-data-lifecycle-coverage",
      "type": "KPI",
      "name": "Material data lifecycle coverage",
      "purpose": "Track complete records for origin, transformations, permissions, quality, purpose, retention and disposition of material data assets.",
      "formula": "material data assets with accepted lifecycle records / identified material data assets * 100",
      "cadence": "monthly and before material change",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 95%", "red": "below 85% or any unrecorded sensitive dataset" },
      "controlIds": ["ctrl-data-governance-lifecycle", "ctrl-privacy-lifecycle"],
      "gateIds": ["frame", "assess", "control", "prove"],
      "sourceIds": ["src-eu-gdpr", "src-eu-ai-act", "src-nist-ai-rmf"],
      "caveat": "Record completeness does not prove that permissions, lawful basis, quality or retention decisions are correct."
    },
    {
      "indicatorId": "kpi-annotation-quality-coverage",
      "type": "KPI",
      "name": "Annotation quality assurance coverage",
      "purpose": "Track whether material annotated datasets have current protocols, competence evidence, sampling and agreement results.",
      "formula": "material annotated datasets with accepted QA evidence / material annotated datasets * 100",
      "cadence": "per dataset release and quarterly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 100%", "red": "any production dataset without an accepted QA sample" },
      "controlIds": ["ctrl-annotation-quality"],
      "gateIds": ["assess", "measure", "prove"],
      "sourceIds": ["src-nist-ai-rmf", "src-iso-42005"],
      "caveat": "Agreement can be high while instructions or ground truth remain biased or conceptually invalid."
    },
    {
      "indicatorId": "kpi-deletion-verification-coverage",
      "type": "KPI",
      "name": "Due data deletion verification coverage",
      "purpose": "Track verified deletion or approved legal hold across primary data, replicas, embeddings, caches and derived artifacts.",
      "formula": "due deletion items with verified disposition or approved hold / due deletion items * 100",
      "cadence": "weekly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 99%", "red": "below 95% or any sensitive-data deadline missed" },
      "controlIds": ["ctrl-data-governance-lifecycle", "ctrl-privacy-lifecycle"],
      "gateIds": ["control", "measure", "prove"],
      "sourceIds": ["src-eu-gdpr"],
      "caveat": "Verification scope must explicitly cover backups, immutable records and technically non-deletable derived artifacts."
    },
    {
      "indicatorId": "kpi-gpai-obligation-evidence-coverage",
      "type": "KPI",
      "name": "Applicable GPAI obligation evidence coverage",
      "purpose": "Track accepted evidence for each provider, deployer or integrator obligation activated by the role assessment.",
      "formula": "applicable GPAI obligations with accepted evidence / applicable GPAI obligations * 100",
      "cadence": "monthly and before release or material modification",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 100%", "red": "any overdue mandatory evidence item" },
      "controlIds": ["ctrl-gpai-provider", "ctrl-gpai-deployer"],
      "gateIds": ["classify", "control", "measure", "prove"],
      "sourceIds": ["src-eu-ai-act", "src-eu-gpai-code"],
      "caveat": "The denominator depends on a legally reviewed role and applicability assessment."
    },
    {
      "indicatorId": "kri-systemic-risk-finding-rate",
      "type": "KRI",
      "name": "Unresolved material systemic-risk finding rate",
      "purpose": "Track material model-capability, misuse, cyber, autonomy, societal or cascading-risk findings without accepted mitigation.",
      "formula": "unresolved material systemic-risk findings / executed systemic-risk scenarios * 100",
      "cadence": "per model release and monthly",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "any critical finding or untested critical scenario" },
      "controlIds": ["ctrl-systemic-risk"],
      "gateIds": ["assess", "control", "measure", "prove"],
      "sourceIds": ["src-eu-gpai-code", "src-nist-genai-profile"],
      "caveat": "Scenario selection and model-access constraints can materially understate systemic risk."
    },
    {
      "indicatorId": "kpi-regulatory-reporting-clock-compliance",
      "type": "KPI",
      "name": "Applicable regulatory reporting clock compliance",
      "purpose": "Track on-time initial and follow-up notifications for incidents determined reportable in each jurisdiction.",
      "formula": "required notifications submitted within applicable clock / required notifications * 100",
      "cadence": "continuous with monthly review",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 100%", "red": "any missed mandatory reporting deadline" },
      "controlIds": ["ctrl-regulatory-incident-reporting"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-eu-ai-act"],
      "caveat": "Timeliness depends on correct detection, jurisdiction mapping, reportability analysis and clock-start evidence."
    },
    {
      "indicatorId": "kpi-decommissioning-evidence-coverage",
      "type": "KPI",
      "name": "Decommissioning evidence coverage",
      "purpose": "Track completion of customer transition, capability revocation, data disposition, residual monitoring and closure evidence.",
      "formula": "accepted due decommissioning evidence items / due decommissioning evidence items * 100",
      "cadence": "weekly during retirement and at closure",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 100%", "red": "any unresolved safety, access or sensitive-data item at closure" },
      "controlIds": ["ctrl-decommissioning"],
      "gateIds": ["control", "measure", "prove"],
      "sourceIds": ["src-iso-42001", "src-nist-ai-rmf"],
      "caveat": "An evidence item can be present while downstream copies, user dependencies or residual harms remain."
    },
    {
      "indicatorId": "kpi-accessibility-test-pass-rate",
      "type": "KPI",
      "name": "Applicable accessibility test pass rate",
      "purpose": "Measure supported interface, notice, explanation, generated-output and remedy scenarios that meet approved accessibility criteria.",
      "formula": "passed applicable accessibility scenarios / executed applicable accessibility scenarios * 100",
      "cadence": "per release and quarterly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 98%", "red": "below 95% or any critical journey blocked" },
      "controlIds": ["ctrl-ai-output-accessibility"],
      "gateIds": ["assess", "control", "measure", "prove"],
      "sourceIds": ["src-wcag-22"],
      "caveat": "Automated conformance checks must be supplemented by manual assistive-technology and representative-user evaluation."
    },
    {
      "indicatorId": "kri-accessibility-blocker-rate",
      "type": "KRI",
      "name": "Unresolved accessibility blocker rate",
      "purpose": "Surface critical user journeys that disabled users cannot complete independently or through an equivalent route.",
      "formula": "unresolved blocked critical journeys / tested critical journeys * 100",
      "cadence": "per release and weekly while blockers are open",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "any high-impact notice, review or remedy journey blocked" },
      "controlIds": ["ctrl-ai-output-accessibility"],
      "gateIds": ["control", "measure", "prove"],
      "sourceIds": ["src-wcag-22", "src-iso-42005"],
      "caveat": "The tested journey inventory must include supported modalities, languages and assistive technologies."
    },
    {
      "indicatorId": "kpi-energy-measurement-coverage",
      "type": "KPI",
      "name": "Material AI energy measurement coverage",
      "purpose": "Track energy measurements or documented estimation methods for material training, evaluation and inference workloads.",
      "formula": "material AI workloads with accepted energy measurement or estimate / material AI workloads * 100",
      "cadence": "monthly and per release",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 90%", "red": "below 75% or no baseline for a material workload" },
      "controlIds": ["ctrl-environmental-performance"],
      "gateIds": ["assess", "measure", "prove"],
      "sourceIds": ["src-iso-42001", "src-iso-42005"],
      "caveat": "Estimates must state boundaries, allocation assumptions, location and temporal electricity factors."
    },
    {
      "indicatorId": "kri-environmental-budget-variance",
      "type": "KRI",
      "name": "Environmental budget variance",
      "purpose": "Detect material energy, emissions, water or hardware impacts above approved lifecycle budgets.",
      "formula": "actual or estimated impact minus approved budget, divided by approved budget * 100",
      "cadence": "monthly and per release",
      "direction": "within-range",
      "thresholds": { "amber": "more than 10% above budget", "red": "more than 25% above budget or any unapproved material regression" },
      "controlIds": ["ctrl-environmental-performance"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-iso-42001", "src-iso-42005"],
      "caveat": "Budgets and calculations require organization-specific boundaries and should not hide absolute impacts behind efficiency ratios."
    },
    {
      "indicatorId": "kpi-ai-literacy-competence-rate",
      "type": "KPI",
      "name": "Role-based AI competence demonstration rate",
      "purpose": "Measure whether people in AI roles demonstrate the required knowledge and practical control behavior for their responsibilities.",
      "formula": "in-scope people passing current role-based competence assessment / in-scope people * 100",
      "cadence": "quarterly and after material role or system change",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 95%", "red": "below 85% or any unqualified high-authority role" },
      "controlIds": ["ctrl-ai-literacy-effectiveness"],
      "gateIds": ["frame", "control", "measure", "prove"],
      "sourceIds": ["src-eu-ai-act", "src-iso-42001"],
      "caveat": "Attendance or quiz completion alone is insufficient; assessment must test role-relevant judgment and control use."
    },
    {
      "indicatorId": "kri-trained-control-error-rate",
      "type": "KRI",
      "name": "Post-training control error rate",
      "purpose": "Detect repeated governance or operational errors by trained roles that indicate ineffective learning or unclear procedures.",
      "formula": "confirmed role-relevant control errors by currently trained people / reviewed role-relevant actions * 100",
      "cadence": "monthly",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 2%", "red": "above 5% or any severe preventable error" },
      "controlIds": ["ctrl-ai-literacy-effectiveness"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-eu-ai-act", "src-iso-42001"],
      "caveat": "Error attribution must account for system, procedure, workload and authority-design failures rather than blaming individuals by default."
    },
    {
      "indicatorId": "kpi-aims-objective-coverage",
      "type": "KPI",
      "name": "AIMS objective measurement coverage",
      "purpose": "Track measurable, owned and reviewed objectives for material AI management risks and opportunities within the declared AIMS scope.",
      "formula": "applicable AIMS objectives with owner, measure, target and review evidence / applicable AIMS objectives * 100",
      "cadence": "quarterly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 100%", "red": "any material risk without an owned measurable objective" },
      "controlIds": ["ctrl-aims-leadership-objectives", "ctrl-aims-management-review-capa"],
      "gateIds": ["frame", "classify", "measure", "prove"],
      "sourceIds": ["src-iso-42001"],
      "caveat": "Coverage does not establish ISO/IEC 42001 conformity or the adequacy of selected objectives."
    },
    {
      "indicatorId": "kpi-aims-audit-completion",
      "type": "KPI",
      "name": "Risk-based AIMS audit completion",
      "purpose": "Track completion and accountable reporting of planned internal audits within the approved programme.",
      "formula": "completed planned audits with accepted report / audits due in period * 100",
      "cadence": "quarterly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 95%", "red": "below 85% or any critical scope repeatedly unaudited" },
      "controlIds": ["ctrl-aims-internal-audit"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-iso-42001"],
      "caveat": "Completion does not establish auditor competence, independence, audit depth or certification."
    },
    {
      "indicatorId": "kpi-corrective-action-closure",
      "type": "KPI",
      "name": "Corrective action effective closure",
      "purpose": "Track timely closure of nonconformities only after root-cause and effectiveness evidence is accepted.",
      "formula": "corrective actions closed on time with accepted effectiveness check / corrective actions due * 100",
      "cadence": "monthly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 95%", "red": "below 85% or any critical nonconformity overdue" },
      "controlIds": ["ctrl-aims-internal-audit", "ctrl-aims-management-review-capa"],
      "gateIds": ["measure", "prove"],
      "sourceIds": ["src-iso-42001"],
      "caveat": "Administrative closure without effectiveness verification must not count as completed."
    },
    {
      "indicatorId": "kpi-production-admission-coverage",
      "type": "KPI",
      "name": "PALO-AI production admission evidence coverage",
      "purpose": "Track accepted identity, tenancy, persistence, key-custody, connector, recovery and bypass-resistance evidence before production admission.",
      "formula": "accepted mandatory production admission checks / applicable mandatory production admission checks * 100",
      "cadence": "per release and quarterly",
      "direction": "higher-is-better",
      "thresholds": { "amber": "below 100%", "red": "any mandatory check absent, failed or expired" },
      "controlIds": ["ctrl-runtime-production-boundary"],
      "gateIds": ["classify", "control", "measure", "prove"],
      "sourceIds": ["src-iso-42001", "src-nist-ai-rmf"],
      "caveat": "Passing repository checks is not production admission; operational and independent evidence must match the deployed environment."
    },
    {
      "indicatorId": "kri-execution-bypass-rate",
      "type": "KRI",
      "name": "Protected action bypass rate",
      "purpose": "Detect consequential actions reaching external systems without a current claim, decision, capability, receipt and outcome-verification chain.",
      "formula": "protected external effects without a valid complete governance chain / protected external effects * 100",
      "cadence": "continuous with daily review",
      "direction": "lower-is-better",
      "thresholds": { "amber": "above 0%", "red": "any consequential bypass or unverifiable external effect" },
      "controlIds": ["ctrl-runtime-production-boundary"],
      "gateIds": ["control", "measure", "prove"],
      "sourceIds": ["src-nist-ai-rmf", "src-owasp-llm-top10"],
      "caveat": "The metric requires independent observation of external effects; runtime self-report alone cannot prove non-bypassability."
    }
  ]
}
