{
      "tool_id": "art-178-ifrs17-csm-rollforward-validator",
      "tool_version": "1.0.0",
      "display_name": "IFRS 17 CSM Roll-Forward Validator",
      "mcp_name": "validate_ifrs17_csm_rollforward",
      "mandate_type": "compliance_mandate",
      "wave": 32,
      "gpu": false,
      "url": "https://ainumbers.co/chaingraph/art-178-ifrs17-csm-rollforward-validator.html",
      "description": "Validate IFRS 17 Contractual Service Margin (CSM) roll-forward mechanics: opening CSM + new business + interest accretion + experience adjustments - coverage-unit release + FX adjustments = closing CSM. Flags onerous contracts when computed closing falls below zero (IFRS 17 para 47-50: no negative CSM; shortfall recognized as immediate loss component). NaN-safe numeric validation on all inputs. Feeds risk-adjustment checker (art-179). IFRS 17 para 44-50. Zero network, zero PII.",
      "input_schema_ref": "chaingraph/art-178-ifrs17-csm-rollforward-validator.html#manifest",
      "consumes": [
        "art-177-ifrs17-measurement-model-classifier"
      ],
      "feeds": [
        "art-179-ifrs17-risk-adjustment-checker"
      ],
      "status": "live",
      "conformance_fixtures": true,
      "compute_capability": "server",
      "compute_images": [{"system":"sha256-source","image_id":"sha256:6d63a964418acbc17998ddac7014b0d42e3a09197ea4e1ffe32feeea586fb11f","valid_from":"2026-07-10"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-06-28"}],
      "compute_proof": {
        "type": "ZkVmReceipt",
        "system": "risc0",
        "receiptFormat": "groth16-bn254",
        "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
        "seal": "KzJinbiikbaT9xgEBtOjv+PDWaMYfGHRovmXEwayaWgHPWeLz3t1a+Y7/xr8sfEsyZbQJDSmVkJUrTPCZSaCGhDpc8NRF+BqAieVL85peZ4LokvYJN3yDvis/HZZmI+SEzLNYP74RfMTK/G/zh9x3BNdNFA1+R5WsMUQypCQ5HUrTcgwB388DBYPH2oarpsasojfHhiaGfGb55CkG1OQ/QuPUzhyQihqRlWYWHl9p4QfQJvY3dms48IJ7mOPthjIKjcsUshTerRR+YwAThukc/8u+marm90qMfM0ZvKEZIIkI5G2O/g+DNohhWAvMfQGk9qHmOjJVGe/jIvuawXokg==",
        "journal": {
          "chaingraph_version": "0.4.0",
          "kernel_digest": "sha256:7a830297ff810b7cc92b55ac641227fcafdf761547ce8be312885f15340064ca",
          "output": {
            "closing_csm": 1120,
            "csm_valid": true,
            "experience_adjustments": -30,
            "fx_adjustments": 0,
            "interest_accretion": 50,
            "loss_component": 0,
            "new_business_csm": 200,
            "onerous": false,
            "opening_csm": 1000,
            "release_to_profit": 100
          }
        }
      },
      "export_capability": [
        "json",
        "vc"
      ]
    }
