Pre-commit loop-detector fix (#23) never deployed — wrapper not installed, kilo-gsd/quickfix still run plain git commit #24
Labels
No labels
blocked:needs-attention
blocked:needs-decision
bug
chore
in-progress
quickfix
security/high
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
AuWoMe/forgeflow#24
Loading…
Add table
Add a link
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?
Summary
The fix for #23 (pre-commit hook re-staging loop) landed in the repo — commits
2e07772(wrapper + installer + tests) and0ce199e(kilo-gsd follow-up), issue #23 closed 2026-07-31T05:40:02Z — but a post-deploy probe (kanban cardt_5ecf9aa6) found the fix is code-in-repo only. It was never deployed or wired into the fleet, so the failure mode #23 describes still affects every commit today.Actual behavior
~/.hermes/bin/hermes-git-commitdoes not exist.~/.hermes/bincontains onlytirith,uv,uvx.~/.hermes/scriptsor~/.hermes/cronreferences the wrapper or installer.~/.hermes/scripts/kilo-gsd.py:1055still runs plaingit commit -m ...with no loop detection / re-stage / fallback:f"cd {repo_path} && git commit -m {shlex.quote(commit_msg)} 2>&1"quickfix-kilodelegates the commit to the model with no shim/alias in front ofgit.Expected behavior (per #23 design)
kilo-gsd.py(and quickfix path) invoke the wrapper or equivalent loop-detect → re-stage → retry →--no-verifyfallback logic.~/.hermes/scripts/~/.hermes/cronso the re-staging-loop failure mode is mitigated fleet-wide.Reproduction steps
ls ~/.hermes/bin/hermes-git-commit→No such file or directorygrep -n "git commit" ~/.hermes/scripts/kilo-gsd.py→ line 1055 is a plaingit commitgrep -rn "pre-commit-loop" ~/.hermes/scripts ~/.hermes/cron→ no referencesImpact
The re-staging-loop failure mode described in #23 still affects the fleet today. Tests pass (5/5) and the scripts are valid, but nothing calls them.
Filed by reporter lane from kanban card
t_5ecf9aa6(post-deploy probe of #23).Partial progress from bughunt (kanban t_a91e1b58):
Layer 3 (deploy) done: ran
scripts/hermes/install-loop-detector.shfrom the repo — wrapper now exists at~/.hermes/bin/hermes-git-commit(755, installed 2026-08-11). Note it is the freshly-fixed version from commit07599d0(#26 fixes: single hook run on non-loop failure, no stderr marker leak, JSONL repo escaping). Smoke-tested: normal commit rc=0, no marker leak.Layer 2 (wire kilo-gsd.py / quickfix) NOT done: wiring
kilo-gsd.py:1055(and quickfix) to invoke the wrapper instead of plaingit commitis a runner-source change. That is explicitly out of scope for the bughunt wrapper lane (hard rule: never edit kilo-gsd.py / runner source). Needs a separate card owned by whoever maintains kilo-gsd.py.Leaving open until the Layer-2 wiring lands.
Decomposed by triage-runner (kanban
t_f3705650).Layer 3 (wrapper install) — DONE on blackhole:
~/.hermes/bin/hermes-git-commitis installed (commit07599d0from #26); install script lives atAuWoMe/forgeflow:scripts/hermes/install-loop-detector.sh.Layer 2 (kilo-gsd.py / quickfix wiring) — split out: see AuWoMe/forgeflow#29. Editing
kilo-gsd.pyis runner-source territory (triage-runner hard rule: never editkilo-gsd.py/ runner source), so this card closes and the remaining work tracks on #29 under the kilo-gsd-runner maintenance lane.Closing this issue. Reopen if Layer 3 verification on other hosts (e.g.
unstable.tail018ac4.ts.net) is still required — the wrapper is not installed there butunstabledoes not run kilo-gsd, so no runner-side impact.