pre-push hook wedges indefinitely (5h19m observed) — silently converts "pushed" into "didn't"
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Domain
- developer-experience, devtools, testing
Research direction
Start with .githooks/pre-push and scripts/run_tests.sh, then reproduce the hanging push while checking which gate is still running. Trace the reported uv/pytest, lock, file-descriptor, or child-process behavior without assuming the cause. Done means each gate reports progress, hangs fail loudly within its timeout, and the existing test or CI path confirms normal pushes still work.
Written by the indexing model from the issue text.
Description
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
- Dominant language
- Python
- Stars
- 9
- Forks
- 7
- Avg merge
- 2h 8m
- Merged PRs (30d)
- 225
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from EtanHey/brainlayer
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
EtanHey/brainlayer#999 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
EtanHey/brainlayer#986 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
EtanHey/brainlayer#985 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
EtanHey/brainlayer#676 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
EtanHey/brainlayer#612 ·
Maintainers usually reply within 1 day
All issues in EtanHey/brainlayer
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
Maintainers usually reply within 1 day
-
instance instance add
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
searxng/searx-instances#941 · 1 comment ·
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
FluidNumerics/fluid-walk-blocker#89 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day