{
  "checker": {
    "claims": [
      {
        "claim": "The GUI opens a tabbed window with one tab per operation",
        "command": "<guest-path> scripts/smoke_test.py",
        "evidence": "ok   main window with 7 tabs\nok   Convert to FFV1: source_ffv1.mkv\nok   Trim: trim.mkv\nok   Concat: joined.mkv\nok   Fade: source_ffv1_fade.mkv\nok   VHS Effect: source_ffv1_vhs.mkv\nok   Extract Audio: source_ffv1.wav\nok   YouTube: source_ffv1_youtube.mov\nok   pvk-gui starts and keeps running\nAll smoke tests passed.\nsox WARN sox: Input files don't have the same # channels\n",
        "expected": "main window with 7 tabs",
        "input": "pvk-gui launched via the smoke test",
        "kind": "claim",
        "outcome": "Real input produced the expected result: ok   main window with 7 tabs",
        "returncode": 0,
        "source": "The application opens a tabbed window. Each tab corresponds to one operation:",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Trim cuts a segment by start/end time without re-encoding",
        "command": "<guest-path> scripts/smoke_test.py",
        "evidence": "ok   Trim: trim.mkv\nok   Concat: joined.mkv\nok   Fade: source_ffv1_fade.mkv\nok   VHS Effect: source_ffv1_vhs.mkv\nok   Extract Audio: source_ffv1.wav\nok   YouTube: source_ffv1_youtube.mov\nok   pvk-gui starts and keeps running\nAll smoke tests passed.\nsox WARN sox: Input files don't have the same # channels\n",
        "expected": "ok   Trim: trim.mkv",
        "input": "0.5s to 2.0s of a generated FFV1 master",
        "kind": "claim",
        "outcome": "Real input produced the expected result: ok   Trim: trim.mkv",
        "returncode": 0,
        "source": "Cut a segment by start/end time (no re-encoding)",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Convert produces lossless FFV1/MKV masters",
        "command": "<guest-path> scripts/smoke_test.py",
        "evidence": "ok   Convert to FFV1: source_ffv1.mkv\nok   Trim: trim.mkv\nok   Concat: joined.mkv\nok   Fade: source_ffv1_fade.mkv\nok   VHS Effect: source_ffv1_vhs.mkv\nok   Extract Audio: source_ffv1.wav\nok   YouTube: source_ffv1_youtube.mov\nok   pvk-gui starts and keeps running\nAll smoke tests passed.\nsox WARN sox: Input files don't have the same # channels\n",
        "expected": "ok   Convert to FFV1: source_ffv1.mkv",
        "input": "generated H.264 test clip",
        "kind": "claim",
        "outcome": "Real input produced the expected result: ok   Convert to FFV1: source_ffv1.mkv",
        "returncode": 0,
        "source": "Convert videos to lossless FFV1/MKV masters",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Extract audio exports audio tracks to WAV",
        "command": "<guest-path> scripts/smoke_test.py",
        "evidence": "ok   Extract Audio: source_ffv1.wav\nok   YouTube: source_ffv1_youtube.mov\nok   pvk-gui starts and keeps running\nAll smoke tests passed.\nsox WARN sox: Input files don't have the same # channels\n",
        "expected": "ok   Extract Audio: source_ffv1.wav",
        "input": "FFV1 master from the generated clip",
        "kind": "claim",
        "outcome": "Real input produced the expected result: ok   Extract Audio: source_ffv1.wav",
        "returncode": 0,
        "source": "batch-export audio tracks to uncompressed WAV (PCM 16-bit)",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README.md and src/pyvideokit_gui (_main.py, _main_window.py, panels, _worker.py) and grepped for QTimer, cron, schedule, --once, --now, webhook and loops: none found. pvk-gui is a one-shot interactive Qt event loop driven by user actions, with no scheduled or repeating product cycle.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README.md and src/pyvideokit_gui (_main.py, _main_window.py, panels, _worker.py) and grepped for QTimer, cron, schedule, --once, --now, webhook and loops: none found. pvk-gui is a one-shot interactive Qt event loop driven by user actions, with no scheduled or repeating product cycle.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "scripts/smoke_test.py"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "sox WARN sox: Input files don't have the same # channels",
      "stdout": "PyVideoKit-GUI 0.4.3 on PyVideoKit-Libs 0.4.3\nok   main window with 7 tabs\nok   Convert to FFV1: source_ffv1.mkv\nok   Trim: trim.mkv\nok   Concat: joined.mkv\nok   Fade: source_ffv1_fade.mkv\nok   VHS Effect: source_ffv1_vhs.mkv\nok   Extract Audio: source_ffv1.wav\nok   YouTube: source_ffv1_youtube.mov\nok   pvk-gui starts and keeps running\nAll smoke tests passed.",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Headless end-to-end run of every panel against real FFmpeg, FFprobe and SoX (CI smoke test)",
        "command": "<guest-path> scripts/smoke_test.py",
        "deferred": false,
        "evidence": "PyVideoKit-GUI 0.4.3 on PyVideoKit-Libs 0.4.3\nok   main window with 7 tabs\nok   Convert to FFV1: source_ffv1.mkv\nok   Trim: trim.mkv\nok   Concat: joined.mkv\nok   Fade: source_ffv1_fade.mkv\nok   VHS Effect: source_ffv1_vhs.mkv\nok   Extract Audio: source_ffv1.wav\nok   YouTube: source_ffv1_youtube.mov\nok   pvk-gui starts and keeps running\nAll smoke tests passed.\nsox WARN sox: Input files don't have the same # channels",
        "expected": "All smoke tests passed.",
        "input": "generated 3s test clip",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": ".github/workflows/release.yml smoke job / scripts/smoke_test.py",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "Installed from the pinned local checkout with pip install <path> instead of PyPI 'pip install PyVideoKit-GUI', so the tested code is exactly the pinned commit.",
    "Installed system packages from the CI workflow list (ffmpeg, sox, Qt runtime libs) rather than the README, since README only says to put FFmpeg/FFprobe/SoX on PATH.",
    "pvk-gui prints nothing on startup, so the observable check uses the CI smoke test which drives the real panels and prints per-operation results.",
    "Workspace has no .git; the pinned source was used as provided in <guest-path>, so no git fetch/reset was performed."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Build and run PyVideoKit-GUI desktop app and drive every panel (convert, trim, concat, fade, VHS, extract audio, YouTube) on real media via the CI smoke test",
  "operation_scope": "Ubuntu 24.04 guest, Python 3.12.3 venv, offscreen Qt, FFmpeg 6.1.1, SoX 14.4.2, pinned commit 666d740c833d547471d32fd87ecb5ec62b4c1dbb. Browser CDP endpoint was checked (HTTP 200) but not used: the product is a desktop GUI.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "sudo apt-get -o DPkg::Lock::Timeout=300 install -y --no-install-recommends ffmpeg sox libegl1 libgl1 libxkbcommon0 libfontconfig1 libdbus-1-3 (as in release.yml)",
    "python3 -m venv <guest-path>",
    "<guest-path> -m pip install <guest-path> (installs PySide6 6.12.0, PyVideoKit-Libs 0.4.3, PyVideoKit-GUI 0.4.3 and pvk-gui console script)",
    "QT_QPA_PLATFORM=offscreen <guest-path> scripts/smoke_test.py -> All smoke tests passed.",
    "pvk-gui (stays running until timeout; exit 124 under timeout 6)"
  ],
  "stuck_step": null,
  "suggested_fix": null
}
