{
  "format": "vercy-model-allocation-candidate/v1",
  "contourId": "EM-PEO-07",
  "proposedName": "Worklog",
  "modelId": null,
  "registryId": null,
  "allocationState": "unassigned",
  "decision": "NEW MODEL",
  "canonicalPublishable": false,
  "identityTest": {
    "stableIdentity": "A reported observation of performed work remains identifiable independently of person, assignment, task, timesheet and approval records.",
    "versionIdentity": "Corrections create linked adjustment or superseding records; a distinct reported interval or quantity creates a new worklog.",
    "independentLifecycle": [
      "draft",
      "reported",
      "submitted",
      "included",
      "superseded",
      "voided",
      "closed"
    ],
    "mastership": "performer or authorized work-reporting authority"
  },
  "boundary": {
    "owns": [
      "persistent worklog identity",
      "performer and engagement references",
      "interval or quantity and unit",
      "charge target and work reference",
      "reporting method",
      "phenomenon, result and ingestion times",
      "source and correction lineage",
      "timesheet inclusion reference"
    ],
    "references": [
      {
        "target": "WM-PER-001",
        "purpose": "Performer identity"
      },
      {
        "target": "WM-ORG-005",
        "purpose": "Engagement"
      },
      {
        "target": "WM-ORG-016",
        "purpose": "Assignment"
      },
      {
        "target": "WM-ACT-006",
        "purpose": "Task or work target"
      },
      {
        "target": "WM-XCT-009",
        "purpose": "Time rules"
      },
      {
        "target": "WM-MAT-008",
        "purpose": "Observation pattern"
      }
    ],
    "excludes": [
      "person, assignment, task or engagement identity",
      "presence, productivity or quality determination",
      "absence, availability or capacity",
      "timesheet or approval identity",
      "payroll result or invoice",
      "automatic overlap reconciliation",
      "capacity, availability or residual computation input"
    ]
  },
  "objects": {
    "Interval": {
      "identity": [],
      "required": [
        "startInstant",
        "endInstant",
        "startOffset",
        "endOffset",
        "tzid",
        "tzdbRelease",
        "durationKind"
      ],
      "optional": [
        "nominalDuration",
        "exactDuration"
      ],
      "enumerations": {
        "durationKind": [
          "exact",
          "nominal"
        ]
      }
    },
    "Worklog": {
      "identity": [
        "worklogId"
      ],
      "required": [
        "performerRef",
        "engagementRef",
        "quantity",
        "unit",
        "unitCodeSystem",
        "basis",
        "method",
        "reportedAt",
        "durationKind",
        "status"
      ],
      "optional": [
        "interval",
        "observationPeriod",
        "nominalDuration",
        "chargeTargetRef",
        "workRef",
        "resultTime",
        "ingestionTime",
        "supersedesWorklogRef",
        "supersededByWorklogRef"
      ],
      "types": {
        "interval": "Interval"
      },
      "enumerations": {
        "durationKind": [
          "exact",
          "nominal"
        ]
      },
      "exclusiveOneOf": [
        "interval",
        "observationPeriod"
      ],
      "lifecycle": [
        "draft",
        "reported",
        "submitted",
        "included",
        "superseded",
        "voided",
        "closed"
      ]
    }
  },
  "invariants": [
    "Worklog is a reported observation and never proves presence, productivity or quality.",
    "Missing worklog is unknown and explicit zero requires a record.",
    "Performer, engagement, assignment and task remain externally mastered.",
    "Result time, report time and ingestion time remain distinct.",
    "Overlapping worklogs remain recorded and are flagged rather than silently merged.",
    "Worklog inclusion never changes the source record identity.",
    "Timesheet approval never makes the worklog objectively true.",
    "Nominal and elapsed durations remain distinct.",
    "Voiding preserves provenance and prior inclusion history.",
    "Worklog never reduces planned availability, contracted capacity or allocation residual.",
    "Overlapping worklogs are reported under an elapsed-time reconciliation rule that counts each overlapping clock interval once for reporting only; the reconciled figure is never summed into capacity, availability or residual.",
    "An interval is rejected unless both bounds carry an explicit offset and the interval carries tzid and tzdbRelease.",
    "A Worklog is immutable once reported; a correction is a new worklogId carrying supersedesWorklogRef, and the predecessor transitions to superseded with its reported values intact.",
    "Every correction is bidirectionally resolvable through supersedesWorklogRef and supersededByWorklogRef.",
    "Exactly one of interval or observationPeriod is present on every Worklog.",
    "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.",
    "Effort units, overlap and payroll crosswalks require canonical governance.",
    "Package conversion and live verification are pending.",
    "Independent Grok review and the single frozen audit are complete; 16 defects were remediated without rerun."
  ]
}
