{
  "format": "vercy-enterprise-allocation-fixtures/v1",
  "candidateName": "Reusable Evaluation Protocol",
  "labelScope": "fixture-local synthetic labels; not registry, model, catalogue or runtime identifiers",
  "cases": [
    {
      "id": "candidate-remains-held-and-unassigned",
      "kind": "positive",
      "invariants": [
        17
      ],
      "pins": {
        "allocationState": "unassigned",
        "modelId": null,
        "registryId": null,
        "presentIndependentIdentity": false
      },
      "input": "The checkpoint records the candidate without an identifier or independently resolvable reference.",
      "expect": "Accepted as a held research candidate; nothing is allocated or published.",
      "expectedCode": "CANDIDATE_HELD_UNASSIGNED"
    },
    {
      "id": "unassigned-candidate-not-referenceable",
      "kind": "negative",
      "invariants": [
        17
      ],
      "pins": {
        "allocationState": "unassigned",
        "modelId": null
      },
      "input": "A public artifact references this candidate as an identified model.",
      "expect": "Rejected; no identifier is allocated and the candidate has no present independent identity.",
      "expectedCode": "UNASSIGNED_CANDIDATE_REFERENCE"
    },
    {
      "id": "protocol-text-reuse-without-governance",
      "kind": "negative",
      "invariants": [
        17
      ],
      "pins": {
        "protocolTextDigest": "identical",
        "occurrences": 2,
        "independentVersioning": false,
        "independentApproval": false,
        "allocationState": "unassigned",
        "modelId": null
      },
      "input": "Identical protocol text applied in two evaluation occurrences is offered as proof of independent protocol identity.",
      "expect": "Rejected; verbatim reuse without independent versioning and approval leaves the applied protocol WM-AI-003-contained and allocates nothing.",
      "expectedCode": "NO_INDEPENDENT_IDENTITY"
    },
    {
      "id": "protocol-claims-metric-mastership",
      "kind": "negative",
      "invariants": [
        6
      ],
      "pins": {
        "claimedOwnership": "metric definition",
        "externalMaster": "WM-AI-009",
        "allocationState": "unassigned"
      },
      "input": "The candidate asserts ownership of metric, task-contract or threshold definitions.",
      "expect": "Rejected; those definitions retain WM-AI-009 mastership and the candidate may only select and bind them.",
      "expectedCode": "MASTERSHIP_LEAK"
    },
    {
      "id": "candidate-mastership-asserted-without-frozen-master",
      "kind": "negative",
      "invariants": [
        17
      ],
      "pins": {
        "mastership": "asserted governance authority",
        "frozenMasterExists": false,
        "allocationState": "unassigned"
      },
      "input": "The candidate declares a governance or authorization authority as its mastership.",
      "expect": "Rejected; mastership is null and held while no frozen master exists.",
      "expectedCode": "CANDIDATE_MASTERSHIP_UNRESOLVED"
    },
    {
      "id": "identifier-inferred-from-sequence",
      "kind": "negative",
      "invariants": [
        17
      ],
      "pins": {
        "allocationState": "unassigned",
        "modelId": null,
        "registryId": null,
        "inferenceAttempt": "next free identifier in contour series"
      },
      "input": "An identifier is inferred for the candidate from registry sequence or contour position.",
      "expect": "Rejected; no identifier may be allocated, inferred or guessed at this checkpoint.",
      "expectedCode": "UNASSIGNED_CANDIDATE_REFERENCE"
    },
    {
      "id": "allocation-request-with-complete-conditions",
      "kind": "negative",
      "invariants": [
        17
      ],
      "pins": {
        "independentLifecycleEvidence": "supplied",
        "independentMastershipEvidence": "supplied",
        "reuseEvidence": "supplied",
        "registryReviewCompleted": false,
        "allocationState": "unassigned"
      },
      "input": "A proposal supplies lifecycle, mastership and reuse evidence and requests allocation at this checkpoint.",
      "expect": "Rejected at this checkpoint; the candidate stays held and unassigned until registry review completes and records the allocation.",
      "expectedCode": "ALLOCATION_REQUIRES_REGISTRY_REVIEW"
    }
  ]
}
