{
  "format": "vercy-model-allocation-candidate/v1",
  "contourId": "EM-PEO-07",
  "proposedName": "Absence",
  "modelId": null,
  "registryId": null,
  "allocationState": "unassigned",
  "decision": "NEW MODEL",
  "canonicalPublishable": false,
  "identityTest": {
    "stableIdentity": "A governed absence case remains identifiable across request, decision, cancellation and correction while its operational effect is projected separately.",
    "versionIdentity": "Changes to interval, operational category, quantity, approval or cancellation create append-only versions; a distinct absence episode creates a new case.",
    "independentLifecycle": [
      "draft",
      "requested",
      "approved",
      "rejected",
      "effective",
      "cancelled",
      "closed"
    ],
    "mastership": "workforce absence-management authority"
  },
  "boundary": {
    "owns": [
      "persistent absence identity",
      "engagement and person references",
      "effective interval and quantity",
      "operational absence category",
      "request and decision history",
      "cancellation and correction lineage",
      "minimum-disclosure classification",
      "declared operational effect consumed by the availability projection"
    ],
    "references": [
      {
        "target": "WM-PER-001",
        "purpose": "Person anchor"
      },
      {
        "target": "WM-ORG-005",
        "purpose": "Employment or engagement"
      },
      {
        "target": "WM-ORG-016",
        "purpose": "Work assignment"
      },
      {
        "target": "WM-XCT-009",
        "purpose": "Time and calendar rules"
      },
      {
        "target": "WM-ACT-008",
        "purpose": "Scheduled intent reference"
      }
    ],
    "excludes": [
      "person, employment, assignment or calendar identity",
      "clinical diagnosis or medical record",
      "worklog, timesheet or approval identity",
      "availability projection or capacity fact",
      "payroll, entitlement or legal determination",
      "automatic disclosure of protected reason",
      "protected reason storage or any forward reference to it"
    ]
  },
  "objects": {
    "Interval": {
      "identity": [],
      "required": [
        "startInstant",
        "endInstant",
        "startOffset",
        "endOffset",
        "tzid",
        "tzdbRelease",
        "durationKind"
      ],
      "optional": [
        "nominalDuration",
        "exactDuration"
      ],
      "enumerations": {
        "durationKind": [
          "exact",
          "nominal"
        ]
      }
    },
    "Absence": {
      "identity": [
        "absenceId"
      ],
      "required": [
        "personRef",
        "engagementRef",
        "status"
      ],
      "optional": [
        "closedAt",
        "relatedEpisodeRef"
      ],
      "lifecycle": [
        "draft",
        "requested",
        "approved",
        "rejected",
        "effective",
        "cancelled",
        "closed"
      ],
      "derived": {
        "status": "latestRevision.revisionStatus"
      }
    },
    "AbsenceRevision": {
      "identity": [
        "absenceId",
        "revision"
      ],
      "required": [
        "interval",
        "operationalCategory",
        "revisionStatus",
        "recordedAt",
        "actorRef"
      ],
      "optional": [
        "quantity",
        "quantityUnit",
        "quantityBasis",
        "requestRef",
        "decisionRef",
        "supersedesRevision"
      ],
      "types": {
        "interval": "Interval"
      },
      "enumerations": {
        "operationalCategory": [
          "unavailable",
          "partially-available",
          "available-with-restriction"
        ]
      },
      "coPresence": {
        "quantity": [
          "quantityUnit",
          "quantityBasis"
        ]
      }
    },
    "AbsenceProtectedReason": {
      "identity": [
        "absenceId",
        "reasonSequence"
      ],
      "required": [
        "absenceRef",
        "reasonCoding",
        "lawfulConditionRef",
        "recordedAt"
      ],
      "optional": [],
      "partition": "separately-governed",
      "linkDirection": "protected-side-to-absence-only"
    }
  },
  "invariants": [
    "Every absence names person, engagement, interval and operational category.",
    "Absence lifecycle remains separate from employment, assignment and calendar masters.",
    "Ordinary availability receives only minimum operational effect.",
    "Clinical and diagnostic reasons never enter ordinary availability.",
    "Approval, rejection, cancellation and correction remain attributable acts.",
    "Missing absence data never means present or available.",
    "Approved absence reduces planned availability only under the applicable calendar and policy.",
    "Absence never proves payroll entitlement or medical status.",
    "Cancellation preserves prior decision and effective history.",
    "Disposition never deletes person or employment records.",
    "Corrections append an AbsenceRevision and never rewrite an approved revision.",
    "An interval is rejected unless both bounds carry an explicit offset and the interval carries tzid and tzdbRelease.",
    "operationalCategory accepts only its enumerated values; any free-text, coded clinical or diagnostic value is rejected.",
    "A quantity without a declared unit, code system and basis is rejected; rounding occurs only at projection."
  ],
  "holds": [
    "Registry allocation is pending and no identifier may be guessed.",
    "Labor, privacy and medical-data policy crosswalks require jurisdictional review.",
    "FTE and nominal-duration semantics require canonical grounding.",
    "Independent Grok review and the single frozen audit are complete; 16 defects were remediated without rerun.",
    "Resolution of AbsenceProtectedReason requires an additional lawful condition per WM-PER-001 and is excluded from every default projection."
  ]
}
