{
  "tool_id": "art-485-regrpt-variance-explainer",
  "note": "Vectors computed directly from the shipped kernel. clean-explained exercises a material-and-explained line item, an immaterial line item, and a brand-new line item with no prior value. unexplained-material-variance exercises the requires_explanation=true / compliance_flags path. empty-input exercises the finite empty-input path.",
  "vectors": [
    {
      "name": "clean-explained",
      "description": "One material variance with an explanation on file, one immaterial variance, one new line item.",
      "policy_parameters": {
        "instance_pair": {
          "prior": { "as_of": "2026-03-31", "cells": [
            { "line_item": "total_loans", "value": 10000 },
            { "line_item": "total_deposits", "value": 9000 }
          ] },
          "current": { "as_of": "2026-06-30", "cells": [
            { "line_item": "total_loans", "value": 11500 },
            { "line_item": "total_deposits", "value": 9050 },
            { "line_item": "other_real_estate_owned", "value": 200 }
          ] }
        },
        "materiality_policy": {
          "version": "FFIEC-MATERIALITY-2026-Q2",
          "default_threshold_abs": 100,
          "default_threshold_pct": 0.05,
          "per_line_overrides": { "other_real_estate_owned": { "abs": 50, "pct": 0 } }
        },
        "explanations": [
          { "line_item": "total_loans", "text": "Growth from a Q2 syndicated-loan participation purchase." }
        ]
      },
      "output_payload": {
        "prior_as_of": "2026-03-31",
        "current_as_of": "2026-06-30",
        "policy_version": "FFIEC-MATERIALITY-2026-Q2",
        "variances": [
          { "line_item": "total_loans", "prior_value": 10000, "current_value": 11500, "abs_change": 1500, "pct_change": 0.15, "threshold_abs": 100, "threshold_pct": 0.05, "is_material": true, "has_explanation": true, "requires_explanation": false, "contribution": 1500, "rank": 1 },
          { "line_item": "total_deposits", "prior_value": 9000, "current_value": 9050, "abs_change": 50, "pct_change": 0.005555555555555556, "threshold_abs": 100, "threshold_pct": 0.05, "is_material": false, "has_explanation": false, "requires_explanation": false, "contribution": 50, "rank": 2 },
          { "line_item": "other_real_estate_owned", "prior_value": null, "current_value": 200, "abs_change": null, "pct_change": null, "threshold_abs": 50, "threshold_pct": 0, "is_material": false, "has_explanation": false, "requires_explanation": false, "contribution": 0, "rank": 3 }
        ],
        "summary": { "total_line_items": 3, "material_count": 1, "requires_explanation_count": 0, "total_abs_movement": 1550, "all_material_explained": true },
        "compliance_flags": [],
        "note": "Period-over-period variance, ranked by absolute-movement contribution, flagged against a policy-supplied materiality threshold (default plus per-line overrides). Whether a supplied explanation is adequate is a human review step, not judged here; this output feeds that gate."
      },
      "golden_hash": "a068c69939839b2b99cc3bff1a2fb7fce3926ea6046d1f6a8245cf5de04a5225"
    },
    {
      "name": "unexplained-material-variance",
      "description": "A material variance breaching the pct threshold with no explanation on file -- requires_explanation true.",
      "policy_parameters": {
        "instance_pair": {
          "prior": { "as_of": "2026-03-31", "cells": [
            { "line_item": "total_loans", "value": 10000 },
            { "line_item": "total_deposits", "value": 9000 }
          ] },
          "current": { "as_of": "2026-06-30", "cells": [
            { "line_item": "total_loans", "value": 10050 },
            { "line_item": "total_deposits", "value": 7000 }
          ] }
        },
        "materiality_policy": {
          "version": "FFIEC-MATERIALITY-2026-Q2",
          "default_threshold_abs": 100,
          "default_threshold_pct": 0.05
        },
        "explanations": []
      },
      "output_payload": {
        "prior_as_of": "2026-03-31",
        "current_as_of": "2026-06-30",
        "policy_version": "FFIEC-MATERIALITY-2026-Q2",
        "variances": [
          { "line_item": "total_deposits", "prior_value": 9000, "current_value": 7000, "abs_change": -2000, "pct_change": -0.2222222222222222, "threshold_abs": 100, "threshold_pct": 0.05, "is_material": true, "has_explanation": false, "requires_explanation": true, "contribution": 2000, "rank": 1 },
          { "line_item": "total_loans", "prior_value": 10000, "current_value": 10050, "abs_change": 50, "pct_change": 0.005, "threshold_abs": 100, "threshold_pct": 0.05, "is_material": false, "has_explanation": false, "requires_explanation": false, "contribution": 50, "rank": 2 }
        ],
        "summary": { "total_line_items": 2, "material_count": 1, "requires_explanation_count": 1, "total_abs_movement": 2050, "all_material_explained": false },
        "compliance_flags": ["VARIANCE_UNEXPLAINED:total_deposits"],
        "note": "Period-over-period variance, ranked by absolute-movement contribution, flagged against a policy-supplied materiality threshold (default plus per-line overrides). Whether a supplied explanation is adequate is a human review step, not judged here; this output feeds that gate."
      },
      "golden_hash": "35c63fd63a1b96394d6bfa7ca03b530a2a1dc8537f7eae521abe18c777ab6c2c"
    },
    {
      "name": "empty-input",
      "description": "Empty policy_parameters -- finite, deterministic empty-state output (empty-input finite gate).",
      "policy_parameters": {},
      "output_payload": {
        "prior_as_of": null,
        "current_as_of": null,
        "policy_version": null,
        "variances": [],
        "summary": { "total_line_items": 0, "material_count": 0, "requires_explanation_count": 0, "total_abs_movement": 0, "all_material_explained": true },
        "compliance_flags": [],
        "note": "Period-over-period variance, ranked by absolute-movement contribution, flagged against a policy-supplied materiality threshold (default plus per-line overrides). Whether a supplied explanation is adequate is a human review step, not judged here; this output feeds that gate."
      },
      "golden_hash": "a9797f05b338d47af500c8ec52ff29457428bb194d7faa0584325e0e8104d39b"
    }
  ]
}
