No verb for a member whose work is durably pushed but not landed #45

Open
opened 2026-08-02 07:03:24 +00:00 by PerishFire · 0 comments
Owner

Environment: concord v0.9.0. This one has a first-hand reproduction below.

Observed

A member held a 2.2 GiB worktree whose three commits were all present on origin/<branch>, with an open upstream PR that had not moved in seven days and a branch 60 commits behind origin/main. The local worktree was pure cache — every byte recoverable from the remote.

member remove-landed correctly refuses: the work is not landed. There is no other removal verb — v0.9.0 offers add, preflight, claim, boundary, remove-landed. task finish refuses while the member is declared.

What I actually had to do

git worktree remove <member path>
$EDITOR .tasks/tasks.toml          # delete the [[task.repo]] block and its boundary
concord audit <task>               # now reports a valid repo-less task
concord task finish <task> --apply

Step two is hand-editing the registry, which protocol.md explicitly forbids: "Never silently infer, manufacture, or repair registry state." Between step one and step two the task was in a protocol violation — presence: declared member path is missing — with no supported way back except finishing the removal by hand.

The alternative is to keep 2.2 GiB of recoverable cache indefinitely, which is what the absence of a verb actually encourages.

Proposal

A member park (or detach) that proves the member is clean, proves every member commit is reachable from a remote-tracking ref, removes the worktree, and either drops the member entry or marks it parked with enough recorded state to re-add it.

Its proof obligation is stronger than remove-landed in one axis — remote reachability rather than local landing — and weaker in another, so it is a genuinely different predicate rather than a flag on the existing one.

Environment: concord v0.9.0. This one has a first-hand reproduction below. ## Observed A member held a 2.2 GiB worktree whose three commits were all present on `origin/<branch>`, with an open upstream PR that had not moved in seven days and a branch 60 commits behind `origin/main`. The local worktree was pure cache — every byte recoverable from the remote. `member remove-landed` correctly refuses: the work is not landed. There is no other removal verb — v0.9.0 offers `add`, `preflight`, `claim`, `boundary`, `remove-landed`. `task finish` refuses while the member is declared. ## What I actually had to do ``` git worktree remove <member path> $EDITOR .tasks/tasks.toml # delete the [[task.repo]] block and its boundary concord audit <task> # now reports a valid repo-less task concord task finish <task> --apply ``` Step two is hand-editing the registry, which `protocol.md` explicitly forbids: "Never silently infer, manufacture, or repair registry state." Between step one and step two the task was in a protocol violation — `presence: declared member path is missing` — with no supported way back except finishing the removal by hand. The alternative is to keep 2.2 GiB of recoverable cache indefinitely, which is what the absence of a verb actually encourages. ## Proposal A `member park` (or `detach`) that proves the member is clean, proves every member commit is reachable from a remote-tracking ref, removes the worktree, and either drops the member entry or marks it parked with enough recorded state to re-add it. Its proof obligation is stronger than `remove-landed` in one axis — remote reachability rather than local landing — and weaker in another, so it is a genuinely different predicate rather than a flag on the existing one.
Sign in to join this conversation.
No labels
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
PerishFire/concord#45
No description provided.