{
  "tool_id": "art-558-record-fund-positions",
  "tool_version": "1.0.0",
  "display_name": "Record Fund Positions",
  "mcp_name": "record_fund_positions",
  "mandate_type": "attestation_mandate",
  "wave": 90,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-558-record-fund-positions.html",
  "description": "Gives a fund's declared positions snapshot, as of a stated valuation date, its own citable execution_hash -- the upstream input-receipt that the proven NAV chain (art-373-recompute-fund-nav) currently hashes internally, and that a separate wiring node can instead cite via an optional positions_ref rather than re-declaring the same holdings. Attests that a declared snapshot exists exactly as stated, over caller-supplied holdings rows (security_id, quantity, currency) and a declared shares_outstanding. HARD FENCE: fund_id, valuation_date, every holding row, and shares_outstanding are supplied and asserted, never fetched (zero-egress); this attests THAT a declared snapshot exists as stated, never whether it matches a custodian record, never a live position feed. Section 25 private-inputs review ruled not applicable and stated explicitly: holdings are echoed in cleartext by design, since the node's function is to give the declared snapshot a citable hash, not to hide it behind a commitment. Not fund NAV recomputation (art-373) and not a pricing input (a sibling record_pricing_inputs node covers pricing). Corrections cite the prior artifact via the SPEC.md top-level supersedes field, not a bespoke status registry.",
  "input_schema_ref": "chaingraph/art-558-record-fund-positions.html#manifest",
  "deadline": null,
  "deadline_note": "No statutory deadline; positions recording is an upstream input step feeding NAV calculation, not a periodic filing.",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:131eac7aaf5e372e1965aa999e673311441ba0a4febdaab6db2acae582e9496f",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-06"
    }
  ],
  "compute_proof_ready": "ready",
  "export_capability": [
    "json"
  ],
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "Cz0Tp7wVmgvGyk5lVa0tQJ97nC19CzAERxhRBZZ1+jMvGAbW5q6kvPPZE9yWKEQK/eu+MJmUM77/o256eczDsSRsqhYrU/lENt7ErBSJ8JjFH1SVW8MRogwGOTbF9JwgCBMI98pZxLQ6cSHD2H7Tow6+sfs2ozyZNHN80dOLAW4jIHjb/9OB7ZiidIew4cqM04pBaRE/3zb+SsKlLw8V9hlBai19U7BgwULo89MFQa6isS0uEUupawgqHtELUX9bAgV/ZqRsT0UDG8ucrGNAqSWWCi2nf17UmQgkYXZHr3AkcPy8Vw7iPtK6cOEohUBw3LVvohaSsvk0cnLoZjxq4w==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:131eac7aaf5e372e1965aa999e673311441ba0a4febdaab6db2acae582e9496f",
      "output": {
        "disclosure_note": "Holdings are echoed here in cleartext by design (SPEC.md section 25 ruled not applicable, stated explicitly): this artifact's own execution_hash IS the positions_digest downstream lineage cites, never a second canonicalization or a salted commitment over the holdings. A caller who needs the snapshot itself kept out of a public artifact should not call this node, or should supply a redacted/aggregated snapshot -- that choice belongs to the caller.",
        "fence": "fund_id, valuation_date, every holding row, and shares_outstanding are SUPPLIED, asserted, and digested into this receipt. This kernel attests THAT a declared positions snapshot exists exactly as stated for the given fund and date -- never a verification against a custodian or fund-administrator record, never a live position feed (zero-egress by contract).",
        "fund_id": "FUND-DEMO-01",
        "holding_count": 3,
        "holdings": [
          {
            "currency": "USD",
            "quantity": 1000,
            "security_id": "SEC-A"
          },
          {
            "currency": "GBP",
            "quantity": 2500,
            "security_id": "SEC-B"
          },
          {
            "currency": "EUR",
            "quantity": 750,
            "security_id": "SEC-C"
          }
        ],
        "not_proven": [
          {
            "detail": "This kernel attests that a declared positions snapshot exists exactly as stated for the given fund and valuation date. It does not itself verify the snapshot against any custodian, prime broker, or fund-administrator record.",
            "item": "Custodian-record match"
          },
          {
            "detail": "Every security_id, quantity, and currency is caller-supplied and asserted. This kernel performs no custodian or market-data lookups (zero-egress) and does not verify these values against any external source.",
            "item": "Holdings-data accuracy"
          },
          {
            "detail": "All inputs are point-in-time as supplied by the caller for the stated valuation_date; this kernel makes no claim about a live or real-time position feed and makes none of its own calls.",
            "item": "Live position feed"
          },
          {
            "detail": "This kernel records a positions snapshot only. It performs no pricing, valuation, or NAV-per-share arithmetic -- that is art-373-recompute-fund-nav, which may cite this artifact's execution_hash via a positions_ref rather than re-declaring holdings.",
            "item": "NAV or pricing computation"
          }
        ],
        "shares_outstanding": 100000,
        "structural_error": null,
        "valuation_date": "2026-08-05"
      }
    }
  }
}
