{
  "tool_id": "art-532-client-porting-check",
  "tool_version": "1.0.0",
  "display_name": "Client Porting Check",
  "mcp_name": "check_client_porting",
  "mandate_type": "attestation_mandate",
  "wave": 83,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-532-client-porting-check.html",
  "description": "Checks whether a client's cleared positions and collateral are portable to a backup clearing member under a caller-declared porting window, given caller-declared position/collateral completeness and backup-member consent status. Evaluates one caller-supplied snapshot: an empty position set, a missed porting window, and a not-yet-consented backup member each resolve to a distinct, defined not-portable outcome rather than a generic failure. A portable verdict is an evaluation of the supplied snapshot, never a guarantee that porting will in fact occur, and this tool does not itself move any position or collateral. Clause: PFMI Principle 14 (Segregation and Portability), 17 CFR 240.15c3-3a where a broker-dealer customer-protection structure is in view.",
  "input_schema_ref": "chaingraph/art-532-client-porting-check.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:6b3fddf02c09856bc6c1a58454eed2257d8a93d2e0a66af5721811ba315ba5f9",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-04"
    }
  ],
  "export_capability": [
    "json"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "Abzc4vzJSaqE1gNxpie8KRE8cMr4hMPSgi2o4YPKJOYLOj9B6gd0qRioIpKL4T59UWRv0nRQf5yADxrietqKFgC2b7JCtgGwgGnA8zUAmt55IBu0kNcXeDulHiE2/uFHCbCp9QNYMEDXOK7XC/9MJT6rpyF4aeBJsyKebbxXhicNgEYQYAnkjwIcDW3NC3Vl709bbDDe6+gDRNe4j182HRyDUb+SiLPVDs7DiXWllOh0Oq+GnZS0DX8ot2mVd0qZKGsiLB8SIMK3QDgKVP4v2O2uqhZXY0dUy4YzW7OJdpMUf1zVytTI7gk0bUojPL96zJKnnrrE0fKgr53EC2rsGA==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:6b3fddf02c09856bc6c1a58454eed2257d8a93d2e0a66af5721811ba315ba5f9",
      "output": {
        "backup_member_consent_status": "consented",
        "backup_member_id": "BACKUP-MEMBER-77",
        "citations": {
          "customer_protection_segregation": {
            "id": "17 CFR 240.15c3-3a",
            "in_force_from": "1972-11-03",
            "mapped_at": "2026-08-04",
            "mapped_by": "AINumbers CCP-CORE-K-1",
            "scheme": "cfr",
            "uri": "https://www.ecfr.gov/current/title-17/chapter-II/part-240/subject-group-ECFR6c1b03927685662/section-240.15c3-3a"
          },
          "segregation_and_portability": {
            "id": "PFMI Principle 14",
            "in_force_from": "2012-04-16",
            "mapped_at": "2026-08-04",
            "mapped_by": "AINumbers CCP-CORE-K-1",
            "scheme": "other",
            "uri": "https://www.bis.org/cpmi/publ/d101a.pdf"
          }
        },
        "client_ref": "CLIENT-A1",
        "collateral": [
          {
            "amount_display": "6000000.00",
            "amount_minor_units": 600000000,
            "asset_type": "ust_bill",
            "collateral_id": "COLL-1",
            "complete": true,
            "currency": "USD"
          }
        ],
        "collateral_complete": true,
        "collateral_count": 1,
        "default_event_at": "2026-08-04T09:00:00Z",
        "elapsed_minutes": 360,
        "evaluated_at": "2026-08-04T15:00:00Z",
        "note": "Deterministic client-porting check over a caller-declared snapshot of positions, collateral, backup-member consent status, and porting window. Single-run and stateless: this tool holds no records, runs on no schedule, and retains nothing. The verdict evaluates the supplied snapshot; it is not a guarantee of a porting outcome and it does not itself move any position or collateral.",
        "porting_window_hours": 48,
        "position_count": 2,
        "positions": [
          {
            "complete": true,
            "currency": "USD",
            "notional_display": "50000000.00",
            "notional_minor_units": 5000000000,
            "position_id": "POS-1",
            "product_type": "interest_rate_swap"
          },
          {
            "complete": true,
            "currency": "USD",
            "notional_display": "12000000.00",
            "notional_minor_units": 1200000000,
            "position_id": "POS-2",
            "product_type": "repo"
          }
        ],
        "positions_complete": true,
        "rationale": [
          "Client reference CLIENT-A1; backup clearing member BACKUP-MEMBER-77, consent status consented (PFMI Principle 14).",
          "2 position(s) declared totalling 62000000.00 notional, 0 not yet declared complete.",
          "1 collateral component(s) declared totalling 6000000.00, 0 not yet declared complete.",
          "Elapsed time since the default event is 360 minute(s) against a declared porting window of 2880 minute(s) (48 hour(s)).",
          "On these figures the client's positions and collateral are complete, the backup member has consented, and the declared porting window has not elapsed (17 CFR 240.15c3-3a where a broker-dealer customer-protection structure is in view). This is an evaluation of the supplied snapshot, not a guarantee that porting will in fact occur."
        ],
        "rejected_inputs": [],
        "total_collateral_display": "6000000.00",
        "total_collateral_minor_units": 600000000,
        "total_notional_display": "62000000.00",
        "total_notional_minor_units": 6200000000,
        "verdict": "portable",
        "window_minutes": 2880,
        "window_missed": false
      }
    }
  }
}
