{
  "tool_id": "art-672-fx-funding-sequencer",
  "tool_version": "1.0.0",
  "display_name": "FX Funding Sequencer",
  "mcp_name": "compute_fx_funding_sequencer",
  "mandate_type": "compliance_control",
  "wave": 114,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-672-fx-funding-sequencer.html",
  "description": "Orders a trade's declared currency legs by FX cutoff and computes margin-to-cutoff minutes from the declared confirm time, for one declared T+1 settle date, returning an all-cutoffs-met verdict: sequence (tightest margin first, ties in declared order), margins_minutes (cutoff minus confirm, integer minutes, negative where a declared cutoff is at or before the declared confirm), all_cutoffs_met, a trace line, and an overall of FUNDING_SEQUENCED, CUTOFF_MISSED, or INDETERMINATE. Times are declared UTC HH:MM strings and the math is pure comparison on the one declared settle date -- no timezone conversion, date rollover, holiday calendar, or daylight-saving adjustment. Any absent or malformed declared input (settle date, confirm time, or a leg's currency code or cutoff time), or a duplicate declared currency leg, fails closed to INDETERMINATE with each offending input named -- never a partial sequence. This tool computes arithmetic of declared inputs under named rules; it does not check live SSR tapes, borrow lists, cutoff feeds, or registers, and the PvP check is out of scope: the PvP validator surface is pointed at as a link, never a duplicated verdict (see art-58-cross-network-settlement-validator).",
  "input_schema_ref": "chaingraph/art-672-fx-funding-sequencer.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:7a8bdff517f46e0feecd70c62f7074135cbea33f386252dd61b94007206771ca","valid_from":"2026-09-04"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-09-06"}],
  "export_capability": ["json"],
  "standards_basis": "not_applicable",
  "cited_clause_digest": [],
  "compute_proof": {"type":"ZkVmReceipt","system":"risc0","receiptFormat":"groth16-bn254","imageId":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","seal":"J24IQLMU/eaPnDfEdH+qv96MihKkfKoVXVA1byg7vBQJJDrjXvPVVYPbMF4OtuLzOO+WKC+J9aq3YCvC/1diTwT1Xcx7VR6T3Z1ZIGuwTDOX/UtmpiaqFocATZDj8IOPATcWICAHtpyQqIdGG1AGQuB6JhoB2+Y7v49SM/Ve9hQCG+aCB0cunR3bWMOC3BbYheuKGtEwLhoisiNzycOkfQpEvAUkt0ujsw7l7ZSA+FzGiaDDWhn8VmAhO4L9gSYxF5CL/EeVeq9qXTSQJyq4I/9ECQ6a53yUlNEE2o6ctMMf/KFSnx1YomuZXlSwzW4AwdRoS/E+b74Q7l1gK1VK8Q==","journal":{"chaingraph_version":"0.4.0","kernel_digest":"sha256:7a8bdff517f46e0feecd70c62f7074135cbea33f386252dd61b94007206771ca","output":{"all_cutoffs_met":true,"margins_minutes":{"EUR":40,"USD":400},"overall":"FUNDING_SEQUENCED","sequence":["EUR","USD"],"trace":"EUR 15:00 - 14:20 = 40 min; USD 21:00 - 14:20 = 400 min; order by tightest first"}}},
  "compute_proof_ready": "ready"
}
