Development record
The worktree store's merged judgement reads a branch's own commits from its reflog, and a reflog can carry another branch's history: a branch copied from a branch that was itself created, then force-reset and left until its unreachable reflog entries expire, keeps the source's creation entry and commit entries, so it is judged merged by ancestry with no commit of its own, and prune could remove its clean worktree with its ignored files. Every commit it holds is already on the default branch, so no commit is lost. Found by the Opus review of the store's steps 3 and 4 on 2026-10-23, after three earlier reflog shapes were closed.
The worktree store's merged judgement reads a branch's own commits from its reflog, and a reflog can carry another branch's history: a branch copied from a branch that was itself created, then force-reset and left until its unreachable reflog entries expire, keeps the source's creation entry and commit entries, so it is judged merged by ancestry with no commit of its own, and prune could remove its clean worktree with its ignored files. Every commit it holds is already on the default branch, so no commit is lost. Found by the Opus review of the store's steps 3 and 4 on 2026-10-23, after three earlier reflog shapes were closed.
Frontmatter
| id | iss-2610231011465325 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610231011465325-store-reads-own-commits-from-reflog.md
open on GitHub ↗ · commit history ↗
References1
- itd-2609091014076309Session and agent worktrees live in a machine-scoped store that abcd lists and reclaims, never beside the user's own projectsrelated
mentions2
- dcn-26102310115326592026-10-23 — The worktree store's steps 3 and 4 land with the merged judgement reading a branch's own commits from its reflog, after four review rounds closed every reflog shape that gives a false merged except one (iss-2610231011465325): a copy of a created branch, force-reset and left until its reflog expires. It is deferred to step 2 rather than chased further, because each closed shape exposed another and the sound fix is a different source, not a better reflog read: step 2's add records the branch's start commit in the lane, and the judgement then reads the branch's own commits from that. The case needs three rare acts together, every commit it holds is already on the default branch, and the store never deletes the branch. Facilitator, on the technical delegation.
- spc-2609301811532881The worktree store: `abcd ahoy worktree add|list|prune`, one lane primitive, and a notes archive beside it