{
 "tool_id": "art-711-sco60-crypto-asset-exposure-classifier-v2",
 "note": "Reachability vectors only (AUTHORING-STANDARD.md section 1.5) — kernel_generated by construction, regression instruments, never conformance evidence: each pins the exact input that must reach a declared refusal path. Conformance vectors live in the sibling .fixtures.json file.",
 "vectors": [
  {
   "name": "reach-empty-book-typed-refusal",
   "provenance": "kernel_generated",
   "policy_parameters": {
    "bank_tier1_capital": 1000,
    "group2_positions": []
   },
   "expected_refusal_reason": "REFUSED_BAD_POSITIONS"
  },
  {
   "name": "reach-negative-leg-typed-refusal",
   "provenance": "kernel_generated",
   "policy_parameters": {
    "bank_tier1_capital": 1000,
    "group2_positions": [
     {
      "cryptoasset": "btc",
      "holding_type": "direct_cash",
      "long_exposure": -5,
      "short_exposure": 0
     }
    ]
   },
   "expected_refusal_reason": "REFUSED_BAD_POSITION_ENTRY"
  },
  {
   "name": "reach-overflow-cap-typed-refusal",
   "provenance": "kernel_generated",
   "policy_parameters": {
    "bank_tier1_capital": 1000,
    "group2_positions": [
     {
      "cryptoasset": "asset-a",
      "holding_type": "direct_cash",
      "long_exposure": 600000000000,
      "short_exposure": 0
     },
     {
      "cryptoasset": "asset-b",
      "holding_type": "direct_cash",
      "long_exposure": 0,
      "short_exposure": 600000000000
     }
    ]
   },
   "expected_refusal_reason": "REFUSED_OVERFLOW_CAP"
  }
 ]
}
