[
  {
    "id": "amc-deploy",
    "question": "Deploy auto calibration.",
    "expected_skill": "vss-generate-video-calibration",
    "ground_truth": "Loads vss-generate-video-calibration and walks the deploy reference: confirms the NGC key can access the AMC images before bringing the stack up, brings up vss-auto-calibration plus its UI, and verifies the microservice is ready at /v1/ready.",
    "expected_behavior": [
      "Loads the vss-generate-video-calibration skill and its deploy reference.",
      "Verifies NGC access to the AMC images before docker compose up (fails fast with a clear message if the key lacks access).",
      "Brings up vss-auto-calibration and vss-auto-calibration-ui and checks /v1/ready.",
      "Does not print plaintext API tokens."
    ]
  },
  {
    "id": "amc-calibrate-videos",
    "question": "Calibrate these videos in ~/warehouse/videos.",
    "expected_skill": "vss-generate-video-calibration",
    "ground_truth": "Routes to the videos mode: auto-detects cam_*.mp4 plus the calibration settings / alignment / layout files in the directory; when no settings file is present, asks the user which detector (resnet or transformer) and whether to tune parameters in the UI; confirms the plan before calling /calibrate.",
    "expected_behavior": [
      "Routes to the videos mode of the calibration skill.",
      "Auto-detects the settings (including calibration_settings.json), alignment, and layout files when present.",
      "Asks which detector to use (resnet vs transformer) when no settings file pins one, rather than silently defaulting.",
      "Confirms the resolved plan before starting calibration."
    ]
  },
  {
    "id": "amc-calibrate-rtsp",
    "question": "Calibrate these live RTSP camera streams.",
    "expected_skill": "vss-generate-video-calibration",
    "ground_truth": "Routes to the RTSP mode: confirms VIOS is reachable first, then captures each stream via /v1/rtsp/capture, polls the session to completion, ingests the recorded clips, and only then runs the standard calibration tail.",
    "expected_behavior": [
      "Routes to the RTSP mode of the calibration skill.",
      "Checks that VIOS is reachable before starting capture.",
      "Uses /v1/rtsp/capture, polls the session, and ingests clips before calibrating."
    ]
  },
  {
    "id": "amc-sample-verify",
    "question": "Verify the AMC install on the bundled sample dataset.",
    "expected_skill": "vss-generate-video-calibration",
    "ground_truth": "Routes to the sample-dataset mode: obtains and extracts the sample zip if it is not already present, uploads the four cameras plus alignment, layout, and ground truth, calibrates with the resnet detector, and reports the evaluation metrics (L2 distance and reprojection error).",
    "expected_behavior": [
      "Routes to the sample-dataset mode.",
      "Obtains and extracts the sample zip when it is missing rather than assuming it ships with the repo.",
      "Calibrates with resnet and reports the evaluation metrics (L2 / reprojection error)."
    ]
  },
  {
    "id": "amc-projects-permission",
    "question": "AMC's POST /v1/create_project returns HTTP 500 with '[Errno 13] Permission denied' on the projects directory. How do I fix it?",
    "expected_skill": "vss-generate-video-calibration",
    "ground_truth": "The host projects directory bind-mounted into the microservice is not writable by the container user (UID 1000). Grant access with a scoped ACL (setfacl -m u:1000:rwx on the projects directory), not chmod 777 and not chown, then retry create_project.",
    "expected_behavior": [
      "Identifies that the projects directory is not writable by the container user (UID 1000).",
      "Applies a scoped setfacl for UID 1000 rather than chmod 777 or chown.",
      "Retries create_project after fixing permissions."
    ]
  },
  {
    "id": "amc-mv3dt-export",
    "question": "Calibration finished. How do I get the result in MV3DT format?",
    "expected_skill": "vss-generate-video-calibration",
    "ground_truth": "Fetches the MV3DT export from GET /v1/result/<project_id>/mv3dt_result, preferring result_type=vggt when VGGT refinement completed and otherwise result_type=amc; the response is a zip with the transforms and per-camera camInfo files.",
    "expected_behavior": [
      "Uses GET /v1/result/<project_id>/mv3dt_result for the MV3DT-format output.",
      "Prefers result_type=vggt when VGGT completed, falling back to result_type=amc.",
      "Does not print plaintext API tokens."
    ]
  }
]
