{
  "format": "vercy-enterprise-profile-candidate/v1",
  "contourId": "EM-WRK-05",
  "name": "Enterprise Capacity Planning and Allocation",
  "profileVersion": "0.1.0-candidate.2",
  "decision": "PROFILE",
  "allocationState": "profile-only-no-runtime-id",
  "newRuntimeId": false,
  "canonicalPublishable": false,
  "bases": [
    "WM-ACT-008"
  ],
  "referencedMasters": [
    "WM-ORG-016",
    "WM-ECO-012",
    "WM-PER-001",
    "WM-OBJ-001",
    "WM-XCT-009",
    "WM-FLW-015"
  ],
  "objects": {
    "CapacityPlanProfile": {
      "base": "WM-ACT-008",
      "required": [
        "planId",
        "planRevision",
        "poolVersionRefs",
        "demandVersionRefs",
        "calendarRefs",
        "tzdbRelease",
        "unitSchemeVersion",
        "planningHorizon",
        "aggregationWindows"
      ]
    },
    "AllocationScenario": {
      "identity": [
        "planId",
        "planRevision",
        "scenarioId"
      ],
      "required": [
        "releasedAt",
        "contentDigest",
        "assumptions"
      ],
      "optional": [
        "baselineDecisionRef"
      ],
      "rule": "immutable after release; a new plan revision requires a new scenario release"
    },
    "ResourceAllocation": {
      "identity": [
        "scenarioId",
        "allocationId"
      ],
      "required": [
        "demandVersionRef",
        "poolVersionRef",
        "interval",
        "quantity",
        "quantityCharacter",
        "status",
        "capacityBasis"
      ],
      "optional": [
        "memberRef",
        "expiresAt",
        "assignmentRequestRef"
      ],
      "status": [
        "proposed",
        "reserved",
        "confirmed",
        "lapsed",
        "cancelled",
        "superseded"
      ]
    },
    "CapacityBasis": {
      "required": [
        "poolVersionRef",
        "interval",
        "aggregationWindow",
        "absoluteAmount",
        "poolUnit"
      ]
    },
    "ReservationExpiry": {
      "required": [
        "instant",
        "ianaZone",
        "tzdbRelease",
        "calendarBasis",
        "expiryClock"
      ],
      "rule": "lapse is derived at evaluation time and never mutates a released allocation"
    }
  },
  "constraints": [
    "Scenario identity accompanies every capacity and allocation assertion.",
    "Released scenarios and allocations are immutable; rebase creates a new scenario release.",
    "Prior scenarios and baselines remain resolvable and are never silently repointed.",
    "Conflict is evaluated within one scenario, interval, quantity kind, unit and character at pool aggregate and identified-member levels.",
    "Stock, rate and share are distinct quantity characters.",
    "Share records absolute amount and pinned capacity basis.",
    "Rate and share require an aggregation window.",
    "Overlap conflict and window-aggregate conflict have separate predicates and clearing conditions.",
    "Reservation lapse is derived from expiresAt and evaluation instant.",
    "Confirmation emits an outbound assignment request reference; WM-ORG-016 independently accepts or refuses it and no master is amended.",
    "Plan, reservation, allocation, schedule, assignment and consumption remain distinct.",
    "FTE, GPU-hours and currency are never summed.",
    "Alternative scenarios are never summed.",
    "Overbooking applies only to divisible aggregate capacity, never exclusive members.",
    "Every negative fixture has an enforceable expectedCode."
  ],
  "holds": [
    "Resource Demand and Resource Pool remain identifier-unassigned.",
    "Base publication and relation-contract holds remain.",
    "Profile is not canonical or installable."
  ]
}
