{
  "format": "vercy-model-allocation-candidate/v1",
  "contourId": "EM-PEO-05",
  "proposedName": "Learning Program",
  "modelId": null,
  "registryId": null,
  "allocationState": "unassigned",
  "decision": "NEW MODEL",
  "canonicalPublishable": false,
  "identityTest": {
    "stableIdentity": "A reusable curriculum definition remains identifiable independently of deliveries, enrollments and learner outcomes.",
    "versionIdentity": "Changes to objectives, curriculum, prerequisites or assessment policy create an immutable successor version.",
    "independentLifecycle": [
      "draft",
      "reviewed",
      "approved",
      "released",
      "effective",
      "deprecated",
      "retired"
    ],
    "mastership": "authorized curriculum steward"
  },
  "boundary": {
    "owns": [
      "learning-program identity",
      "immutable curriculum versions",
      "learning objectives",
      "curriculum structure",
      "prerequisites",
      "assessment and completion policy",
      "successor history"
    ],
    "references": [
      {
        "target": "WM-ACT-038",
        "purpose": "Scheduled delivery",
        "contractState": "provisional"
      },
      {
        "target": "WM-PER-008",
        "purpose": "Learning result and qualification",
        "contractState": "provisional"
      },
      {
        "target": "WM-ACT-034",
        "purpose": "Assessment result",
        "contractState": "provisional"
      },
      {
        "target": "WM-KNW-013",
        "purpose": "Pinned criteria",
        "contractState": "provisional"
      }
    ],
    "excludes": [
      "delivery or cohort",
      "enrollment",
      "attendance",
      "assessment occurrence",
      "learning result",
      "credential"
    ]
  },
  "objects": {
    "LearningProgram": {
      "identity": [
        "learningProgramId"
      ],
      "required": [
        "name",
        "ownerRef",
        "status",
        "recordedAt",
        "recordedBy"
      ],
      "optional": [
        "predecessorRef"
      ]
    },
    "ProgramVersion": {
      "identity": [
        "learningProgramId",
        "version"
      ],
      "required": [
        "objectiveVersions",
        "curriculum",
        "validFrom",
        "recordedAt",
        "recordedBy",
        "contentDigest",
        "assessmentCriteriaPin"
      ],
      "optional": [
        "prerequisites",
        "validTo",
        "predecessorRef"
      ],
      "objectiveVersionIdentity": [
        "learningProgramId",
        "programVersion",
        "objectiveId",
        "objectiveVersion"
      ],
      "assessmentCriteriaAuthority": "assessmentCriteriaPin is authoritative; assessment policy and WM-KNW-013 are referenced through that immutable pin"
    }
  },
  "invariants": [
    "A program may exist without a delivery.",
    "Published versions are immutable.",
    "Objectives have stable version-scoped identifiers.",
    "Prerequisites are explicit.",
    "Definition and delivery remain distinct.",
    "Enrollment remains external.",
    "Completion policy never proves achievement.",
    "Assessment criteria are pinned.",
    "Supersession preserves historical results.",
    "A program grants no qualification or credential.",
    "Missing outcome evidence remains unknown.",
    "Provider delivery does not mutate curriculum authority.",
    "One Program Version may address several version-scoped objectives.",
    "Each Delivery pins exactly one immutable Program Version.",
    "Cancelling a Delivery never deletes or versions the Program.",
    "Course-versus-curriculum grain remains governed and creates no implicit Course root.",
    "Program Version objective identities are addressable and scoped to exactly one Program Version.",
    "Released curriculum versions are distinct from canonical model publication.",
    "Every state append records actor and time."
  ],
  "holds": [
    "Registry allocation is pending and no identifier may be guessed.",
    "All base specifications and relation contracts remain provisional reviewable drafts.",
    "Privacy, retention, source pins and executable conformance remain pending.",
    "Package conversion and live verification are pending.",
    "Frozen audit returned REVISE at revision 2; all 44 checklist items were remediated once without audit rerun."
  ],
  "candidateRevision": 3,
  "digestPolicy": {
    "algorithm": "SHA-256",
    "canonicalization": "UTF-8 canonical JSON with sorted object keys and no insignificant whitespace",
    "coverage": "all fields bearing on released semantics",
    "verification": "asserted and unverified until live conformance closes"
  },
  "privacyPolicy": {
    "purposeLimited": true,
    "minimumDisclosure": true,
    "disclosureScopeRequired": true,
    "evidenceMinimized": true,
    "unknownDistinctFromAbsent": true
  },
  "lifecycles": {
    "program": [
      "draft",
      "reviewed",
      "approved",
      "released",
      "effective",
      "deprecated",
      "retired"
    ],
    "version": [
      "draft",
      "released",
      "effective",
      "superseded",
      "retired"
    ]
  },
  "invariantRules": [
    {
      "id": "LP-INV-01",
      "text": "A program may exist without a delivery."
    },
    {
      "id": "LP-INV-02",
      "text": "Published versions are immutable."
    },
    {
      "id": "LP-INV-03",
      "text": "Objectives have stable version-scoped identifiers."
    },
    {
      "id": "LP-INV-04",
      "text": "Prerequisites are explicit."
    },
    {
      "id": "LP-INV-05",
      "text": "Definition and delivery remain distinct."
    },
    {
      "id": "LP-INV-06",
      "text": "Enrollment remains external."
    },
    {
      "id": "LP-INV-07",
      "text": "Completion policy never proves achievement."
    },
    {
      "id": "LP-INV-08",
      "text": "Assessment criteria are pinned."
    },
    {
      "id": "LP-INV-09",
      "text": "Supersession preserves historical results."
    },
    {
      "id": "LP-INV-10",
      "text": "A program grants no qualification or credential."
    },
    {
      "id": "LP-INV-11",
      "text": "Missing outcome evidence remains unknown."
    },
    {
      "id": "LP-INV-12",
      "text": "Provider delivery does not mutate curriculum authority."
    },
    {
      "id": "LP-INV-13",
      "text": "One Program Version may address several version-scoped objectives."
    },
    {
      "id": "LP-INV-14",
      "text": "Each Delivery pins exactly one immutable Program Version."
    },
    {
      "id": "LP-INV-15",
      "text": "Cancelling a Delivery never deletes or versions the Program."
    },
    {
      "id": "LP-INV-16",
      "text": "Course-versus-curriculum grain remains governed and creates no implicit Course root."
    },
    {
      "id": "LP-INV-17",
      "text": "Program Version objective identities are addressable and scoped to exactly one Program Version."
    },
    {
      "id": "LP-INV-18",
      "text": "Released curriculum versions are distinct from canonical model publication."
    },
    {
      "id": "LP-INV-19",
      "text": "Every state append records actor and time."
    }
  ]
}
