{
  "tool_id": "art-557-record-index-constituents",
  "note": "golden_hash filled by `node golden-parity.test.mjs --update`. Vectors cover: a standard fully-populated constituent set, a set with one missing security_id (soft-flag, not a structural error), and the structural-error path (empty constituents array).",
  "vectors": [
    {
      "name": "standard-constituent-set",
      "description": "Three-constituent set with all fields populated, selection_universe_size consistent with the recorded count.",
      "policy_parameters": {
        "index_id": "IDX-DEMO-100",
        "as_of_date": "2026-08-05",
        "constituents": [
          {
            "security_id": "SEC-A",
            "name": "Alpha Corp",
            "sector": "Industrials",
            "country": "US"
          },
          {
            "security_id": "SEC-B",
            "name": "Beta Ltd",
            "sector": "Financials",
            "country": "GB"
          },
          {
            "security_id": "SEC-C",
            "name": "Gamma SA",
            "sector": "Materials",
            "country": "FR"
          }
        ],
        "eligibility_criteria_ref": "market-cap rank <=200, free-float >=15%, ADV >= threshold",
        "selection_universe_size": 200
      },
      "output_payload": {
        "index_id": "IDX-DEMO-100",
        "as_of_date": "2026-08-05",
        "structural_error": null,
        "constituents": [
          {
            "security_id": "SEC-A",
            "name": "Alpha Corp",
            "sector": "Industrials",
            "country": "US"
          },
          {
            "security_id": "SEC-B",
            "name": "Beta Ltd",
            "sector": "Financials",
            "country": "GB"
          },
          {
            "security_id": "SEC-C",
            "name": "Gamma SA",
            "sector": "Materials",
            "country": "FR"
          }
        ],
        "constituent_count": 3,
        "eligibility_criteria_ref": "market-cap rank <=200, free-float >=15%, ADV >= threshold",
        "selection_universe_size": 200,
        "not_proven": [
          {
            "item": "Eligibility-criteria application",
            "detail": "This kernel attests that a declared constituent set exists exactly as stated, selected under the stated criteria. It does not itself verify the criteria was applied correctly against underlying market data."
          },
          {
            "item": "Constituent-data accuracy",
            "detail": "Every security_id, name, sector and country is caller-supplied and asserted. This kernel performs no index-provider or market-data lookups (zero-egress) and does not verify these values against any external source."
          },
          {
            "item": "Live index-data feed",
            "detail": "All inputs are point-in-time as supplied by the caller for the stated as_of_date; this kernel makes no claim about a live or real-time index-provider feed and makes none of its own calls."
          },
          {
            "item": "Regulatory benchmark-administrator compliance",
            "detail": "EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) and SEBI benchmark-administrator framework references, where used downstream, are informative context only; this kernel makes no claim of compliance with either."
          }
        ],
        "fence": "The constituent list, eligibility-criteria description, and selection universe size are SUPPLIED, asserted, and digested into this receipt. This kernel attests THAT a declared constituent set exists exactly as stated, selected under the stated criteria -- never a verification of the criteria against market data, never a live index-data feed (zero-egress by contract).",
        "regulatory_framework": "EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) and SEBI benchmark-administrator framework references are informative context only; this kernel makes no compliance claim under either."
      },
      "golden_hash": "5cdd197a660f15f0e3c0f41bb600f665725a80c003158452517a5d513c98c370"
    },
    {
      "name": "missing-security-id-soft-flag",
      "description": "One constituent missing security_id -- recorded normally with a soft flag, not a structural error.",
      "policy_parameters": {
        "index_id": "IDX-DEMO-101",
        "as_of_date": "2026-08-05",
        "constituents": [
          {
            "security_id": "SEC-A",
            "name": "Alpha Corp",
            "sector": "Industrials",
            "country": "US"
          },
          {
            "name": "Unidentified Co",
            "sector": "Utilities",
            "country": "DE"
          }
        ],
        "eligibility_criteria_ref": "market-cap rank <=50",
        "selection_universe_size": 50
      },
      "output_payload": {
        "index_id": "IDX-DEMO-101",
        "as_of_date": "2026-08-05",
        "structural_error": null,
        "constituents": [
          {
            "security_id": "SEC-A",
            "name": "Alpha Corp",
            "sector": "Industrials",
            "country": "US"
          },
          {
            "security_id": null,
            "name": "Unidentified Co",
            "sector": "Utilities",
            "country": "DE"
          }
        ],
        "constituent_count": 2,
        "eligibility_criteria_ref": "market-cap rank <=50",
        "selection_universe_size": 50,
        "not_proven": [
          {
            "item": "Eligibility-criteria application",
            "detail": "This kernel attests that a declared constituent set exists exactly as stated, selected under the stated criteria. It does not itself verify the criteria was applied correctly against underlying market data."
          },
          {
            "item": "Constituent-data accuracy",
            "detail": "Every security_id, name, sector and country is caller-supplied and asserted. This kernel performs no index-provider or market-data lookups (zero-egress) and does not verify these values against any external source."
          },
          {
            "item": "Live index-data feed",
            "detail": "All inputs are point-in-time as supplied by the caller for the stated as_of_date; this kernel makes no claim about a live or real-time index-provider feed and makes none of its own calls."
          },
          {
            "item": "Regulatory benchmark-administrator compliance",
            "detail": "EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) and SEBI benchmark-administrator framework references, where used downstream, are informative context only; this kernel makes no claim of compliance with either."
          }
        ],
        "fence": "The constituent list, eligibility-criteria description, and selection universe size are SUPPLIED, asserted, and digested into this receipt. This kernel attests THAT a declared constituent set exists exactly as stated, selected under the stated criteria -- never a verification of the criteria against market data, never a live index-data feed (zero-egress by contract).",
        "regulatory_framework": "EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) and SEBI benchmark-administrator framework references are informative context only; this kernel makes no compliance claim under either."
      },
      "golden_hash": "5a242b2f9474f5e13c550769ccfd6af893a206f40005ca0aef35eafb7035f407"
    },
    {
      "name": "structural-error-empty-constituents",
      "description": "Structural-error path: constituents array is empty.",
      "policy_parameters": {
        "index_id": "IDX-DEMO-102",
        "as_of_date": "2026-08-05",
        "constituents": [],
        "eligibility_criteria_ref": "market-cap rank <=50",
        "selection_universe_size": 50
      },
      "output_payload": {
        "index_id": "IDX-DEMO-102",
        "as_of_date": "2026-08-05",
        "structural_error": "constituents must be a non-empty array.",
        "constituents": [],
        "constituent_count": 0,
        "eligibility_criteria_ref": "market-cap rank <=50",
        "selection_universe_size": 50,
        "not_proven": [
          {
            "item": "Eligibility-criteria application",
            "detail": "This kernel attests that a declared constituent set exists exactly as stated, selected under the stated criteria. It does not itself verify the criteria was applied correctly against underlying market data."
          },
          {
            "item": "Constituent-data accuracy",
            "detail": "Every security_id, name, sector and country is caller-supplied and asserted. This kernel performs no index-provider or market-data lookups (zero-egress) and does not verify these values against any external source."
          },
          {
            "item": "Live index-data feed",
            "detail": "All inputs are point-in-time as supplied by the caller for the stated as_of_date; this kernel makes no claim about a live or real-time index-provider feed and makes none of its own calls."
          },
          {
            "item": "Regulatory benchmark-administrator compliance",
            "detail": "EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) and SEBI benchmark-administrator framework references, where used downstream, are informative context only; this kernel makes no claim of compliance with either."
          }
        ],
        "fence": "The constituent list, eligibility-criteria description, and selection universe size are SUPPLIED, asserted, and digested into this receipt. This kernel attests THAT a declared constituent set exists exactly as stated, selected under the stated criteria -- never a verification of the criteria against market data, never a live index-data feed (zero-egress by contract).",
        "regulatory_framework": "EU Benchmark Regulation (BMR, Regulation (EU) 2016/1011) and SEBI benchmark-administrator framework references are informative context only; this kernel makes no compliance claim under either."
      },
      "golden_hash": "bd8ac15b21848f9329be77f1bf092087bac9f60b583fb74b92d3a78998ffae1f"
    }
  ]
}
