{
  "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."
    }
  ]
}
