OpenChainGraph Suite · OCG v0.8.0 · Fair Lending & Adverse Action · Cluster ㉖

Adverse Action Notice Compliance

Gated two-step chain for adverse action notice compliance. Step 1 builds the notice skeleton from SHAP-ranked principal-factor codes (Reg B §1002.9, CFPB Circulars 2022-03 and 2023-03, FCRA §615(a) rights). A §21.4 gate checks action_taken: if the application was approved, no notice is required and the chain exits immediately. For denied, counteroffer, or incomplete applications, Step 2 validates the built notice for completeness, prohibited vague codes, factor count, and FCRA disclosure requirements.

OpenChainGraph · 2 Steps compliance mandate · §21.4 Gate Hash-Anchored §4 chain_depth:2 Client-Side · Zero PII
Not legal or compliance advice. Adverse action notice requirements depend on specific facts; consult qualified counsel. CFPB Circulars 2022-03 and 2023-03 clarify prohibited vague reason codes but are not binding law.
⚡ §21.4 Decision Gate active at Step 1: chain exits immediately when action_taken == "approved". No adverse action notice is required for approved applications. Step 2 (notice validation) runs only for denied, counteroffer, or incomplete applications.
Chain Topology (§21.4 gated) — Build Notice [GATE] → Validate Notice
§4 Execution Hash · Chain Definition Anchor
execution_hash:computing…
Chain Stages · 2 Steps · 1 Decision Gate (§21.4)
1 ROOT & GATE node §21.4 gate
Build Adverse Action Notice art-228-build-adverse-action-notice
Assembles the notice skeleton from SHAP-ranked FICO or VantageScore factor codes. Resolves reason codes to full text, orders sections per Reg B §1002.9, and includes FCRA §615(a) rights disclosure when a credit score was used. Gate exits when action_taken == "approved" (no notice required).
△ Gate: if /action_taken == "approved" → END  |  else → Step 2 (validate)
MCP Call · build_adverse_action_notice
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "build_adverse_action_notice",
    "arguments": {
      "action_taken": "denied",
      "creditor_name": "Acme Bank",
      "notice_date": "2026-07-04",
      "factor_codes": [
        {"rank": 1, "code": "08", "source": "fico", "shap_value": -0.42},
        {"rank": 2, "code": "14", "source": "fico", "shap_value": -0.31},
        {"rank": 3, "code": "23", "source": "fico", "shap_value": -0.18}
      ],
      "credit_score_used": true,
      "credit_score_value": 618,
      "credit_score_model": "FICO Score 8",
      "credit_score_range_min": 300,
      "credit_score_range_max": 850
    }
  },
  "id": 1
}
2 TERMINAL node
Validate Adverse Action Notice art-227-validate-adverse-action-notice
Validates the built notice against Reg B §1002.9 completeness requirements: reason count (max 4), prohibited vague codes (CFPB Circulars 2022-03/2023-03), required content fields, FCRA §615(a) rights disclosure when a credit score was used. Outputs compliance_score (0-100) and a structured violation list. Only reached for denied/counteroffer/incomplete applications.
MCP Call · validate_adverse_action_notice
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "validate_adverse_action_notice",
    "arguments": {
      "action_taken": "denied",
      "reason_code_source": "fico",
      "reason_codes": ["08", "14", "23"],
      "has_creditor_name": true,
      "has_date": true,
      "has_applicant_right_to_obtain_copy": true,
      "has_ecoa_notice": true,
      "credit_score_used": true,
      "has_credit_score_disclosure": true
    }
  },
  "id": 2
}
Export Chain Artifact
Download a §4-compliant chain artifact with execution hash, step definitions, and gate configuration. Hash is deterministic over canonical {policy_parameters, output_payload} per RFC 8785/JCS.