coily git commit races on a shared working tree, crosses commit messages #7

Open
opened 2026-05-23 20:53:56 +00:00 by coilysiren · 0 comments
Owner

Originally filed by @coilysiren on 2026-05-22T13:13:10Z - https://github.com/coilysiren/coily/issues/321

Symptom - Two coily sessions ran coily git commit against the same infrastructure working tree within seconds of each other. The resulting commit 4dd385c carries one session's commit message (fix: pin signoz clickhouse-operator to kai-server, closes #273) but the other session's file content (deploy/ntfy.yml only). The messages crossed.

Fallout

  • #273 (signoz) was closed by 4dd385c, but that commit does not contain the signoz fix - deploy/observability/signoz-values.yml was left uncommitted in the working tree.
  • The ntfy attachment fix that should have closed #274 landed under the wrong message and never closed its issue.

Cause - Two interactive agent sessions share the bare ~/projects/coilysiren/infrastructure checkout. coily git commit is not isolated against a concurrent commit in the same repo - the shared .git/COMMIT_EDITMSG / index race crosses messages.

Options

  • coily dispatch already uses per-session worktrees; interactive sessions do not. Either steer concurrent interactive work onto worktrees, or have coily git commit take a lock on the repo for the add+commit window.
  • At minimum, coily git commit could refuse when the index contains paths the caller did not stage this invocation.
_Originally filed by @coilysiren on 2026-05-22T13:13:10Z - [https://github.com/coilysiren/coily/issues/321](https://github.com/coilysiren/coily/issues/321)_ **Symptom** - Two coily sessions ran `coily git commit` against the same `infrastructure` working tree within seconds of each other. The resulting commit `4dd385c` carries one session's commit message (`fix: pin signoz clickhouse-operator to kai-server`, `closes #273`) but the other session's file content (`deploy/ntfy.yml` only). The messages crossed. **Fallout** - `#273` (signoz) was closed by `4dd385c`, but that commit does not contain the signoz fix - `deploy/observability/signoz-values.yml` was left uncommitted in the working tree. - The ntfy attachment fix that should have closed `#274` landed under the wrong message and never closed its issue. **Cause** - Two interactive agent sessions share the bare `~/projects/coilysiren/infrastructure` checkout. `coily git commit` is not isolated against a concurrent commit in the same repo - the shared `.git/COMMIT_EDITMSG` / index race crosses messages. **Options** - `coily dispatch` already uses per-session worktrees; interactive sessions do not. Either steer concurrent interactive work onto worktrees, or have `coily git commit` take a lock on the repo for the add+commit window. - At minimum, `coily git commit` could refuse when the index contains paths the caller did not stage this invocation.
coilysiren added
P0
and removed
P1
labels 2026-05-31 06:59:56 +00:00
Sign in to join this conversation.
No labels
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-bridge/coily#7
No description provided.