{
  "format": "vercy-world-model-fixtures/v1",
  "modelId": "WM-SFT-003",
  "version": "0.1.0-candidate.2",
  "semantics": {
    "positive": "admissible input with expected derivation",
    "negative": "input must be rejected"
  },
  "pinnedReferences": {
    "WM-DAT-004": "exact revision required by each executable fixture"
  },
  "cases": [
    {
      "id": "url-change-only",
      "kind": "positive",
      "input": "URL changes without semantic change.",
      "expect": "New exposure or endpoint address binding; same revision; no Integration conclusion until allocated.",
      "satisfies": [
        "INV-SFT003-03"
      ]
    },
    {
      "id": "mutate-published-revision",
      "kind": "negative",
      "input": "Edit a published revision in place.",
      "expect": "Reject mutation and require a new revision.",
      "violates": [
        "INV-SFT003-01"
      ]
    },
    {
      "id": "pin-to-draft",
      "kind": "negative",
      "input": "Pin a consumer to a draft revision.",
      "expect": "Reject.",
      "violates": [
        "INV-SFT003-06"
      ]
    },
    {
      "id": "new-pin-retired",
      "kind": "negative",
      "input": "Create a new pin to a retired revision.",
      "expect": "Reject while preserving history.",
      "violates": [
        "INV-SFT003-07"
      ]
    },
    {
      "id": "provider-repins",
      "kind": "negative",
      "input": "Provider writes a consumer pin.",
      "expect": "Reject incompetent authority.",
      "violates": [
        "INV-SFT003-08"
      ]
    },
    {
      "id": "unpinned-recorded",
      "kind": "positive",
      "input": "Resolve a selector and store the selected revision.",
      "expect": "Accept with RevisionResolutionRecord.",
      "satisfies": [
        "INV-SFT003-09"
      ]
    },
    {
      "id": "unrecorded-latest",
      "kind": "negative",
      "input": "Resolve latest without storing selected revision.",
      "expect": "Reject as non-reproducible.",
      "violates": [
        "INV-SFT003-09"
      ]
    },
    {
      "id": "dual-run",
      "kind": "positive",
      "input": "Two pins overlap under explicit migration scopes.",
      "expect": "Accept both scoped rows.",
      "satisfies": [
        "INV-SFT003-10"
      ]
    },
    {
      "id": "unscoped-overlap",
      "kind": "negative",
      "input": "Two pins overlap with no disambiguating scope.",
      "expect": "Reject.",
      "violates": [
        "INV-SFT003-10"
      ]
    },
    {
      "id": "blue-green-dr",
      "kind": "positive",
      "input": "Revision has concurrent scoped blue, green and DR exposures.",
      "expect": "Accept explicit scoped exposures.",
      "satisfies": [
        "INV-SFT003-12"
      ]
    },
    {
      "id": "shared-gateway",
      "kind": "positive",
      "input": "One endpoint exposes several contracts including a family-level base route.",
      "expect": "Keep distinct contract targets on shared endpoint.",
      "satisfies": [
        "INV-SFT003-11"
      ]
    },
    {
      "id": "pubsub-subscribers",
      "kind": "positive",
      "input": "One publisher and several subscribers use a channel set.",
      "expect": "One future Integration per subscriber; current contract records channels only.",
      "satisfies": [
        "INV-SFT003-20"
      ]
    },
    {
      "id": "ephemeral-probe",
      "kind": "negative",
      "input": "A monitoring probe is proposed as Integration.",
      "expect": "Reject identity inference.",
      "violates": [
        "INV-SFT003-20"
      ]
    },
    {
      "id": "multi-revision-message",
      "kind": "negative",
      "input": "One message claims two revisions.",
      "expect": "Reject.",
      "violates": [
        "INV-SFT003-14"
      ]
    },
    {
      "id": "credential-in-auth",
      "kind": "negative",
      "input": "A token is stored in declaredAuthScheme or exposure.",
      "expect": "Reject secret material.",
      "violates": [
        "INV-SFT003-15"
      ]
    },
    {
      "id": "observed-latency",
      "kind": "negative",
      "input": "Observed latency is written into declaredFreshnessTarget.",
      "expect": "Reject observation in declaration.",
      "violates": [
        "INV-SFT003-15"
      ]
    },
    {
      "id": "expired-exception",
      "kind": "negative",
      "input": "Publish using an expired compatibility exception.",
      "expect": "Reject and reassess.",
      "violates": [
        "INV-SFT003-16"
      ]
    },
    {
      "id": "breaking-same-url",
      "kind": "positive",
      "input": "Incompatible payload meaning changes at same URL.",
      "expect": "New contract and WM-DAT-004 revisions; endpoint may remain.",
      "satisfies": [
        "INV-SFT003-04",
        "INV-SFT003-17"
      ]
    },
    {
      "id": "bodyless-operation",
      "kind": "positive",
      "input": "Revision has only bodyless operations and zero schema refs.",
      "expect": "Accept under 0..n cardinality.",
      "satisfies": [
        "INV-SFT003-05"
      ]
    },
    {
      "id": "empty-interval",
      "kind": "negative",
      "input": "Exposure has no overlap with endpoint address validity.",
      "expect": "Report unresolvable; do not default.",
      "violates": [
        "INV-SFT003-13"
      ]
    }
  ]
}
