{
  "format": "vercy-enterprise-allocation-fixtures/v2",
  "candidateName": "Inventory Boundary",
  "cases": [
    {
      "id": "control-to-equity",
      "kind": "positive",
      "input": "A boundary changes from operational control to equity share.",
      "expect": "A successor revision and base-year recalculation preserve the prior boundary and bridge attribution differences.",
      "target": "Inventory Boundary",
      "violates": "A consolidation-method change creates a successor revision.",
      "closesDefect": null
    },
    {
      "id": "parallel-market-location",
      "kind": "positive",
      "input": "One activity set supports location- and market-based calculations.",
      "expect": "Both results pin the same boundary revision and remain non-additive.",
      "target": "Inventory Boundary",
      "violates": "Location- and market-based results are non-additive.",
      "closesDefect": null
    },
    {
      "id": "site-removal",
      "kind": "positive",
      "input": "A successor boundary excludes one sold site.",
      "expect": "The structural change triggers recalculation and comparability review.",
      "target": "Inventory Boundary",
      "violates": "Structural change triggers recalculation and comparability review.",
      "closesDefect": null
    },
    {
      "id": "scope-collapse",
      "kind": "negative",
      "input": "Organizational, operational and value-chain boundaries are stored as one undifferentiated scope.",
      "expect": "The boundary is rejected because the facets have different semantics.",
      "target": "Inventory Boundary",
      "violates": "Organizational, operational and value-chain boundaries remain separate facets.",
      "closesDefect": null,
      "expectedCode": "BOUNDARY_FACETS_COLLAPSED"
    },
    {
      "id": "missing-is-zero",
      "kind": "negative",
      "input": "Uncovered supplier activity is counted as zero.",
      "expect": "The result is rejected because missing coverage is unknown.",
      "target": "Inventory Boundary",
      "violates": "Missing boundary coverage is never inferred as zero.",
      "closesDefect": null,
      "expectedCode": "BOUNDARY_MISSING_AS_ZERO"
    },
    {
      "id": "double-map",
      "kind": "negative",
      "input": "One source interval maps twice to Scope 1 in the same axis.",
      "expect": "The run is rejected for within-boundary double counting.",
      "target": "Inventory Boundary",
      "violates": "Each source, asset and interval maps once per boundary and reporting axis.",
      "closesDefect": null,
      "expectedCode": "BOUNDARY_SOURCE_DOUBLE_MAPPED"
    },
    {
      "id": "rewrite-boundary",
      "kind": "negative",
      "input": "A new consolidation approach overwrites the prior boundary revision.",
      "expect": "The mutation is rejected; a successor and bridge are required.",
      "target": "Inventory Boundary",
      "violates": "A consolidation-method change creates a successor revision.",
      "closesDefect": null,
      "expectedCode": "BOUNDARY_HISTORY_REWRITTEN"
    },
    {
      "id": "facet-independent-revision",
      "target": "Inventory Boundary",
      "kind": "positive",
      "input": "Value-chain category 11 coverage rises from 40 to 70 percent with no entity or source change.",
      "expect": "Only the value-chain facet revision increments; organizational and operational facet revision identities are unchanged; a new composite boundary revision pins the new value-chain facet and the unchanged other two.",
      "violates": "A composite boundary revision pins exactly one revision of each facet, and a facet revision changes only when that facet changes.",
      "closesDefect": "D2"
    },
    {
      "id": "facet-bundled-bump",
      "target": "Inventory Boundary",
      "kind": "negative",
      "input": "A switch from financial control to equity share increments the value-chain and operational facet revision identities although neither facet changed.",
      "expect": "The revision is rejected because facet versions are coupled.",
      "violates": "A composite boundary revision pins exactly one revision of each facet, and a facet revision changes only when that facet changes.",
      "closesDefect": "D2",
      "expectedCode": "BOUNDARY_FACET_VERSION_COUPLED"
    },
    {
      "id": "consolidation-approach-closed-set",
      "target": "Inventory Boundary",
      "kind": "negative",
      "input": "An organizational facet revision declares consolidationApproach as proportionalConsolidation.",
      "expect": "The revision is rejected because the value is outside the closed set of equity share, financial control and operational control.",
      "violates": "Every enumerated field is a closed set; an unrecognised value blocks the run rather than passing through.",
      "closesDefect": "D2",
      "expectedCode": "CONSOLIDATION_APPROACH_NOT_IN_CLOSED_SET"
    },
    {
      "id": "counterparty-share-as-assertion",
      "target": "Inventory Boundary",
      "kind": "positive",
      "input": "A joint-venture partner states it reports 45 percent of a shared boiler.",
      "expect": "The statement is stored as a counterparty assertion with assertedByOrgRef, assertedShare, consolidationApproach, assertionStatus unverified and evidenceRef, and is not used as an input to any result quantity.",
      "violates": "A counterparty assertion is never an input to a result quantity.",
      "closesDefect": "D8"
    },
    {
      "id": "counterparty-assertion-as-fact",
      "target": "Inventory Boundary",
      "kind": "negative",
      "input": "A partner's asserted 45 percent share is used directly as the apportionment driver in a run.",
      "expect": "The run is rejected because an unverified counterparty assertion was consumed as fact.",
      "violates": "A counterparty assertion is never an input to a result quantity.",
      "closesDefect": "D8",
      "expectedCode": "COUNTERPARTY_ASSERTION_USED_AS_FACT"
    },
    {
      "id": "shared-share-sum-exceeded",
      "target": "Inventory Boundary",
      "kind": "negative",
      "input": "Three participants under operational control declare shares of 0.5, 0.45 and 0.2 on one shared asset.",
      "expect": "The apportionment is rejected because shares under one consolidation approach total 1.15.",
      "violates": "Shared-asset shares held under one consolidation approach sum to at most 1.0, and any shortfall is exposed as a declared residual.",
      "closesDefect": "D8",
      "expectedCode": "SHARED_ASSET_SHARE_SUM_EXCEEDED"
    },
    {
      "id": "effective-boundary-no-base-year",
      "target": "Inventory Boundary",
      "kind": "negative",
      "input": "A boundary revision reaches effective status with baseYear set to notEstablished.",
      "expect": "The transition is rejected because notEstablished is a draft-only sentinel.",
      "violates": "A boundary revision whose status is approved or effective carries an established base year and a recalculation policy reference.",
      "closesDefect": "D10",
      "expectedCode": "BASE_YEAR_MISSING_ON_EFFECTIVE_BOUNDARY"
    },
    {
      "id": "reference-edge-state-declared",
      "target": "Inventory Boundary",
      "kind": "positive",
      "input": "The candidate references WM-ORG-012 for group context while no approved relation edge exists.",
      "expect": "The reference carries edgeState unapproved, a matching hold is recorded, and nothing depends on traversing it.",
      "violates": "No approved relation edge exists for any reference in this candidate; all reference edges are declared unapproved.",
      "closesDefect": "D12"
    },
    {
      "id": "consolidation-from-org-graph",
      "target": "Inventory Boundary",
      "kind": "negative",
      "input": "The consolidation approach is resolved by traversing the group hierarchy in WM-ORG-012 rather than read from the organizational facet revision.",
      "expect": "The resolution is rejected because consolidation approach is a dated boundary-scoped decision.",
      "violates": "consolidationApproach is a dated decision carried on the organizational facet revision and is never derived by traversing an organization or group master.",
      "closesDefect": "D12",
      "expectedCode": "CONSOLIDATION_APPROACH_NOT_BOUNDARY_SCOPED"
    }
  ]
}
