{
  "format": "vercy-world-model-fixtures/v1",
  "modelId": "WM-SFT-016",
  "version": "0.1.0-candidate.2",
  "cases": [
    {
      "id": "three-service-journey-gap",
      "kind": "negative",
      "input": "An unassigned descriptive journey across three Services has a telemetry gap and is offered for evaluation.",
      "expect": "Rejected as a commitment subject; each identified Service is evaluated separately and missing coverage yields unknown.",
      "ruleRefs": [
        "SUBJECT-TYPE",
        "VERDICT-REPORT"
      ]
    },
    {
      "id": "binding-version-change",
      "kind": "positive",
      "input": "A coverage-only source binding changes while SLI meaning is unchanged.",
      "expect": "A successor binding version is used without succeeding policy; the evaluation stamps both versions.",
      "ruleRefs": [
        "BIND-CHANGE",
        "STAMP-VERSIONS"
      ]
    },
    {
      "id": "overlapping-binding-rejected",
      "kind": "negative",
      "input": "Two bindings overlap for the same Service, SLI and instant.",
      "expect": "The overlap is rejected; exactly one binding version may be effective.",
      "ruleRefs": [
        "BIND-UNIQUE"
      ]
    },
    {
      "id": "multi-stream-combination",
      "kind": "positive",
      "input": "Two observation streams jointly cover one SLI slice.",
      "expect": "The binding declares deterministic union/join, precedence, de-duplication and absence behavior.",
      "ruleRefs": [
        "BIND-COMBINE"
      ]
    },
    {
      "id": "absence-mapping-successor",
      "kind": "negative",
      "input": "A new producible absence class is mapped to failure under an active policy without succession.",
      "expect": "Rejected; the policy-owned mapping change requires a successor policy.",
      "ruleRefs": [
        "ABSENCE-MAP"
      ]
    },
    {
      "id": "empty-eligible-population",
      "kind": "positive",
      "input": "Coverage is complete but no event is eligible.",
      "expect": "Verdict is no-eligible-traffic, distinct from unknown, and budget-neutral.",
      "ruleRefs": [
        "EMPTY-POP"
      ]
    },
    {
      "id": "retroactive-exclusion-supersedes",
      "kind": "negative",
      "input": "A later authorized exclusion changes a completed denominator.",
      "expect": "A new superseding evaluation is appended and the predecessor remains retained.",
      "ruleRefs": [
        "EXCLUSION-SUPERSEDE"
      ]
    },
    {
      "id": "policy-retraction",
      "kind": "positive",
      "input": "An issued policy is retracted after evaluations exist.",
      "expect": "Retraction closes new evaluation, retains the policy and marks affected evaluations without deleting them.",
      "ruleRefs": [
        "RETRACTION"
      ]
    },
    {
      "id": "partial-window-transition",
      "kind": "positive",
      "input": "A rolling window succeeds to a calendar window mid-period.",
      "expect": "Successor windows are contiguous/non-overlapping; the partial window and reset/carry/prorate choice are recorded immutably.",
      "ruleRefs": [
        "WINDOW-TRANSITION"
      ]
    },
    {
      "id": "service-retirement",
      "kind": "positive",
      "input": "The Service retires while its policy has historical evaluations.",
      "expect": "The policy closes to new evaluation and historical stamped subject identifiers remain resolvable.",
      "ruleRefs": [
        "SUBJECT-LIFECYCLE"
      ]
    },
    {
      "id": "service-reidentification",
      "kind": "negative",
      "input": "A Service merge silently replaces the subject identifier on an existing policy.",
      "expect": "Rejected; a successor policy is required and prior evaluations retain the old identifier.",
      "ruleRefs": [
        "SUBJECT-LIFECYCLE"
      ]
    },
    {
      "id": "calendar-discontinuity",
      "kind": "negative",
      "input": "A timezone or calendar change creates overlapping successor windows.",
      "expect": "Rejected under pinned WM-XCT-009 authority; intervals must be contiguous and non-overlapping.",
      "ruleRefs": [
        "CALENDAR"
      ]
    },
    {
      "id": "journey-evaluation-rejected",
      "kind": "negative",
      "input": "An unassigned User Journey is offered as an evaluable commitment subject.",
      "expect": "Rejected; only an identified Service is evaluable until journey identity, membership and aggregation are allocated.",
      "ruleRefs": [
        "SUBJECT-TYPE"
      ]
    },
    {
      "id": "sla-semantic-leak",
      "kind": "negative",
      "input": "A contract defines the SLI or treats an SLO miss as breach without explicit mapping.",
      "expect": "Rejected by the two-way SLA firewall; breach semantics remain contract-owned.",
      "ruleRefs": [
        "SLA-FIREWALL"
      ]
    },
    {
      "id": "verdict-coverage-reporting",
      "kind": "positive",
      "input": "An evaluation produces a verdict with partially unknown attempts.",
      "expect": "The record reports coverageRatio and unknownCount in addition to the verdict.",
      "ruleRefs": [
        "VERDICT-REPORT"
      ]
    },
    {
      "id": "diagnostic-not-authoritative",
      "kind": "negative",
      "input": "A healthy instance metric is used directly as a Service verdict and budget input.",
      "expect": "Rejected; diagnostics may support triage only.",
      "ruleRefs": [
        "DIAGNOSTIC"
      ]
    }
  ]
}
