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:
- Hard timeout inside
.githooks/pre-push (per-gate, not just overall) that FAILS LOUDLY rather than hanging.
- 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).
- Progress output so a hung gate is visibly hung.
- 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
Observed 2026-08-20 on brainlayer main checkout.
git pushwith 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 pytestempty while.githooks/pre-push+scripts/run_tests.shsat 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:
.githooks/pre-push(per-gate, not just overall) that FAILS LOUDLY rather than hanging.git log origin/<branch>or the PR headSha, never by the absence of an error.Workaround used:
git push --no-verifywith CI as the gate, declared explicitly in the PR/collab.🤖 Generated with Claude Code