{
  "format": "vercy-enterprise-allocation-fixtures/v2",
  "candidateName": "Actual Transformation Event",
  "cases": [
    {
      "id": "consume-produce",
      "kind": "positive",
      "input": "Material lots are consumed and a new lot produced.",
      "expect": "Inputs, outputs and provenance are explicit.",
      "target": "candidate-allocation-offline-transformation-event",
      "violates": [
        "ATE-INV-02",
        "ATE-INV-06"
      ],
      "closesDefect": [
        "D19"
      ]
    },
    {
      "id": "assembly",
      "kind": "positive",
      "input": "Components are aggregated into a serialized parent.",
      "expect": "The event supports an as-built projection.",
      "target": "candidate-allocation-offline-transformation-event",
      "violates": [
        "ATE-INV-02"
      ],
      "closesDefect": [
        "D19"
      ]
    },
    {
      "id": "planned-as-actual",
      "kind": "negative",
      "input": "Planned quantities are recorded as actual consumption.",
      "expect": "The inference is rejected.",
      "target": "candidate-allocation-offline-transformation-event",
      "violates": [
        "ATE-INV-09",
        "LE-INV-05"
      ],
      "closesDefect": [
        "D12"
      ],
      "expectedCode": "EMOPS04-E012"
    },
    {
      "id": "overwrite",
      "kind": "negative",
      "input": "A correction overwrites the original event.",
      "expect": "The mutation is rejected.",
      "target": "candidate-allocation-offline-transformation-event",
      "violates": [
        "ATE-INV-08"
      ],
      "closesDefect": [
        "D18"
      ],
      "expectedCode": "EMOPS04-E014"
    },
    {
      "id": "F-ATE-001",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "positive",
      "input": "An event records eventTime and recordedAt as distinct RFC 3339 values with explicit offsets.",
      "expect": "Both times persist separately and neither overwrites the other.",
      "violates": [
        "ATE-INV-04"
      ],
      "closesDefect": [
        "D12"
      ]
    },
    {
      "id": "F-ATE-002",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "negative",
      "input": "recordedAt is omitted and eventTime is reused as the record time, or an offset is absent.",
      "expect": "The event is rejected.",
      "violates": [
        "ATE-INV-04"
      ],
      "closesDefect": [
        "D12"
      ],
      "expectedCode": "EMOPS04-E031"
    },
    {
      "id": "F-ATE-003",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "positive",
      "input": "A correction appends a successor with supersedesRef, correctedAt and correctionAuthorityRef while the original is retained.",
      "expect": "The correction validates and the original remains resolvable.",
      "violates": [
        "ATE-INV-08"
      ],
      "closesDefect": [
        "D18"
      ]
    },
    {
      "id": "F-ATE-004",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "negative",
      "input": "An event is set to status corrected with no supersedesRef.",
      "expect": "The status change is rejected.",
      "violates": [
        "ATE-INV-08"
      ],
      "closesDefect": [
        "D18"
      ],
      "expectedCode": "EMOPS04-E040"
    },
    {
      "id": "F-ATE-005",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "negative",
      "input": "An event is voided without voidReason and voidAuthorityRef and the original payload is removed.",
      "expect": "The void is rejected.",
      "violates": [
        "ATE-INV-08"
      ],
      "closesDefect": [
        "D18"
      ],
      "expectedCode": "EMOPS04-E014"
    },
    {
      "id": "F-ATE-006",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "negative",
      "input": "An output quantity is recorded with no unitCode or basis.",
      "expect": "The event is rejected.",
      "violates": [
        "ATE-INV-03",
        "LE-INV-02"
      ],
      "closesDefect": [
        "D8"
      ],
      "expectedCode": "EMOPS04-E007"
    },
    {
      "id": "F-ATE-007",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "positive",
      "input": "Consumption of the approved alternate is recorded with assertionBasis observed and attributable evidence.",
      "expect": "The actual consumption fact validates and proves which alternate was installed.",
      "violates": [
        "ATE-INV-07",
        "LE-INV-05"
      ],
      "closesDefect": [
        "D11"
      ]
    },
    {
      "id": "F-ATE-008",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "negative",
      "input": "An output is recorded with neither a distinct identity nor a lot binding.",
      "expect": "The event is rejected and the output remains unknown rather than inferred.",
      "violates": [
        "ATE-INV-06",
        "ATE-INV-10"
      ],
      "closesDefect": [
        "D19",
        "D27"
      ],
      "expectedCode": "EMOPS04-E013"
    },
    {
      "id": "F-ATE-009",
      "target": "candidate-allocation-offline-transformation-event",
      "kind": "positive",
      "input": "WM-FLW-013 is referenced as verified-supplied and WM-MAT-008 and WM-KNW-008 are flagged unverified-draft.",
      "expect": "Reference verification passes with incomplete targets explicitly held.",
      "violates": [
        "POL-REQ-requiresReferenceStatusOnEveryReference"
      ],
      "closesDefect": [
        "D15"
      ]
    }
  ],
  "contourId": "EM-OPS-04",
  "target": "candidate-allocation-offline-transformation-event",
  "errorCodeRegistryRef": "error-codes.json",
  "defectRegistryRef": "audit-defects.json"
}
