Skip to content

fix(workflows): follow Pi effective child idle timeout - #427

Closed
seekskyworld wants to merge 2 commits into
openpi-dev:mainfrom
seekskyworld:fix/issue-425-watchdog
Closed

fix(workflows): follow Pi effective child idle timeout#427
seekskyworld wants to merge 2 commits into
openpi-dev:mainfrom
seekskyworld:fix/issue-425-watchdog

Conversation

@seekskyworld

@seekskyworld seekskyworld commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Problem

Closes #425. Workflow child sessions derive their model-progress watchdog from raw optional httpIdleTimeoutMs fields. When no override is configured, those fields are absent even though Pi's effective default is 300 seconds, so OpenPI can abort a healthy slow provider turn after 45 seconds. This is an independently reviewable reliability slice of #424; it does not claim to solve Cursor tool support, cross-directory authorization, or allowlist behavior.

Value

Child provider turns now use the same effective idle-timeout contract as Pi's native transport. Unconfigured sessions no longer inherit an undocumented 45-second watchdog, while the bounded OpenPI guard remains in place for low values and an explicit transport timeout of 0.

Approach

  • Resolve the watchdog timeout through SettingsManager.getHttpIdleTimeoutMs() so Pi's merged settings and default are honored.
  • Preserve the 45-second minimum, test-only overrides, and existing abort, progress-refresh, completion, and cleanup behavior.
  • Add deterministic coverage for the 300-second effective default, wider explicit values, overrides, the floor, and explicit zero.
  • Update the README contract and add the validated research record docs/research/ISSUE_425_WORKFLOW_WATCHDOG_2026-09-07.md.

Validation

  • npx --yes bun@1.3.14 run test — Node: 1430 passed, 1 skipped, 0 failed; Vitest: 30 passed.
  • npx --yes bun@1.3.14 run typecheck — passed.
  • npx --yes bun@1.3.14 run lint — passed.
  • Targeted Biome format and git diff --check — passed.
  • npx --yes bun@1.3.14 run check — the repository check reaches the formatter and reports only the pre-existing untracked .golutra/local.json and .golutra/workspace.json differences; config contract, discipline, Web syntax, lint, and typecheck pass. Those collaboration files were preserved.

Impact

  • User-visible behavior: slow healthy provider turns receive the Pi-configured idle window instead of an unintended 45-second cutoff.
  • Model-visible context/tools: none.
  • Runtime/lifecycle: the child progress watchdog remains bounded and keeps its existing abort and cleanup semantics.
  • Persisted config/data: none; the resolver reads Pi's existing settings and does not write them.
  • Compatibility/risk: explicit Pi values at or above 45 seconds are honored; values below 45 seconds and 0 retain the OpenPI floor. Cursor, workspace, and allowlist behavior are unchanged.

Signed-off-by: seekskyworld <djh1813553759@gmail.com>
@github-actions github-actions Bot added documentation Improvements or additions to documentation area:workflows Workflow engine, capability, skills, or tests labels Sep 6, 2026
Signed-off-by: seekskyworld <djh1813553759@gmail.com>
@seekskyworld

Copy link
Copy Markdown
Contributor Author

No maintainer review comments were present on this PR. After it was opened, upstream merged #426 (#426, commit eaf470b), which removes the extra child output watchdog and delegates liveness to Pi's native transport timeout/retry lifecycle. That broader fix supersedes this focused getHttpIdleTimeoutMs() implementation; rebasing it onto current main (b0fc558) would reintroduce the removed 45-second watchdog. Closing this PR as superseded. The investigation and validation remain traceable in commits 26305d4 and 6f3a26b.

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

Labels

area:workflows Workflow engine, capability, skills, or tests documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(workflows): honor Pi effective HTTP idle timeout for child progress watchdog

1 participant