entireio / entireio/cli

Only first commit per session gets Entire-Checkpoint trailer; subsequent commits silently skipped

Open
#784 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Go
Stars
5.1k
Forks
475
Avg merge
1d 11h
Merged PRs (30d)
178

Description

Summary

When using entire configure --agent claude-code with the manual-commit strategy, only the first commit per turn gets the Entire-Checkpoint trailer. Subsequent commits within the same turn, and all commits in later turns, are silently skipped — no trailer is added, no checkpoint is created, and no error is logged.

This breaks the documented "Multiple checkpoints, single session" workflow described at https://docs.entire.io/web/sessions:

"A developer might have a single session running in a terminal while creating multiple commits throughout that session and thereby creating multiple checkpoints. Entire will match up these checkpoints to the single session."

Environment

  • Entire CLI: 0.5.1 (d46fdc24)
  • OS: Linux (Manjaro)
  • Agent: claude-code
  • Strategy: manual-commit
  • Git hooks path: .husky/_ (via core.hooksPath)

Observed behavior

Prompt-by-prompt breakdown
  1. Prompt 1 — generated a single commit 7917a85. ✅ Linked to session with checkpoint 1754c2af9609.

  2. Prompt 2 — generated 3 commits while Claude Code was working:

    • 0dd88fa ✅ Linked to session with checkpoint 07386117e61f (first commit of this turn)
    • abb3213 ❌ No Entire-Checkpoint trailer
    • e1f6802 ❌ No Entire-Checkpoint trailer
  3. Prompt 3 (same session, new turn) — generated 1 commit:

    • 482a585 ❌ No Entire-Checkpoint trailer

Pattern: Only the first commit ever made in a turn gets linked. After the post-commit hook runs for that first commit, all subsequent commits in the session are orphaned.

Dashboard view

Only 2 out of 5 commits show the "Claude Code" badge and checkpoint:

Image
# Commit Message Linked?
5 482a585 chore: clean up dependencies... ❌ No trailer
4 e1f6802 feat: integrate Openfort + Viem... ❌ No trailer
3 abb3213 refactor: remove Particle Network... ❌ No trailer
2 0dd88fa style: format entire codebase... ✅ checkpoint 07386117e61f
1 7917a85 docs: add v0.1.0 status report... ✅ checkpoint 1754c2af9609

Root cause (from .entire/logs/entire.log)

The post-commit hook deletes the shadow branch after condensing the session. When the next commit happens, prepare-commit-msg cannot find the shadow branch, and silently produces no trailer.

Sequence from the log:

# Prompt 1, commit 1 (7917a85) — works
prepare-commit-msg: agent commit trailer added   (checkpoint: 1754c2af9609)
session condensed
shadow branch deleted                            ← shadow branch gone

# Prompt 2, commit 1 (0dd88fa) — works (shadow branch recreated between turns)
prepare-commit-msg: agent commit trailer added   (checkpoint: 07386117e61f)
session condensed
sessionHasNewContent: no shadow branch, checking live transcript
shadow branch deleted                            ← shadow branch gone again

# Prompt 2, commits 2-3 (abb3213, e1f6802) — NO prepare-commit-msg log entries at all
# The hook runs but entire silently exits without adding a trailer
# At turn-end, entire notices HEAD moved:
updated session base commit (HEAD changed during session), new_base: e1f6802

# Prompt 3, commit 1 (482a585) — also not linked
# No prepare-commit-msg log entry, shadow branch not available

The key gap: between 23:39:00 (shadow branch entire/7917a85-e3b0c4 deleted after commit 0dd88fa) and 23:47:42 (turn-end), two more commits were made with zero prepare-commit-msg activity in the log. The hook script pipes stderr to /dev/null (2>/dev/null || true), so any errors from entire hooks git prepare-commit-msg are silently swallowed.

No workaround available

We checked the available CLI commands (entire clean, entire reset, entire doctor) — none of them address this issue:

  • entire clean — only removes orphaned data, doesn't recreate shadow branches
  • entire reset — deletes shadow branch + session state, would make it worse
  • entire doctor — fixes stuck sessions, not the shadow branch lifecycle

Even a "one commit per prompt" workflow doesn't reliably work — Prompt 3's single commit (482a585) also failed to get linked.

Expected behavior

Every commit made during an active session should receive the Entire-Checkpoint trailer, as documented. The shadow branch should either:

  1. Not be deleted until the session ends (not after each commit), or
  2. Be recreated before returning from the post-commit hook, so it's available for the next commit's prepare-commit-msg, or
  3. prepare-commit-msg should not depend on the shadow branch existing to decide whether to add the trailer — it should be sufficient that an active session exists for the worktree.

Steps to reproduce

  1. entire configure --agent claude-code in any repo
  2. Start a Claude Code session
  3. Make 3+ commits in the same session (either in one turn or across turns)
  4. Only the first commit gets the Entire-Checkpoint trailer
  5. Dashboard shows subsequent commits without the Claude Code badge

entire.log

entire.tar.gz

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the post-commit hook and entire hooks git prepare-commit-msg, using .entire/logs/entire.log to trace shadow-branch deletion and trailer generation. Reproduce with multiple commits in one active session and verify that each commit receives an Entire-Checkpoint trailer without errors being silently swallowed.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, go
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.