{
  "format": "vercy-model-allocation-candidate/v1",
  "contourId": "EM-OPS-04",
  "proposedName": "MBOM / Manufacturing Plan",
  "modelId": null,
  "registryId": null,
  "allocationState": "unassigned",
  "decision": "NEW MODEL (unassigned; no identifier may be allocated by this audit)",
  "canonicalPublishable": false,
  "identityTest": {
    "stableIdentity": "A governed production definition remains identifiable independently of engineering BOMs, work orders and actual transformations.",
    "versionIdentity": "Routing, operation, plant applicability, material, scrap or yield changes create immutable successor versions.",
    "independentLifecycle": [
      "draft",
      "reviewed",
      "approved",
      "released",
      "effective",
      "superseded",
      "retired"
    ],
    "mastership": "manufacturing engineering authority"
  },
  "boundary": {
    "owns": [
      "manufacturing-plan identity",
      "immutable MBOM versions",
      "routing and operations",
      "plant and line applicability",
      "process-added material",
      "scrap and yield assumptions",
      "EBOM reconciliation mappings"
    ],
    "references": [
      {
        "target": "WM-OBJ-018",
        "purpose": "Engineering definition and revision",
        "status": "verified-supplied"
      },
      {
        "target": "WM-OBJ-019",
        "purpose": "EBOM baseline",
        "status": "verified-supplied"
      },
      {
        "target": "WM-OBJ-002",
        "purpose": "Product type",
        "status": "verified-supplied"
      },
      {
        "target": "WM-REC-010",
        "purpose": "Release decision",
        "status": "unverified-draft"
      }
    ],
    "excludes": [
      "engineering BOM ownership",
      "production order",
      "actual consumption",
      "lot identity",
      "serialized item",
      "as-built composition"
    ]
  },
  "objects": {
    "ManufacturingPlan": {
      "identity": [
        "manufacturingPlanId"
      ],
      "required": [
        "name",
        "ownerRef",
        "status"
      ],
      "optional": [
        "successorRef"
      ],
      "retirement": {
        "retiredAt": "<rfc3339-with-offset>",
        "tombstoneRef": "<string>",
        "reason": "<string>"
      },
      "conditionalRequired": [
        {
          "when": "status in [corrected,superseded]",
          "require": [
            "supersedesRef"
          ]
        }
      ]
    },
    "PlanVersion": {
      "identity": [
        "manufacturingPlanId",
        "version"
      ],
      "required": [
        "operations",
        "applicability",
        "validFrom",
        "contentDigest",
        "bomKind"
      ],
      "optional": [
        "materialRules",
        "yieldRules",
        "ebomMappings",
        "validTo",
        "assertionBasis"
      ],
      "enums": {
        "bomKind": [
          "MBOM"
        ]
      },
      "versionImmutability": {
        "mutableAfterStatus": [
          "draft",
          "reviewed"
        ],
        "immutableAfterStatus": [
          "approved",
          "released",
          "effective",
          "superseded",
          "retired"
        ],
        "immutabilityWitness": "contentDigest"
      }
    }
  },
  "invariants": [
    "Every plan version states bomKind and an immutable version witnessed by contentDigest.",
    "Routing and operation order are explicit.",
    "Plant and line applicability are explicit.",
    "Quantities carry unit and basis.",
    "EBOM and MBOM remain separate masters.",
    "Reconciliation is an evidenced mapping.",
    "Plan material never proves actual consumption.",
    "Yield and scrap remain assumptions until observed.",
    "Published versions are immutable.",
    "Missing evidence remains explicitly unknown and never defaults to zero, absent or not-applicable.",
    "Identifiers are never reused; retirement writes a tombstone and the retired identifier stays resolvable."
  ],
  "holds": [
    "Registry allocation is pending and no identifier may be guessed.",
    "Independent Grok review and one frozen semantic audit are pending.",
    "Base specifications and approved relations remain incomplete.",
    "Package conversion and live verification are pending.",
    "WM-OBJ-019 to WM-OBJ-002 is simultaneously asserted as parent, COMPOSE and REFERENCE; unresolved.",
    "WM-OBJ-018 as child of WM-OBJ-002 conflicts with its own required REFERENCE boundary; unresolved.",
    "WM-SFT-012 and WM-SFT-008 claim CHILD of WM-SFT-007 while the ledger records REFERENCE or no edge; unresolved.",
    "WM-OBJ-012, WM-OBJ-020, WM-OBJ-021, WM-OBJ-022 and WM-ACT-015 are dangling relation targets.",
    "CLASSIFIES is absent from the relation enum; WM-OBJ-017 expresses it as REFERENCE, diverging from the relations ledger.",
    "WM-ACT-007 is maintenance-scoped with unresolved K11 duplication."
  ],
  "promotionBlocked": true,
  "identifierAllocationBlocked": true,
  "publicationHold": true,
  "decisionEnum": "NEW_MODEL_UNASSIGNED",
  "sharedShapes": {
    "Quantity": {
      "value": "<decimal-string|null>",
      "unitCode": "<string>",
      "unitCodeListRef": "<string>",
      "unitCodeListVersion": "<string>",
      "basis": "per-each|per-parent-assembly|per-batch|per-unit-length|per-unit-mass|per-unit-volume|per-operation",
      "basisParentQuantity": {
        "value": "<decimal-string>",
        "unitCode": "<string>"
      },
      "rounding": "none|half-up|half-even|ceil|floor",
      "unknownReason": "null|unknown|not-applicable|withheld"
    },
    "AssertionBasis": "declared|observed|inferred",
    "Timestamp": "<rfc3339-with-mandatory-explicit-offset>"
  },
  "sharedRules": [
    "Quantity.value and Quantity.unknownReason are mutually exclusive and exactly one is non-null.",
    "Zero never denotes unknown, not-applicable or withheld.",
    "Declared, observed and inferred assertions never merge and never overwrite one another.",
    "Event, effective, observation, record, posting, ingestion, publication and correction times are distinct fields and never collapse."
  ],
  "enums": {
    "referenceStatus": [
      "verified-supplied",
      "unverified-draft",
      "dangling",
      "unassigned-candidate"
    ]
  }
}
