Skip to content

pre-push hook wedges indefinitely (5h19m observed) — silently converts "pushed" into "didn't" #730

Description

@EtanHey

Observed 2026-08-20 on brainlayer main checkout.

git push with the pre-push hook ran 5h 19m on one attempt and hung past 10 minutes on a second, with no test process alive underneath (pgrep pytest empty while .githooks/pre-push + scripts/run_tests.sh sat at 05:19:48 elapsed). A full suite normally takes ~14 minutes.

Impact is worse than a slow gate: the push never lands, the shell reports nothing, and the agent believes the branch is pushed. PR #727 sat at the OLD head for hours while its fixes were committed locally — the false-"pushed" state was caught only because Etan checked the live PR head. A gate that hangs converts "pushed" into "didn't" with no signal.

Asks:

  1. Hard timeout inside .githooks/pre-push (per-gate, not just overall) that FAILS LOUDLY rather than hanging.
  2. Find the wedge: likely a gate waiting on something that never arrives (uv/pytest child reaped, lock, or a fd/EMFILE condition — the Codex lane on the same tree reported EMFILE on a broad pytest run the same morning).
  3. Progress output so a hung gate is visibly hung.
  4. Until fixed: agents must verify a push by git log origin/<branch> or the PR headSha, never by the absence of an error.

Workaround used: git push --no-verify with CI as the gate, declared explicitly in the PR/collab.

🤖 Generated with Claude Code

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