{
  "format": "vercy-model-allocation-candidate/v1",
  "contourId": "EM-OPS-03",
  "proposedName": "Maintenance Plan",
  "modelId": null,
  "registryId": null,
  "allocationState": "unassigned",
  "decision": "NEW MODEL",
  "canonicalPublishable": false,
  "identityTest": {
    "stableIdentity": "A governed recurring maintenance definition remains identifiable independently of assets, work orders and performed events.",
    "versionIdentity": "Changes to intervals, triggers, resources, applicability or acceptance policy create an immutable successor version.",
    "independentLifecycle": [
      "draft",
      "reviewed",
      "approved",
      "published",
      "effective",
      "suspended",
      "superseded",
      "retired"
    ],
    "mastership": "enterprise maintenance planning authority"
  },
  "boundary": {
    "owns": [
      "maintenance-plan identity",
      "immutable plan versions",
      "recurring intervals and triggers",
      "asset applicability",
      "required resource classes",
      "maintenance policy and acceptance templates",
      "successor history"
    ],
    "references": [
      {
        "target": "WM-OBJ-001",
        "purpose": "Asset instance"
      },
      {
        "target": "WM-ACT-007",
        "purpose": "Work authorization"
      },
      {
        "target": "WM-MAT-008",
        "purpose": "Condition observation"
      },
      {
        "target": "WM-ACT-034",
        "purpose": "Condition assessment"
      }
    ],
    "excludes": [
      "asset identity",
      "work-order authorization",
      "performed maintenance",
      "calibration result",
      "condition observation",
      "resource instance"
    ]
  },
  "objects": {
    "MaintenancePlan": {
      "identity": [
        "maintenancePlanId"
      ],
      "required": [
        "name",
        "ownerRef",
        "status"
      ],
      "optional": [
        "successorRef"
      ]
    },
    "PlanVersion": {
      "identity": [
        "maintenancePlanId",
        "version"
      ],
      "required": [
        "applicability",
        "rules",
        "validFrom",
        "contentDigest"
      ],
      "optional": [
        "validTo",
        "supersedesVersion"
      ],
      "applicability": {
        "required": [
          "scopeKind",
          "scopeExpression"
        ],
        "scopeKind": [
          "instance",
          "type",
          "variant",
          "configuration",
          "location"
        ],
        "resolution": "explicit-instance-resolution-required"
      }
    }
  },
  "invariants": [
    "A plan may exist before applicable assets.",
    "Published versions are immutable.",
    "Intervals pin calendar and unit semantics.",
    "Triggers distinguish schedule, usage, condition and event bases.",
    "Applicability is explicit and versioned.",
    "A plan never proves work authorization.",
    "A plan never proves performed work.",
    "Resources are requirements, not actual consumption.",
    "Acceptance templates do not become event evidence.",
    "Retirement preserves historical work references.",
    "Missing observations remain unknown.",
    "Calibration requirements never imply calibration success.",
    "Plan applicability at type, variant or configuration scope never establishes instance-level calibration, fitness or coverage."
  ],
  "holds": [
    "Registry allocation is pending and no identifier may be guessed.",
    "One frozen semantic audit is complete; base specifications and approved relations remain incomplete.",
    "WM-OBJ-023 is the reserved measuring-instrument/configuration boundary, is a completion dependency of EM-OPS-03, and receives no allocation here.",
    "Package conversion and live verification are pending."
  ],
  "completionDependencies": [
    "WM-OBJ-023"
  ]
}
