{
  "format": "vercy-model-allocation-fixtures/v1",
  "contourId": "EM-PEO-03",
  "candidateRevision": 3,
  "proposedName": "Person Capability Assertion",
  "declarative": true,
  "fixturesExecuted": false,
  "caseCount": 26,
  "cases": [
    {
      "id": "expired-is-derived-inside",
      "kind": "positive",
      "input": "An assertion has since lapsed but as-of falls inside validity.",
      "expect": "It may be returned for that as-of if evidence was in force; no stored expired flag is consulted.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "expired-is-derived-now",
      "kind": "negative",
      "input": "The same assertion is queried after validTo.",
      "expect": "It cannot support current competence.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "revalidation-successor",
      "kind": "positive",
      "input": "A capability is revalidated.",
      "expect": "A successor assertion is created and predecessor validity is unchanged.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "ab-initio-revocation",
      "kind": "negative",
      "input": "An assertion is revoked ab initio.",
      "expect": "It supports no as-of instant but its record and lineage remain readable.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "prospective-revocation",
      "kind": "positive",
      "input": "An assertion is revoked prospectively.",
      "expect": "Earlier support remains queryable and later support is excluded.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "self-foreign-asserter",
      "kind": "negative",
      "input": "A self assertion names another person as asserter.",
      "expect": "The assertion must be rejected.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "self-verified",
      "kind": "negative",
      "input": "A self assertion claims verified assurance.",
      "expect": "The assertion must be rejected.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "assessment-without-act",
      "kind": "negative",
      "input": "Basis assessment-act has no assessmentRef.",
      "expect": "The assertion must be rejected.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "evidence-without-artifact",
      "kind": "negative",
      "input": "Basis artifact-evidence has no evidenceRefs.",
      "expect": "The assertion must be rejected.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "assessed-with-evidence",
      "kind": "positive",
      "input": "An assessor claim cites an assessment act and artifacts.",
      "expect": "One assertion records both axes without duplicate claims.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "observation-before-record",
      "kind": "positive",
      "input": "Capability was observed in March and recorded in June.",
      "expect": "Decay uses March while known-at uses June.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "open-ended-not-permanent",
      "kind": "negative",
      "input": "Open-ended assertion relies on an expired credential.",
      "expect": "It cannot support current competence.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "decay-no-downgrade",
      "kind": "negative",
      "input": "A decay threshold passes.",
      "expect": "No new lower assertion or level mutation occurs.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "no-merged-score",
      "kind": "negative",
      "input": "Two methods/scales are combined into a composite level.",
      "expect": "The stored merge must be rejected; any selection is a named query policy only.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "absence-is-unknown",
      "kind": "negative",
      "input": "A staffing filter treats no assertion as not competent.",
      "expect": "The inference must be rejected unless explicitly disclosed as process policy.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "purpose-bound-projection",
      "kind": "negative",
      "input": "A staffing query requests special-category evidence content.",
      "expect": "Evidence content is withheld and the attempt is recorded.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "erasure-tombstone",
      "kind": "positive",
      "input": "A valid erasure request applies.",
      "expect": "The assertion becomes a non-supporting tombstone while identity and audit lineage remain.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "unpinned-ref",
      "kind": "negative",
      "input": "definitionVersionRef has only a concept code.",
      "expect": "The assertion must be rejected.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "dangling-party-ref",
      "kind": "negative",
      "input": "asserterRef resolves to no declared party master.",
      "expect": "The assertion must be rejected or held, never accepted as text.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "course-not-competence",
      "kind": "negative",
      "input": "Course completion attempts to create expert proficiency.",
      "expect": "No assertion is created.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "role-not-holding",
      "kind": "negative",
      "input": "Role occupancy is treated as evidence.",
      "expect": "No assertion is created.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "mapping-no-translation",
      "kind": "negative",
      "input": "A scale mapping is used to mint a target assertion.",
      "expect": "No assertion is created.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "title-not-coverage",
      "kind": "negative",
      "input": "Credential title matches definition label but has no claim binding.",
      "expect": "Coverage is not inferred.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "history-resolvable",
      "kind": "positive",
      "input": "An assertion is superseded then withdrawn.",
      "expect": "All records remain resolvable and only eligible ones support the requested as-of.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "undeclared-transition",
      "kind": "negative",
      "input": "An assertion changes state without declared operation and authority.",
      "expect": "The transition must be rejected.",
      "fixturesExecuted": false,
      "expectationOnly": true
    },
    {
      "id": "review-slug-not-id",
      "kind": "negative",
      "input": "A consumer treats the review slug as a registry ID.",
      "expect": "The registry claim must be rejected.",
      "fixturesExecuted": false,
      "expectationOnly": true
    }
  ]
}
