Skip to content

Doctor flags a working yt-dlp as wedged on Windows: 3s probe timeout is shorter than the onefile exe's ~4s cold start, and the fix hint is brew/apt only #2531

Open

Description

@flashrollin

Version

LifeOS 8.761.0 · attestation: unattested (could not extract v8.761.0: tar (child): Cannot connect to C: resolve failed

gzip: stdin: unexpected end of file
tar: Child returned status 128
tar: Error is not recoverable: exiting now)

What is broken

On Windows, Doctor reports ytdlp as broken ("yt-dlp --version timed out — the binary is wedged") when yt-dlp is current and working. probeLive gives every binary a fixed 3s timeout. The winget build of yt-dlp (2026.10.26) is a self-extracting onefile exe that unpacks on every launch, and --version takes about 4.2s on two consecutive runs, so the probe times out before the binary answers. A real fetch (yt-dlp --skip-download --print title <youtube url>) succeeds in about 8s. The suggested fix is also macOS/Linux only (brew install yt-dlp / apt-get), so a Windows user is sent to a command that does not exist on their machine for a tool that does not need fixing. This is a false positive introduced by the liveness probe from #2066.

Where (file:line)

LIFEOS/TOOLS/Doctor.ts:169

Repro on a clean tree

1. On Windows 11, install yt-dlp with `winget install yt-dlp.yt-dlp` (gives 2026.10.26).
2. Time it: `Measure-Command { yt-dlp --version }` gives about 4.2s, every run, with output `2026.10.26` and exit 0.
3. Run `bun ~/.claude/LIFEOS/TOOLS/Doctor.ts`.
4. Expected: `YouTube ingestion (yt-dlp) — live`.
5. Actual: `❌ YouTube ingestion (yt-dlp) — broken ... timed out — the binary is wedged`, fix `brew install yt-dlp (Linux: sudo apt-get install yt-dlp)`.

Separately noticed while filing: `Report.ts attest` returns `unattested` on Windows because tar reads `C:` in the archive path as a remote host ("Cannot connect to C: resolve failed"). Passing `--force-local`, or a relative path, would avoid it.

Negative control

Probe: yt-dlp --version && out=$(bun ~/.claude/LIFEOS/TOOLS/Doctor.ts); echo "$out" | grep -A2 -F "(yt-dlp)"; echo "$out" | grep -qF "(yt-dlp) — live" · exit 1 · captured 2026-10-31T22:34:41.819Z

Red looks like: timed out — the binary is wedged

2026.10.26
❌ YouTube ingestion (yt-dlp) — broken
   powers: the Feed YouTube source and the Upgrade skill's channel scan
   yt-dlp on PATH but `yt-dlp --version` timed out — the binary is wedged

Suggested fix

  • Raise the probeLive timeout on Windows (e.g. 10s), or let a capability set its own timeout, with yt-dlp given more because of the onefile cold start.
  • Make the yt-dlp fix hint platform-aware: winget upgrade yt-dlp.yt-dlp (or pip install -U yt-dlp) on Windows.
  • Optionally word a timeout as "slow to start (>Ns)" rather than "wedged", since a slow-but-working binary is not broken.

Environment

  • OS: Windows (x64)
  • Harness: claude-code
  • bun: not found · git: not found
  • Doctor broken: interceptor, cloudflare, ytdlp

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions