{
  "tool_id": "art-688-education-funding-gap-calculator",
  "tool_version": "1.0.0",
  "display_name": "Education Funding Gap Calculator",
  "mcp_name": "compute_education_funding_gap_calculator",
  "mandate_type": "compliance_control",
  "wave": 116,
  "gpu": false,
  "url": "https://ainumbers.co/tools/688-education-funding-gap-calculator.html",
  "description": "Computes the arithmetic of a declared education funding plan: the future value of a declared current balance grown at a declared annual return over a declared horizon, and the funding gap against a declared goal, returning GAP_COMPUTED or GOAL_MET with a full trace. Every input is a caller-declared synthetic value; no account, plan record, market feed, or clock is read. The overfunded-to-Roth rollover note on the GOAL_MET path echoes a caller-declared lifetime rollover cap; the statutory reference for that cap is the SECURE 2.0 Act of 2022, Division T, Section 126 (Public Law 117-328, enacted 2022-12-29), which added the 529-to-Roth IRA rollover with a 35000 USD lifetime limit per beneficiary beginning 2024 (subject to a 15-year account-age rule and annual Roth contribution limits); measured 2026-09-05; derive: read Public Law 117-328, Division T, sec. 126. The kernel never recommends a contribution amount, a plan, or a rollover; it is arithmetic over declarations, not advice. The contribution solver is out of scope for v1.",
  "input_schema_ref": "tools/688-education-funding-gap-calculator.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:fc261c3ad8218c3aa80c320728eb8f30767cd816fe91519ce9b0283d28fb6415",
      "valid_from": "2026-09-05"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-09-06"
    }
  ],
  "export_capability": [
    "json"
  ],
  "standards_basis": "not_applicable",
  "compute_proof_ready": "ready",
  "compute_proof": {"type":"ZkVmReceipt","system":"risc0","receiptFormat":"groth16-bn254","imageId":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","seal":"BEwj4m4EjrYBddUGM/COIpiKSIq15oAOXcSyvWwirmEOKXAAEnw21b2IRq7Wcitgarjf8ReGFonLGAPyw9LXphNj24LdLfcZVcqjVhIh/HuFe9ytDJsw/P1zMdvwGbtyLQglpCiSk1OEynDN1SNyRmj/MAbOLtFLoA2QUhSHslYvkmZ3KY8si/KL/Ns4B5ep3xdx8WcqEuND00b8ThyNWC8hu/3qO68tgsEjjsX/9IIm/vk8MU88T/rn9VH0FAH6KSdnpsAKKXQ2UrDBeOiD92nWh3uJ8DgjnpynKDfBp3ofcDQM+jxZ70N5XaW9MsRjzazSi1q/FYzVXH5KiiXxxg==","journal":{"chaingraph_version":"0.4.0","kernel_digest":"sha256:fc261c3ad8218c3aa80c320728eb8f30767cd816fe91519ce9b0283d28fb6415","output":{"funding_gap":87422.11,"fv_current_balance":32577.89,"overall":"GAP_COMPUTED","trace":"20000 * 1.05^10 = 32577.89 (2dp half-up); gap = 120000 - 32577.89 = 87422.11"}}}
}
