Development record
2026-09-30 — The worktree store is planned (itd-2609091014076309, spc-2609301811532881), after two adversarial reviews and a planning interview with the product thinker and technical facilitator, asked one at a time. Decomposition: file as is, with no new ADR or principle; the build loop's lane primitive moves into the store's package, so the intent `refines` itd-2609201916151817. Rulings: the verb is `abcd ahoy worktree add|list|prune`; "merged" is the forge's recorded pull-request state or patch-equivalence, and it works with no forge; an unmerged worktree quiet for 14 days (repo-configurable) is surfaced with a dossier and removed only when named (`--yes <name>`), never forced; a reclaimed worktree's local tier is moved, never deleted, into a new sibling store `~/.abcd/notes/<root-sha>/<timestamp>-<name>/`, redacted on write with a manifest; the plugin page carries `add` as a host-run step; the worktree directory is `0o700`; prune exits 0 when it reclaimed something, 1 when it reclaimed nothing, 2 on a refusal; a directory keyed on an abbreviated root commit is listed as "not a lane" and names the full-key lane; the board line keeps "can be cleared" as an estimate. The 21 acceptance criteria are the product thinker's. Grounds: "pursued: working copies keep piling up with nothing to list or clear them; wrong if, after it ships, copies still accumulate outside the store." Carried from itd-148's 2026-08-26 interview and confirmed here: the merge proof and the quiet sweep. Also ruled: itd-148 keeps its mint-visibility criterion as peer awareness (its Decision 5).
2026-09-30 — The worktree store is planned (itd-2609091014076309, spc-2609301811532881), after two adversarial reviews and a planning interview with the product thinker and technical facilitator, asked one at a time. Decomposition: file as is, with no new ADR or principle; the build loop's lane primitive moves into the store's package, so the intent refines itd-2609201916151817. Rulings: the verb is abcd ahoy worktree add|list|prune; "merged" is the forge's recorded pull-request state or patch-equivalence, and it works with no forge; an unmerged worktree quiet for 14 days (repo-configurable) is surfaced with a dossier and removed only when named (--yes <name>), never forced; a reclaimed worktree's local tier is moved, never deleted, into a new sibling store ~/.abcd/notes/<root-sha>/<timestamp>-<name>/, redacted on write with a manifest; the plugin page carries add as a host-run step; the worktree directory is 0o700; prune exits 0 when it reclaimed something, 1 when it reclaimed nothing, 2 on a refusal; a directory keyed on an abbreviated root commit is listed as "not a lane" and names the full-key lane; the board line keeps "can be cleared" as an estimate. The 21 acceptance criteria are the product thinker's. Grounds: "pursued: working copies keep piling up with nothing to list or clear them; wrong if, after it ships, copies still accumulate outside the store." Carried from itd-148's 2026-08-26 interview and confirmed here: the merge proof and the quiet sweep. Also ruled: itd-148 keeps its mint-visibility criterion as peer awareness (its Decision 5).
Frontmatter
| id | dcn-2609300000000022 |
|---|---|
| type | decision |
| date | 2026-09-30 |
.abcd/work/decisions/dcn-2609300000000022-the-worktree-store-is-planned.md
open on GitHub ↗ · commit history ↗
mentions6
- dcn-26102719462697592026-10-27 — The worktree store's board line keeps the peers scan's estimate for its reclaimable count, decided by the technical facilitator's session abcd-e8 on the product thinker's standing delegation of 2026-10-27. A change a crashed session left uncommitted, salvaged as commit 6f8012a0f, made the line count by prune's own judgement; it is reverted because itd-2609091014076309's acceptance criterion for the board line says rendering it starts no per-lane status read, and that judgement runs git status, the squash test and a notes read for every worktree in the lane on each render, while the 2026-09-30 planning ruling (dcn-2609300000000022) already accepts the scan's count as an estimate. The salvaged change stays in the branch's history and as a patch in the local tier. The line's words are settled separately: it says can be cleared, as that ruling names them (dcn-2610272035450672).
- dcn-26102720354506722026-10-27 — The worktree store's /abcd board line says how many worktrees can be cleared, the words of the product thinker's 2026-09-30 planning ruling (dcn-2609300000000022), relayed as settled by the coordinating session abcd-f5 on 2026-10-27. The spec's line and the built line had drifted to reclaimable; both are corrected to the ruling. The --json member keeps the field name reclaimable, which the ruling does not name.
- itd-148Every change starts in its own worktree in abcd's store: the primary checkout is a read-only surface, and abcd blocks mutations there for every session but a declared coordinator
- itd-2609091014076309Session and agent worktrees live in a machine-scoped store that abcd lists and reclaims, never beside the user's own projects
- itd-2609201916151817One verb takes a READY intent to delivered, and refuses while a decision is open
- spc-2609301811532881The worktree store: `abcd ahoy worktree add|list|prune`, one lane primitive, and a notes archive beside it