Git.push is killed after 5 minutes and the timeout is reported as a plain push failure #585
Labels
No labels
agent-ready
bug
contract
documentation
duplicate
enhancement
good first issue
help wanted
invalid
needs-human
needs-input
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/iw-cli#585
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found during IW-578 phase 1.
Git.push(core/adapters/Git.scala:171) runs underProcessAdapter.run's 5-minute default timeout, and the kill is reported as a plain push failure —ProcessResult.timedOutis ignored. A cold pre-push hook (full unit suite + command compile) outran it during IW-578 phase 1'sphase-pr --no-wait: stderr stopped after 33 of 36 commands compiled, ~6 min after the commit; the same push run by hand passed in 61 s.Possibly a second way the same cold pre-push hook breaks a push. On IW-491 phase 1 (first
phase-pr --no-wait), the push failed withfatal: the remote end hung up unexpectedly. git opens the SSH connection before it runs the pre-push hook. The hook's fullmill core.test+dashboard.testrun on a cold cache seems to outlast the forge's SSH idle timeout, so the forge closes the connection. A manual push with warm caches then succeeded. If this is the cause, a longer process timeout does not fix it. The hook must be faster, or run before git opens the connection.Seen again during IW-599 phase 1 (cold Mill daemon).
phase-prpush failed with no failure line: the captured pre-push output stops between two command compilations. A plaingit pushof the same commit passed the hook in 55 s. Not proven to be the timeout, but it matches the pattern this issue describes. (Git.pushis now atcore/adapters/Git.scala:180.)Seen again in IW-715 (2026-10-05):
Two more cases from IW-671 phase 1. The cause is the same: the
phase-prpush runs the pre-push hook's cold build, and the push fails for a reason that is not in the code.phase-prpush over SSH fails when the pre-push hook runs a cold build — git opens the Forgejo connection before the hook, and a multi-minute./iw ./test unitlets the server drop it ("fatal: the remote end hung up unexpectedly" / "Forgejo: Failed to execute git command"); the same push with warm caches took 62 s and passed (IW-671 phase 1).WEBAWESOME_NPM_TOKENcannot push any branch — the pre-push hook runs./iw ./test unit, whosedashboard.testneedsfrontend.viteBuild(yarn installfails: "Environment variable not found (WEBAWESOME_NPM_TOKEN)"); seen in IW-671 phase 1phase-pr.Found during IW-682 (port allocation for worktrees). Follow-up, verbatim:
phase-prpush dies when the pre-push hook runs longer than 5 minutes —GitAdapter.push(core/adapters/Git.scala:275) usesProcessAdapter.runwithDefaultTimeoutMs = 5 * 60 * 1000(core/adapters/Process.scala:24); the hook's full unit run took longer, and phase-pr printed "Failed to push branch" with only the hook's partial output; a manualgit pushwith the same hook passed.Found during IW-513, same area (how a failed
Git.pushis reported):git pushfailures as transient or permanent. — IW-513 gave the forge reads aTrackerErrorwithUnreachable/Refused; a push failure is still one undifferentiated error. IW-513 FOLLOW-UPS.mdIntake: agent-ready
Workflow: diagnostic
Reason: all gates passed
Analysis: project-management/issues/IW-585/analysis.md on branch IW-585
Implement: needs-human
Reason: batch-implement exit 1 — the kanon plugin (batch/ForgeCatchUp.scala:143) does not compile against iw-cli core at this branch: core now returns TrackerError from the tracker port (#778, #780), and the plugin still expects String. No phase ran. This blocks every iw-cli issue, not only this one; the kanon plugin must be updated first.
batch-implement.log was not written; the command output:
Release: the implement loop failed this issue for a reason outside it. The kanon plugin did not compile against iw-cli main, because the tracker port now returns TrackerError (iw-cli #778). The plugin fix is dev-docs #484, and iw-cli 0.22.1 carries the core change. The issue goes back to the implement loop.