{
  "schemaVersion": "b18.sft-oracle.r1",
  "cases": [
    {
      "id": "architecture-fit",
      "scenarioId": "architecture",
      "query": "Can the lobby sofa fit through the front door?",
      "command": null,
      "expectedSolverStatus": "PASS",
      "expectsMissingEvidence": false,
      "requiredEntityIds": [
        "sofa",
        "front-door"
      ],
      "requiredRelationIds": [],
      "requiredMetricFactIds": [
        "entity:sofa:bounds",
        "entity:front-door:bounds"
      ],
      "missingMetricFactIds": []
    },
    {
      "id": "architecture-service-access",
      "scenarioId": "architecture",
      "query": "Audit service access for air handler",
      "command": null,
      "expectedSolverStatus": "FAIL",
      "expectsMissingEvidence": false,
      "requiredEntityIds": [
        "air-handler",
        "air-handler-access",
        "stored-crate"
      ],
      "requiredRelationIds": [
        "services:air-handler:zone"
      ],
      "requiredMetricFactIds": [
        "entity:air-handler-access:bounds",
        "entity:stored-crate:bounds"
      ],
      "missingMetricFactIds": []
    },
    {
      "id": "architecture-clearance-policy",
      "scenarioId": "architecture",
      "query": "Check architectural clearance in ground floor",
      "command": null,
      "expectedSolverStatus": "FAIL",
      "expectsMissingEvidence": false,
      "requiredEntityIds": [
        "ground-floor",
        "front-door",
        "mechanical-door",
        "lobby",
        "corridor",
        "mechanical-room"
      ],
      "requiredRelationIds": [
        "lobby-front-door-corridor",
        "corridor-mechanical-door-room"
      ],
      "requiredMetricFactIds": [
        "entity:front-door:bounds",
        "entity:mechanical-door:bounds",
        "entity:lobby:attributes.routeWidthMm",
        "entity:corridor:attributes.routeWidthMm",
        "entity:mechanical-room:attributes.routeWidthMm",
        "policy:fixture-project-policy:minimumOpeningWidth",
        "policy:fixture-project-policy:minimumHeadroom",
        "policy:fixture-project-policy:minimumRouteWidth"
      ],
      "missingMetricFactIds": []
    },
    {
      "id": "assembly-order",
      "scenarioId": "assembly",
      "query": "Audit assembly order for cabinet assembly",
      "command": null,
      "expectedSolverStatus": "PASS",
      "expectsMissingEvidence": false,
      "requiredEntityIds": [
        "cabinet",
        "cabinet-base",
        "left-side",
        "right-side",
        "fixed-shelf",
        "cabinet-top",
        "cabinet-door"
      ],
      "requiredRelationIds": [
        "order:base:left",
        "order:base:right",
        "order:left:shelf",
        "order:right:shelf",
        "order:shelf:top",
        "order:top:door"
      ],
      "requiredMetricFactIds": [],
      "missingMetricFactIds": []
    },
    {
      "id": "robot-alternate-route",
      "scenarioId": "robot",
      "query": "Find a path from mobile robot to charging dock",
      "command": null,
      "expectedSolverStatus": "PASS",
      "expectsMissingEvidence": false,
      "requiredEntityIds": [
        "mobile-robot",
        "robot-start",
        "junction",
        "wide-aisle",
        "charging-dock"
      ],
      "requiredRelationIds": [
        "robot-at-start",
        "start-junction",
        "junction-wide",
        "wide-dock"
      ],
      "requiredMetricFactIds": [],
      "missingMetricFactIds": []
    },
    {
      "id": "game-locked-exit",
      "scenarioId": "game",
      "query": "Find a path from player to exit",
      "command": null,
      "expectedSolverStatus": "FAIL",
      "expectsMissingEvidence": false,
      "requiredEntityIds": [
        "player",
        "start-room",
        "hall",
        "exit"
      ],
      "requiredRelationIds": [
        "player-start",
        "start-hall",
        "hall-exit-door"
      ],
      "requiredMetricFactIds": [],
      "missingMetricFactIds": []
    },
    {
      "id": "game-clearance-missing-evidence-control",
      "scenarioId": "game",
      "query": "[typed control] Find a 900 mm-clear path from player to exit",
      "command": {
        "kind": "QUERY_REACHABILITY",
        "fromId": "player",
        "toId": "exit",
        "minimumClearance": {
          "min": 900,
          "max": 900,
          "unit": "mm"
        }
      },
      "expectedSolverStatus": "UNKNOWN",
      "expectsMissingEvidence": true,
      "requiredEntityIds": [
        "player",
        "start-room",
        "hall",
        "exit"
      ],
      "requiredRelationIds": [
        "player-start",
        "start-hall",
        "hall-exit-door"
      ],
      "requiredMetricFactIds": [],
      "missingMetricFactIds": [
        "relation:player-start:attributes.minimumClearanceMm",
        "relation:start-hall:attributes.minimumClearanceMm",
        "relation:hall-exit-door:attributes.minimumClearanceMm"
      ]
    }
  ],
  "digest": "sha256:0db70daae40909710c729ae7e66fe65943b8648272979e3544edc0cd0f192011"
}
