{
  "format": "vercy-model-allocation-candidate/v1",
  "contourId": "EM-OPS-05",
  "proposedName": "Transformation Event",
  "modelId": null,
  "registryId": null,
  "allocationState": "unassigned",
  "decision": "NEW MODEL",
  "canonicalPublishable": false,
  "identityTest": {
    "stableIdentity": "An actual material transformation occurrence remains identifiable independently of its work order, input/output lots, movements and later corrections.",
    "versionIdentity": "Corrections append successor assertions for the same occurrence; a separate execution occurrence receives a new event identity.",
    "independentLifecycle": [
      "recorded",
      "validated",
      "corrected",
      "superseded",
      "voided",
      "closed"
    ],
    "mastership": "production execution or material genealogy authority"
  },
  "boundary": {
    "owns": [
      "persistent transformation-occurrence identity",
      "consumed input lots and quantities",
      "produced lots and serialized items",
      "yield, scrap and co-product quantities",
      "unit and quantity bases",
      "event time, record time and place",
      "performing agent, authority and evidence",
      "correction and supersession lineage"
    ],
    "references": [
      {
        "target": "WM-OBJ-001",
        "purpose": "Produced serialized-item identity"
      },
      {
        "target": "WM-OBJ-020",
        "purpose": "Stock-position consequences"
      },
      {
        "target": "WM-FLW-012",
        "purpose": "Inventory movement or posting"
      },
      {
        "target": "WM-FLW-013",
        "purpose": "Derived supply-trace edges"
      },
      {
        "target": "WM-ACT-007",
        "purpose": "Work-order reference",
        "constraint": "maintenance-scoped; must-not-be-used-as-production-authorization",
        "referenceClass": "restricted",
        "blockedUntil": "production-work-order boundary is canonically allocated"
      },
      {
        "target": "WM-ECO-024",
        "purpose": "Fulfilment milestones and acceptance boundary"
      }
    ],
    "excludes": [
      "lot, item, stock position or handling-unit identity",
      "BOM, routing, plan or work-order identity",
      "movement, shipment, custody transfer or acceptance",
      "recall decision or exposure authority",
      "generic observation or trace-edge identity",
      "inventory adjustment authority"
    ]
  },
  "objects": {
    "TransformationEvent": {
      "identity": [
        "transformationEventId"
      ],
      "required": [
        "inputs",
        "outputs",
        "eventTime",
        "placeRef",
        "performingAgentRef",
        "evidenceDigest",
        "status",
        "recordTime",
        "knowledgeTimeRange",
        "yield",
        "scrap",
        "coProducts",
        "quantityReconciliation",
        "authorityRef",
        "provenance"
      ],
      "optional": [
        "workOrderRef",
        "supersedesRef"
      ],
      "lifecycle": [
        "recorded",
        "validated",
        "corrected",
        "superseded",
        "voided",
        "closed"
      ],
      "knowledgeTimeRange": {
        "from": "required",
        "to": "open-ended-allowed"
      },
      "timeFormat": "RFC3339, seconds precision, explicit offset",
      "quantityReconciliation": {
        "method": [
          "mass-balance",
          "unit-count",
          "declared-yield-factor"
        ],
        "basis": "required",
        "unitCodeListVersionPinned": true,
        "toleranceDeclared": true,
        "unreconciledResidualLabelled": true
      },
      "inputs[]": {
        "lotRef": "required",
        "consumedQuantity": "required",
        "unit": "required",
        "basis": "required",
        "quantityScope": "required",
        "consumptionCompleteness": [
          "fully-consumed",
          "partially-consumed"
        ],
        "residualAssertedOnLot": {
          "requiredWhen": "consumptionCompleteness == partially-consumed"
        },
        "evidenceDigest": "required"
      },
      "outputs[]": {
        "outputKind": [
          "lot",
          "serialized-item",
          "co-product-lot",
          "scrap"
        ],
        "ref": "required",
        "quantity": "required",
        "unit": "required",
        "basis": "required",
        "edgeAssertionClass": [
          "asserted",
          "inferred"
        ],
        "evidenceDigest": "required"
      },
      "authorityScope": [
        "production-execution",
        "material-genealogy"
      ],
      "mustNotBeDerivedFromLaterStatus": true,
      "voidRecord": {
        "requiredWhen": "status == voided",
        "voidReason": "required",
        "voidAuthorityRef": "required",
        "priorAssertionRetained": true,
        "recordTime": "required"
      },
      "supersededByRef": {
        "requiredWhen": "status == superseded"
      },
      "provenance": {
        "sourceSystem": "required",
        "assertingAgentRef": "required",
        "method": [
          "observed",
          "declared",
          "inferred"
        ],
        "confidence": "optional",
        "edgeAssertionClass": [
          "asserted",
          "inferred",
          "mass-balance-inferred",
          "stale",
          "incomplete"
        ]
      }
    }
  },
  "invariants": [
    "Every event records explicit input and output sets with quantities, units and bases.",
    "Transformation identity remains separate from work order, plan, movement and trace-edge identity.",
    "Every genealogy edge cites the actual transformation event and evidence.",
    "BOM and routing describe intent and never prove actual composition.",
    "Yield, scrap and co-products remain explicit and reconcile under a declared method.",
    "Event time and record time remain distinct.",
    "Corrections append successors and preserve prior assertions.",
    "Input consumption never silently transfers title or custody.",
    "Output creation never proves stock posting, shipment, receipt or acceptance.",
    "Inferred, mass-balance and stale edges remain labelled and never become asserted facts.",
    "Missing inputs or outputs produce incomplete or indeterminate genealogy, never zero.",
    "Exposure analysis follows event-backed edges but never exercises recall authority.",
    "A void is an appended non-destructive assertion citing reason, authority and record time; prior assertions and their genealogy edges remain readable and are never deleted or rewritten.",
    "Correction lineage is bidirectionally resolvable: supersedesRef and supersededByRef are both present on a superseded assertion and no assertion is its own successor."
  ],
  "holds": [
    "Registry allocation is pending and no identifier may be guessed.",
    "Production-work-order and generic occurrence boundaries require canonical allocation.",
    "Mass-balance, unit conversion and external trace crosswalks remain pending.",
    "Independent provider review is on record and one frozen semantic audit was completed 2026-10-01; all 35 recorded audit defects and all 51 recorded additional fixtures are remediated without rerun. No installability, conformance or publication-readiness claim is made."
  ]
}
