{
  "tool_id": "art-645-compute-index-weights",
  "tool_version": "1.0.0",
  "display_name": "Compute Index Weights",
  "mcp_name": "compute_index_weights",
  "mandate_type": "attestation_mandate",
  "wave": 104,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-645-compute-index-weights.html",
  "description": "Computes (or receipts an externally-declared) weight per constituent from a stated methodology (market-cap, float-adjusted-market-cap, equal-weight, price-weight, or factor-tilted) and caller-supplied inputs, giving the weight set its own citable execution_hash separate from the constituent-membership fact in art-557. HARD FENCE: every input row (market_cap/price/float_factor/factor_score) is supplied and asserted, never fetched (zero-egress); this attests THAT a weight set was computed exactly as stated from the declared inputs, never whether those inputs are accurate. weight_sum_check is a hard local check (sum of weights within 1e-9 of 1.0), not a re-fetch. constituents_ref is optional and backward-compatible: a caller with no art-557 artifact yet still gets a valid weighting receipt over its declared constituent list. Second entry of the Financial Index/Benchmark Administrator Lineage family. Not fund NAV recomputation (art-373) or any benchmark-publisher scorecard. EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) Art 12(1) and SEBI (Index Providers) Regulations, 2024 Reg 18(1)/18(3) citations informative only.",
  "input_schema_ref": "chaingraph/art-645-compute-index-weights.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:89e1c42dc3d59ad3566052948cdbe988799613418a705f2fb499bf4c98e981cb",
      "valid_from": "2026-08-17"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-21"
    }
  ],
  "export_capability": [
    "json"
  ],
  "standards_basis": "cites_informative",
  "cited_clause_digest": [
    {
      "digest": "sha256:2d81dcf294e18d029b04d056da7de764a62ffa605ed2e660e0df6c4e46590066",
      "source_url": "https://eur-lex.europa.eu/eli/reg/2016/1011/2024-01-09/eng",
      "retrieved_at": "2026-08-17",
      "clause_path": "Art 12(1)(a)-(e)",
      "scheme": "eu-regulation",
      "id": "Regulation (EU) 2016/1011 Art 12(1)"
    },
    {
      "digest": "sha256:b6f3e42e447c118fe76fb8557d6b065a56311bf7f1ce1b1ac141186ad65da011",
      "source_url": "https://taxguru.in/sebi/securities-exchange-board-india-index-providers-regulations-2024.html",
      "retrieved_at": "2026-08-17",
      "clause_path": "Reg 18(1),18(3)",
      "scheme": "sebi-regulation",
      "id": "SEBI (Index Providers) Regulations, 2024 Reg 18"
    }
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "Brc+FicDbf4YoP7iAdLz4J2o6/rtlkoVlOzJttUZrq8G+AH9W7fuNrzqvnWckBf4quvpEIXB3dT66t2/8Cq2yh+eRLj0hBNyKT5pe5/uM+5KxSHJ+1uP9sv7XGG5I77eIfKoGvsXxR8mB+aXhq2TXwCx5riwrsTfiXwd7upYwe0A6+Fu+0wrpxRh5f67wg9wCwgc3GIdgcr6yeffhNdwkC3IQZxZ1nsHeRQcYgPpVN5rXS4AKEzp02XQl1gVnniXBeMyBWwijRERM+mB3TQrjyM3xI69oWJ9d66lDb4dW4IAgjC6hQHHP/B5pi5Wz22hSemGaj79pzAxKwjzj2FehQ==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:89e1c42dc3d59ad3566052948cdbe988799613418a705f2fb499bf4c98e981cb",
      "output": {
        "as_of_date": "2026-08-05",
        "constituents_ref": {
          "execution_hash": "sha256:abc123",
          "tool_id": "art-557-record-index-constituents"
        },
        "fence": "Every input row (market_cap/price/float_factor/factor_score) is SUPPLIED, asserted, and digested into this receipt. This kernel attests THAT a weight set was computed exactly as stated from the declared inputs and methodology -- never a verification of those inputs against market data, never a live index-data feed (zero-egress by contract).",
        "index_id": "IDX-DEMO-100",
        "methodology_notes": "weight_i = basis_i / sum(basis) under methodology=\"equal-weight\"; basis is 1 (uniform) per constituent.",
        "not_proven": [
          {
            "detail": "Every market_cap/price/float_factor/factor_score value is caller-supplied and asserted. This kernel performs no market-data or index-provider lookups (zero-egress) and does not verify these values against any external source.",
            "item": "Input-data accuracy"
          },
          {
            "detail": "This kernel computes weights over the supplied inputs list; it does not itself verify that the list matches any particular constituent-set attestation (art-557), even when constituents_ref is supplied for citation.",
            "item": "Constituent-set membership"
          },
          {
            "detail": "EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) Art 12(1) and SEBI (Index Providers) Regulations, 2024 Reg 18(1)/18(3) references are informative context only; this kernel makes no claim of compliance with either.",
            "item": "Regulatory benchmark-administrator compliance"
          }
        ],
        "regulatory_framework": "EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) Art 12(1) and SEBI (Index Providers) Regulations, 2024 Reg 18(1)/18(3) references are informative context only; this kernel makes no compliance claim under either.",
        "structural_error": null,
        "weight_sum_check": 1,
        "weight_sum_within_tolerance": true,
        "weighting_methodology": "equal-weight",
        "weights": [
          {
            "security_id": "SEC-A",
            "weight": 0.3333333333333333
          },
          {
            "security_id": "SEC-B",
            "weight": 0.3333333333333333
          },
          {
            "security_id": "SEC-C",
            "weight": 0.3333333333333333
          }
        ]
      }
    }
  }
}
