{
  "format": "vercy-enterprise-allocation-fixtures/v1",
  "candidateName": "Recruitment Requisition",
  "cases": [
    {
      "id": "two-seat-request",
      "kind": "positive",
      "input": "One approved requisition authorizes two seats and two openings.",
      "expect": "Normatively, one authorization traces to two openings without merging their identities.",
      "rules": [
        "REQ-INV-01"
      ]
    },
    {
      "id": "partial-fill",
      "kind": "positive",
      "input": "One seat is filled while the second remains open.",
      "expect": "Normatively, the requisition becomes partially filled and preserves the remaining count.",
      "rules": [
        "REQ-INV-02"
      ]
    },
    {
      "id": "cancel-after-opening",
      "kind": "positive",
      "input": "The employer cancels the remaining need after one fill.",
      "expect": "Normatively, cancellation preserves the filled employment and historical opening.",
      "rules": [
        "REQ-INV-03"
      ]
    },
    {
      "id": "derived-vacancy-is-opening",
      "kind": "negative",
      "input": "Calculated vacant capacity automatically creates an asserted opening.",
      "expect": "Normatively, the transition is rejected.",
      "rules": [
        "REQ-INV-04"
      ]
    },
    {
      "id": "approval-is-employment",
      "kind": "negative",
      "input": "Approval of the requisition creates employment.",
      "expect": "Normatively, the inference is rejected.",
      "rules": [
        "REQ-INV-05"
      ]
    },
    {
      "id": "posting-is-requisition",
      "kind": "negative",
      "input": "A public posting is used as the authorization master.",
      "expect": "Normatively, the identity merge is rejected.",
      "rules": [
        "REQ-INV-06"
      ]
    },
    {
      "id": "standing-no-opening",
      "kind": "positive",
      "input": "An approved standing requisition has no current opening or campaign.",
      "expect": "Normatively, the requisition remains valid without minting an opening.",
      "rules": [
        "REQ-INV-07"
      ]
    },
    {
      "id": "seat-cap-overrun",
      "kind": "negative",
      "input": "Two fills and one outstanding accepted offer are recorded against a two-seat authorization.",
      "expect": "Normatively, the state is rejected unless an attributable cap increase exists.",
      "rules": [
        "REQ-INV-08"
      ]
    },
    {
      "id": "internal-mobility-no-opening",
      "kind": "positive",
      "input": "An internal appointment proceeds under a requisition and decision without a public opening.",
      "expect": "Normatively, the path remains valid and does not mint an opening.",
      "rules": [
        "REQ-INV-09"
      ]
    },
    {
      "id": "approval-decision-not-root",
      "kind": "negative",
      "input": "A decision record is reused as the requisition identity.",
      "expect": "Normatively, the identity collapse is rejected.",
      "rules": [
        "REQ-INV-10"
      ]
    },
    {
      "id": "recorded-time-correction",
      "kind": "positive",
      "input": "An authorized-headcount correction is recorded after its valid date.",
      "expect": "Normatively, valid and recorded time remain distinct and history is preserved.",
      "rules": [
        "REQ-INV-11"
      ]
    },
    {
      "id": "posting-multichannel-withdrawal",
      "kind": "semantic",
      "input": "One opening is published to two channels and one posting is withdrawn.",
      "expect": "Normatively, postings retain distinct local identity and times while opening and requisition remain unchanged.",
      "rules": [
        "REQ-INV-12"
      ]
    },
    {
      "id": "selection-decision-has-owner",
      "kind": "semantic",
      "input": "A rejection has no WM-REC-010 selection decision.",
      "expect": "Normatively, status alone cannot carry the outcome and the state is non-conformant.",
      "rules": [
        "REQ-INV-13"
      ]
    },
    {
      "id": "recommendation-is-not-decision",
      "kind": "semantic",
      "input": "A non-binding recommendation is recorded without a decision.",
      "expect": "Normatively, the candidacy does not advance to selected.",
      "rules": [
        "REQ-INV-14"
      ]
    },
    {
      "id": "downstream-out-of-contour",
      "kind": "semantic",
      "input": "An accepted offer is asked to create Contract or Assignment.",
      "expect": "Normatively, creation is outside EM-PEO-04 and is refused.",
      "rules": [
        "REQ-INV-15"
      ]
    },
    {
      "id": "no-unsourced-identifier",
      "kind": "semantic",
      "input": "Every identifier token is linted against bases and source facts.",
      "expect": "Normatively, no identifier is dangling.",
      "rules": [
        "REQ-INV-16"
      ]
    },
    {
      "id": "derived-vacancy-not-referenced",
      "kind": "semantic",
      "input": "A derived vacancy projection is persisted and cited by an opening.",
      "expect": "Normatively, persistence and citation are forbidden.",
      "rules": [
        "REQ-INV-17"
      ]
    },
    {
      "id": "requested-is-not-authorized",
      "kind": "semantic",
      "input": "A draft requests three seats and is treated as authorizing them.",
      "expect": "Normatively, no seat authority exists before an approval-backed cap.",
      "rules": [
        "REQ-INV-18"
      ]
    },
    {
      "id": "cap-raise-without-decision",
      "kind": "semantic",
      "input": "The cap changes from two to three without actor or decision.",
      "expect": "Normatively, the change is non-conformant.",
      "rules": []
    },
    {
      "id": "partial-fill-arithmetic",
      "kind": "semantic",
      "input": "Cap two has one non-cancelled fill.",
      "expect": "Normatively, consumed is one, remaining is one and status is partially-filled.",
      "rules": []
    },
    {
      "id": "accepted-offer-then-employment",
      "kind": "semantic",
      "input": "An accepted offer converts to employment.",
      "expect": "Normatively, consumed seats remain one and are not double-counted.",
      "rules": []
    },
    {
      "id": "cap-evaluable-from-requisition",
      "kind": "semantic",
      "input": "Two accepted offers target different openings of a one-seat requisition.",
      "expect": "Normatively, the requisition-level cap detects the excess.",
      "rules": []
    },
    {
      "id": "version-chain-traversal",
      "kind": "semantic",
      "input": "Three versions exist and the middle is queried.",
      "expect": "Normatively, predecessor and successor are resolvable.",
      "rules": []
    },
    {
      "id": "unattributed-correction",
      "kind": "semantic",
      "input": "A backdated correction has no recorder.",
      "expect": "Normatively, it is non-conformant.",
      "rules": []
    },
    {
      "id": "approved-without-decision",
      "kind": "semantic",
      "input": "Status is approved without approvalDecisionRefs.",
      "expect": "Normatively, it is non-conformant.",
      "rules": []
    },
    {
      "id": "budget-as-funding",
      "kind": "semantic",
      "input": "Status is funded with budgetRef alone.",
      "expect": "Normatively, fundingAuthorityRef is required.",
      "rules": []
    },
    {
      "id": "closed-reopened",
      "kind": "semantic",
      "input": "A closed requisition returns to open.",
      "expect": "Normatively, a successor requisition is required.",
      "rules": []
    },
    {
      "id": "hired-vs-closed",
      "kind": "semantic",
      "input": "Two closed candidacies have hired and not-selected outcomes.",
      "expect": "Normatively, outcomes remain distinguishable without consulting Employment.",
      "rules": []
    },
    {
      "id": "reference-divergence",
      "kind": "semantic",
      "input": "Candidacy names R while R's derived index omits it.",
      "expect": "Normatively, the index is wrong and the child reference remains authoritative.",
      "rules": []
    },
    {
      "id": "disposed-reference-resolves",
      "kind": "semantic",
      "input": "A decision cites a disposed CV.",
      "expect": "Normatively, a tombstone resolves without restoring content.",
      "rules": []
    },
    {
      "id": "scopeless-candidacy",
      "kind": "semantic",
      "input": "All four recruiting-effort scope fields are absent.",
      "expect": "Normatively, structural validation rejects it.",
      "rules": []
    }
  ],
  "executable": false,
  "status": "declarative-normative-expectations"
}
