{
  "format": "vercy-enterprise-profile-fixtures/v1",
  "profileName": "Enterprise Data Landscape and Analytical Lineage View",
  "cases": [
    {
      "id": "kpi-version-change",
      "kind": "positive",
      "validationShapeId": "comparability",
      "input": "Headcount changes from Method A/P1 to FTE Method B/P2.",
      "expect": "A successor metric definition is required and same-title reports must be non-comparable.",
      "expectedVerdict": "accept-with-non-comparable-verdict"
    },
    {
      "id": "frozen-report-issues",
      "kind": "positive",
      "validationShapeId": "stale-propagation",
      "input": "Issue A pins v1 while Issue B pins v2.",
      "expect": "Both remain citable and conclusions based on A must carry stale-input without rewrite.",
      "expectedVerdict": "accept-with-stale-marker"
    },
    {
      "id": "withheld-lineage",
      "kind": "positive",
      "validationShapeId": "rights-inheritance",
      "input": "A source segment is inaccessible.",
      "expect": "The view marks it withheld with pinned policy provenance rather than absent.",
      "expectedVerdict": "accept-with-withheld-marker"
    },
    {
      "id": "name-proves-derivation",
      "kind": "negative",
      "validationShapeId": "lineage-evidence",
      "input": "Same-name columns are linked as direct lineage.",
      "expect": "Reject without version-addressed endpoints and evidence.",
      "expectedVerdict": "reject"
    },
    {
      "id": "successful-run-proves-quality",
      "kind": "negative",
      "validationShapeId": "run-separation",
      "input": "Run success is treated as proof of quality, freshness or acceptance.",
      "expect": "Reject every inference.",
      "expectedVerdict": "reject"
    },
    {
      "id": "missing-edge-absence",
      "kind": "negative",
      "validationShapeId": "completeness-perimeter",
      "input": "An unobserved dependency is declared absent outside an exact closed perimeter.",
      "expect": "Reject the absence claim.",
      "expectedVerdict": "reject"
    },
    {
      "id": "projection-widens-rights",
      "kind": "negative",
      "validationShapeId": "rights-inheritance",
      "input": "A projection exposes a restricted source without a policy pin.",
      "expect": "Reject the projection.",
      "expectedVerdict": "reject"
    },
    {
      "id": "projection-mints-identity",
      "kind": "negative",
      "validationShapeId": "projection-identity",
      "input": "A landscape is assigned a new landscape-class identity.",
      "expect": "Reject; published identity must be an existing WM-DAT-008 Data Product.",
      "expectedVerdict": "reject"
    },
    {
      "id": "handle-owns-lineage-edge",
      "kind": "negative",
      "validationShapeId": "projection-identity",
      "input": "A reusable handle owns a lineage edge.",
      "expect": "Reject handle mastership.",
      "expectedVerdict": "reject"
    },
    {
      "id": "issued-at-missing",
      "kind": "negative",
      "validationShapeId": "issued-at",
      "input": "A projection lacks issued-at or immutable observed set.",
      "expect": "Reject as non-citable.",
      "expectedVerdict": "reject"
    },
    {
      "id": "as-of-versus-issued-at",
      "kind": "positive",
      "validationShapeId": "issued-at",
      "input": "Two projections share as-of but differ in issued-at after source changes.",
      "expect": "Preserve two citable issued projections; never re-resolve the earlier.",
      "expectedVerdict": "accept-distinct-issues"
    },
    {
      "id": "definition-amended-in-place",
      "kind": "negative",
      "validationShapeId": "successor-only",
      "input": "Released metric v1 is edited in place.",
      "expect": "Reject; require a successor version.",
      "expectedVerdict": "reject"
    },
    {
      "id": "retry-alters-issued-report",
      "kind": "negative",
      "validationShapeId": "successor-only",
      "input": "A retry rewrites pinned inputs of an issued report.",
      "expect": "Reject; require a successor issue.",
      "expectedVerdict": "reject"
    },
    {
      "id": "observation-two-definitions",
      "kind": "negative",
      "validationShapeId": "definition-occurrence",
      "input": "One observation binds two metric versions.",
      "expect": "Reject.",
      "expectedVerdict": "reject"
    },
    {
      "id": "lineage-endpoint-unversioned",
      "kind": "negative",
      "validationShapeId": "lineage-edge-shape",
      "input": "An edge endpoint uses dataset name only.",
      "expect": "Reject; require version or partition addressing.",
      "expectedVerdict": "reject"
    },
    {
      "id": "inferred-edge-supports-absence",
      "kind": "negative",
      "validationShapeId": "lineage-inference",
      "input": "Inferred edges satisfy a perimeter absence claim.",
      "expect": "Reject.",
      "expectedVerdict": "reject"
    },
    {
      "id": "impact-result-classes",
      "kind": "positive",
      "validationShapeId": "impact-classes",
      "input": "Traverse a v1 to v2 metric change.",
      "expect": "Return four labelled result sets; reject a flat list.",
      "expectedVerdict": "accept-four-labelled-sets"
    },
    {
      "id": "comparability-verdict-missing",
      "kind": "negative",
      "validationShapeId": "comparability",
      "input": "A same-title cluster without verdict is called comparable.",
      "expect": "Reject; default is non-comparable.",
      "expectedVerdict": "reject"
    },
    {
      "id": "code-system-version-change",
      "kind": "negative",
      "validationShapeId": "comparability",
      "input": "Unit code-system version changes but is called comparable.",
      "expect": "Reject; at minimum require comparable-with-restatement.",
      "expectedVerdict": "reject"
    },
    {
      "id": "live-dashboard-cited",
      "kind": "negative",
      "validationShapeId": "report-citability",
      "input": "A live dashboard is cited without frozen issue.",
      "expect": "Reject.",
      "expectedVerdict": "reject"
    },
    {
      "id": "report-pin-incomplete",
      "kind": "negative",
      "validationShapeId": "report-pins",
      "input": "A report omits cutoff or input digests.",
      "expect": "Reject as citable or reproducible.",
      "expectedVerdict": "reject"
    },
    {
      "id": "perimeter-scope-mismatch",
      "kind": "negative",
      "validationShapeId": "completeness-perimeter",
      "input": "Perimeter scope/time misses the issued observed set.",
      "expect": "Reject absence claim.",
      "expectedVerdict": "reject"
    },
    {
      "id": "perimeter-edition-unpinned",
      "kind": "negative",
      "validationShapeId": "completeness-perimeter",
      "input": "Perimeter has no edition pin.",
      "expect": "Reject absence claim.",
      "expectedVerdict": "reject"
    },
    {
      "id": "crosswalk-edition-superseded",
      "kind": "positive",
      "validationShapeId": "freshness",
      "input": "Crosswalk is superseded after issue.",
      "expect": "Mark issued projection stale without re-resolving mappings.",
      "expectedVerdict": "accept-with-stale-marker"
    },
    {
      "id": "run-success-not-freshness-or-acceptance",
      "kind": "negative",
      "validationShapeId": "run-separation",
      "input": "Run success proves freshness or acceptance.",
      "expect": "Reject.",
      "expectedVerdict": "reject"
    },
    {
      "id": "gap-class-collapse",
      "kind": "negative",
      "validationShapeId": "gap-classes",
      "input": "Suppressed or not-applicable renders as zero or missing.",
      "expect": "Reject; keep all five classes distinct.",
      "expectedVerdict": "reject"
    },
    {
      "id": "stale-input-propagation",
      "kind": "positive",
      "validationShapeId": "stale-propagation",
      "input": "Metric v2 supersedes v1 after a conclusion pinned to Issue A.",
      "expect": "Conclusion must carry stale-input and remain unrewritten.",
      "expectedVerdict": "accept-with-stale-marker"
    },
    {
      "id": "incomplete-input-propagation",
      "kind": "positive",
      "validationShapeId": "incomplete-propagation",
      "input": "A v2 observation is a coded gap.",
      "expect": "Dependent finding must carry incomplete-input naming the gap code.",
      "expectedVerdict": "accept-with-incomplete-marker"
    },
    {
      "id": "finding-without-scope",
      "kind": "negative",
      "validationShapeId": "finding-integrity",
      "input": "A finding lacks scope, assumptions, defeaters or evidence.",
      "expect": "Reject.",
      "expectedVerdict": "reject"
    },
    {
      "id": "rights-policy-unpinned",
      "kind": "negative",
      "validationShapeId": "rights-inheritance",
      "input": "Issued projection omits policy version or fingerprint.",
      "expect": "Reject.",
      "expectedVerdict": "reject"
    },
    {
      "id": "rights-relaxation-mutates-issue",
      "kind": "negative",
      "validationShapeId": "rights-inheritance",
      "input": "A later policy reveals withheld data inside the same issue.",
      "expect": "Reject; require successor issue.",
      "expectedVerdict": "reject"
    },
    {
      "id": "withheld-recoverable-by-difference",
      "kind": "negative",
      "validationShapeId": "privacy-differencing",
      "input": "Two aggregates reveal a withheld slice by difference.",
      "expect": "Reject absent cohort/privacy control binding.",
      "expectedVerdict": "reject"
    },
    {
      "id": "unallocated-metric-reference",
      "kind": "negative",
      "validationShapeId": "conditional-dependency",
      "input": "Profile claims a resolved metric ID while EM-DAT-05 is unassigned.",
      "expect": "Reject; keep dependency conditional.",
      "expectedVerdict": "reject"
    },
    {
      "id": "unpublished-base-resolved",
      "kind": "negative",
      "validationShapeId": "conditional-dependency",
      "input": "WM-REC-002 is treated as resolved.",
      "expect": "Reject until publication specification exists.",
      "expectedVerdict": "reject"
    }
  ]
}
