Pre-commit loop-detector fix (#23) never deployed — wrapper not installed, kilo-gsd/quickfix still run plain git commit #24

Closed
opened 2026-07-31 05:55:48 +00:00 by Mark · 2 comments
Owner

Summary

The fix for #23 (pre-commit hook re-staging loop) landed in the repo — commits 2e07772 (wrapper + installer + tests) and 0ce199e (kilo-gsd follow-up), issue #23 closed 2026-07-31T05:40:02Z — but a post-deploy probe (kanban card t_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-commit does not exist. ~/.hermes/bin contains only tirith, uv, uvx.
  • Nothing in ~/.hermes/scripts or ~/.hermes/cron references the wrapper or installer.
  • ~/.hermes/scripts/kilo-gsd.py:1055 still runs plain git commit -m ... with no loop detection / re-stage / fallback:
    f"cd {repo_path} && git commit -m {shlex.quote(commit_msg)} 2>&1"
  • quickfix-kilo delegates the commit to the model with no shim/alias in front of git.

Expected behavior (per #23 design)

  • Layer 2: kilo-gsd.py (and quickfix path) invoke the wrapper or equivalent loop-detect → re-stage → retry → --no-verify fallback logic.
  • Layer 3: the hermes-managed wrapper is installed and referenced from ~/.hermes/scripts / ~/.hermes/cron so the re-staging-loop failure mode is mitigated fleet-wide.

Reproduction steps

  1. ls ~/.hermes/bin/hermes-git-commit → No such file or directory
  2. grep -n "git commit" ~/.hermes/scripts/kilo-gsd.py → line 1055 is a plain git commit
  3. grep -rn "pre-commit-loop" ~/.hermes/scripts ~/.hermes/cron → no references

Impact

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).

## Summary The fix for #23 (pre-commit hook re-staging loop) landed in the repo — commits `2e07772` (wrapper + installer + tests) and `0ce199e` (kilo-gsd follow-up), issue #23 closed 2026-07-31T05:40:02Z — but a post-deploy probe (kanban card `t_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-commit` does **not** exist. `~/.hermes/bin` contains only `tirith`, `uv`, `uvx`. - Nothing in `~/.hermes/scripts` or `~/.hermes/cron` references the wrapper or installer. - `~/.hermes/scripts/kilo-gsd.py:1055` still runs plain `git commit -m ...` with no loop detection / re-stage / fallback: `f"cd {repo_path} && git commit -m {shlex.quote(commit_msg)} 2>&1"` - `quickfix-kilo` delegates the commit to the model with no shim/alias in front of `git`. ## Expected behavior (per #23 design) - Layer 2: `kilo-gsd.py` (and quickfix path) invoke the wrapper or equivalent loop-detect → re-stage → retry → `--no-verify` fallback logic. - Layer 3: the hermes-managed wrapper is installed and referenced from `~/.hermes/scripts` / `~/.hermes/cron` so the re-staging-loop failure mode is mitigated fleet-wide. ## Reproduction steps 1. `ls ~/.hermes/bin/hermes-git-commit` → `No such file or directory` 2. `grep -n "git commit" ~/.hermes/scripts/kilo-gsd.py` → line 1055 is a plain `git commit` 3. `grep -rn "pre-commit-loop" ~/.hermes/scripts ~/.hermes/cron` → no references ## Impact 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).
Author
Owner

Partial progress from bughunt (kanban t_a91e1b58):

Layer 3 (deploy) done: ran scripts/hermes/install-loop-detector.sh from the repo — wrapper now exists at ~/.hermes/bin/hermes-git-commit (755, installed 2026-08-11). Note it is the freshly-fixed version from commit 07599d0 (#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 plain git commit is 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.

Partial progress from bughunt (kanban t_a91e1b58): **Layer 3 (deploy) done:** ran `scripts/hermes/install-loop-detector.sh` from the repo — wrapper now exists at `~/.hermes/bin/hermes-git-commit` (755, installed 2026-08-11). Note it is the freshly-fixed version from commit 07599d0 (#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 plain `git commit` is 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.
Author
Owner

Decomposed by triage-runner (kanban t_f3705650).

Layer 3 (wrapper install) — DONE on blackhole: ~/.hermes/bin/hermes-git-commit is installed (commit 07599d0 from #26); install script lives at AuWoMe/forgeflow:scripts/hermes/install-loop-detector.sh.

Layer 2 (kilo-gsd.py / quickfix wiring) — split out: see AuWoMe/forgeflow#29. Editing kilo-gsd.py is runner-source territory (triage-runner hard rule: never edit kilo-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 but unstable does not run kilo-gsd, so no runner-side impact.

Decomposed by triage-runner (kanban `t_f3705650`). **Layer 3 (wrapper install) — DONE on blackhole:** `~/.hermes/bin/hermes-git-commit` is installed (commit `07599d0` from #26); install script lives at `AuWoMe/forgeflow:scripts/hermes/install-loop-detector.sh`. **Layer 2 (kilo-gsd.py / quickfix wiring) — split out:** see [AuWoMe/forgeflow#29](https://forgejo.tail018ac4.ts.net/AuWoMe/forgeflow/issues/29). Editing `kilo-gsd.py` is runner-source territory (triage-runner hard rule: never edit `kilo-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 but `unstable` does not run kilo-gsd, so no runner-side impact.
Mark closed this issue 2026-09-18 23:25:51 +00:00
Sign in to join this conversation.
No description provided.