{
  "checker": {
    "claims": [
      {
        "claim": "The reference client speaks the wire protocol and writes the synthesized audio to a WAV file",
        "command": "uv run python examples/reference_client.py --socket-path <guest-path> --text 'Hello from the local server.' --out <guest-path>",
        "evidence": "wrote <guest-path> (24000 Hz, 1ch, 14400 bytes)\nhello: backend={'name': 'tone', 'model': None} rate=24000 caps={'streaming': False, 'binary_audio': False, 'text_formats': ['plain'], 'languages': ['en'], 'voice_count': 1, 'extras': ['speed'], 'ideal_words': 40, 'max_text_chars': 2000}\ndone: response_id=resp_1c6504ab26594512 frames=15 bytes=14400 (~300 ms)\n",
        "expected": "a WAV file is written at the --out path at 24000 Hz",
        "input": "Hello from the local server.",
        "kind": "claim",
        "outcome": "Real input produced the expected result: wrote <guest-path> (24000 Hz, 1ch, 14400 bytes)",
        "returncode": 0,
        "source": "the wire protocol directly and writes the reassembled audio to a WAV.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "The server advertises an exact, stable audio rate of 24000 Hz",
        "command": "uv run python -m tts_server status --socket-path <guest-path>",
        "evidence": "\u2026audio: pcm16 @ 24000 Hz / 1ch\n  capabilities: streaming=False binary_audio=False voice_count=1\n  session_id: session_f000b09756904a70\n  queue_depth: 0\n  voices (1): tone\n  buffered_chars: 0\n  session_uptime: 0.0s\n  pid: 2257\n",
        "expected": "status reports pcm16 at 24000 Hz",
        "input": "status against the running tone server",
        "kind": "claim",
        "outcome": "Real input produced the expected result: audio: pcm16 @ 24000 Hz / 1ch",
        "returncode": 0,
        "source": "1. **An exact, stable advertised rate.** `server.hello.audio.rate` is the true",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: README and tts_server CLI (serve, status, prefetch) contain no cron, schedule, --once or --now trigger. The server runs a per-connection request loop that synthesizes only when a client sends input_text.commit, so there is no product cycle to trigger.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: README and tts_server CLI (serve, status, prefetch) contain no cron, schedule, --once or --now trigger. The server runs a per-connection request loop that synthesizes only when a client sends input_text.commit, so there is no product cycle to trigger.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "uv",
        "run",
        "python",
        "examples/reference_client.py",
        "--socket-path",
        "<guest-path>",
        "--text",
        "Hello from the local server.",
        "--out",
        "<guest-path>"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "hello: backend={'name': 'tone', 'model': None} rate=24000 caps={'streaming': False, 'binary_audio': False, 'text_formats': ['plain'], 'languages': ['en'], 'voice_count': 1, 'extras': ['speed'], 'ideal_words': 40, 'max_text_chars': 2000}\ndone: response_id=resp_8c101909f03d4b13 frames=15 bytes=14400 (~300 ms)",
      "stdout": "wrote <guest-path> (24000 Hz, 1ch, 14400 bytes)",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Synthesize text through the running server with the documented reference client and write a WAV",
        "command": "uv run python examples/reference_client.py --socket-path <guest-path> --text 'Hello from the local server.' --out <guest-path>",
        "deferred": false,
        "evidence": "wrote <guest-path> (24000 Hz, 1ch, 14400 bytes)\nhello: backend={'name': 'tone', 'model': None} rate=24000 caps={'streaming': False, 'binary_audio': False, 'text_formats': ['plain'], 'languages': ['en'], 'voice_count': 1, 'extras': ['speed'], 'ideal_words': 40, 'max_text_chars': 2000}\ndone: response_id=resp_cd6bd8128d0f4c02 frames=15 bytes=14400 (~300 ms)",
        "expected": "WAV written at 24000 Hz",
        "input": "--text Hello from the local server.",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Examples: examples/reference_client.py",
        "verdict": "yes"
      },
      {
        "claim": "Check server health with the documented status command",
        "command": "uv run python -m tts_server status --socket-path <guest-path>",
        "deferred": false,
        "evidence": "tts_server: ok\n  protocol_version: 0.1\n  backend: tone (model: None)\n  audio: pcm16 @ 24000 Hz / 1ch\n  capabilities: streaming=False binary_audio=False voice_count=1\n  session_id: session_692e72f3d7cd46fd\n  queue_depth: 0\n  voices (1): tone\n  buffered_chars: 0\n  session_uptime: 0.0s\n  pid: 2257",
        "expected": "status prints backend tone and the advertised rate",
        "input": "--socket-path <guest-path>",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Checking server health",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "Checked CDP_URL/json/version first: HTTP 200 with Chrome/155 JSON. The product needs no browser, so nothing else was done with it.",
    "Used the README's uv-based client install (uv sync --extra client) instead of Apple Silicon extras; kokoro and other mlx backends are unsupported on this Linux guest.",
    "The git pin step (git init, remote add, fetch PINNED_COMMIT, reset) was not run: the workspace has no .git and no command needed Git metadata. The snapshot was used as delivered; the pin was not verified.",
    "Ran the server by hand with the README serve command so the CLI probes could reach it; the checker did not start it.",
    "Used uv run python for the reference client as the README's run-through-uv rule requires."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Start the local WebSocket TTS server with the tone backend, check its status, and synthesize speech to a WAV file through the documented reference client",
  "operation_scope": "Linux x86_64 guest, Ubuntu 24.04, Python 3.12.3, uv 0.13.5. Only the base tone backend (synthetic sine, no model weights) was exercised. Kokoro, Voxtral, Pocket, dia, Qwen3, Fish and Phonon need Apple Silicon mlx-audio and were not run. The macOS menu bar app and launchd recipes were not run. Server was on a Unix socket at <guest-path> and is left running until guest teardown.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "uv sync --extra client",
    "uv run python -m tts_server serve --backend tone --socket-path <guest-path>",
    "uv run python -m tts_server status --socket-path <guest-path>",
    "uv run python examples/reference_client.py --socket-path <guest-path> --text \"Hello from the local server.\" --out <guest-path>"
  ],
  "stuck_step": null,
  "suggested_fix": "No fix needed for the tested path. To verify the Apple Silicon backends, run this on a Mac with the kokoro extra."
}
