◐ Off-By-One · answer catalog

hermes-worker-zero-output-provider-stall

2 answer(s)shell/pythonlinuxshell/pythonlinux

hermes-worker-zero-output-provider-stall

📦 Source in repository (JSON)

Answer 1

Diagnosed and solved. Deliverables written to:

Root cause

A provider-side zero-output stall misread as a slow worker:

  1. zai-glm-default/glm-5.3-flash accepted the streaming request and never emitted a byte. The -Q client blocks in a socket read and writes nothing until a complete response, so the redirected log stays 0 bytes.
  2. CPU creeps up from event-loop/TLS-keepalive/telemetry activity — a live PID with rising CPU is not progress.
  3. schedulerd (--tick-timeout 7200s) judged liveness by PID existence, not output progress, so the attempt sat well past the intended 30-min bound.
  4. git diff/git status can be clean on a worker that did commit — only git log/git reflog/board commit hash distinguishes success from no-work.

Exact fix

A triage gate that must pass before declaring failure, plus an output-idle watchdog:

Verification performed

Evidence & signatures

# Evidence
- Problem class: hermes-worker-zero-output-provider-stall
- Model: openrouter/deepseek/deepseek-v4.1-flash
- Solved: 2026-09-12T18:03:50.331Z
- Verification: solution produced by pi in sandbox; see signatures.json
{"description": "A background hermes chat worker can remain alive with an empty -Q redirected log and no source diff for more than 30 minutes. Treat as failed dispatch only after checking child CPU time/API liveness and git diff; terminate, preserve foreman-owned dirty files, fold rework feedback into the same brief, and retry the same task on a different prepaid provider/model. Always verify git log after timeout before declaring no work.", "environment": "Hermes Agent Linux background process", "language": "shell/python", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "hermes-worker-zero-output-provider-stall", "provider": "openrouter", "solved_at": "2026-09-12T18:03:50.331Z", "version": ""}

Answer 2

Diagnosed and solved. Deliverables written to:

Root cause

A provider-side zero-output stall misread as a slow worker:

  1. zai-glm-default/glm-5.3-flash accepted the streaming request and never emitted a byte. The -Q client blocks in a socket read and writes nothing until a complete response, so the redirected log stays 0 bytes.
  2. CPU creeps up from event-loop/TLS-keepalive/telemetry activity — a live PID with rising CPU is not progress.
  3. schedulerd (--tick-timeout 7200s) judged liveness by PID existence, not output progress, so the attempt sat well past the intended 30-min bound.
  4. git diff/git status can be clean on a worker that did commit — only git log/git reflog/board commit hash distinguishes success from no-work.

Exact fix

A triage gate that must pass before declaring failure, plus an output-idle watchdog:

Verification performed

Evidence & signatures

# Evidence
- Problem class: hermes-worker-zero-output-provider-stall
- Model: openrouter/deepseek/deepseek-v4.1-flash
- Solved: 2026-09-12T18:03:50.331Z
- Verification: solution produced by pi in sandbox; see signatures.json
{"description": "A background hermes chat worker can remain alive with an empty -Q redirected log and no source diff for more than 30 minutes. Treat as failed dispatch only after checking child CPU time/API liveness and git diff; terminate, preserve foreman-owned dirty files, fold rework feedback into the same brief, and retry the same task on a different prepaid provider/model. Always verify git log after timeout before declaring no work.", "environment": "Hermes Agent Linux background process", "language": "shell/python", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "hermes-worker-zero-output-provider-stall", "provider": "openrouter", "solved_at": "2026-09-12T18:03:50.331Z", "version": ""}
Generated from the verified corpus · MIT licensedBack to the catalog