Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

I1995

Work a session left uncommitted in a worktree is named, not found by luck

Where it stands

devtask.issue
Readiness
complete completion is recorded and every required evidence token is present
Status
DONE
Can start
not now
Milestone
Milestone status
ACTIVE
Wave
0
Waiting on
none
Holds back
none
Behind it in all
0
Evidence
2 of 2
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I1995

majordomus plan verify I1995

majordomus plan done I1995

What it is

Objective
Make doctor and the worktree status name a linked worktree whose index or working tree holds changes no commit carries and no live session holds, with how many files and how old, so that finished work on one disk is seen before the disk is.
Why
Twice in two days finished work existed on one disk only. On 2026-10-07 the supersession-trust half of the integration safety fixes sat as 45 uncommitted files in the worktree of a session that had ended; it was pushed as origin/rescue/integration-supersession-trust-20261007 and became #808 and #809. On 2026-10-08 the completion doctrine sat as 21 staged files in another ended session's worktree; it was pushed as origin/rescue/completion-doctrine-20261008. Neither had a commit or a remote ref, and the same evening the data volume reached 125 MiB free. `majordomus doctor` names branches whose commits reach no remote. It says nothing about an index that holds work no commit carries, so both were found only because someone happened to read that worktree.
Now
doctor reports unpushed branches. `majordomus worktree` reports a worktree as dirty without saying how much, for how long, or whether any session is working in it. Nothing reports the set of worktrees holding uncommitted work that nobody is attached to.
Wanted
One reading lists every linked worktree with staged or unstaged changes: the count of paths, the age of the oldest change, and whether a session or task is active there. doctor warns for each one that is older than a declared age with no active session. The reading changes nothing and suggests the command that preserves the work on a remote ref.
Done when
unknown: the record declares no `completion`
Risk
unknown: the record declares no `risk`

Acceptance

  • A worktree with staged files and no active session is named by doctor with its path, the number of paths and the age of the oldest
  • A worktree with uncommitted work and an active task or attached session is listed and not warned about
  • The reading writes nothing: `git status` of every worktree is the same before and after it
Validation
bin/majordomus plan validateMJ_TEST_JOBS=4 bash test/run.sh <the case this issue adds>
Evidence required
abandoned_index_named_casereading_is_read_only_case
Evidence present
abandoned_index_named_casereading_is_read_only_case

Scope

Touches
apps/majordomus-cli/src/capability/builtin/worktree.rslib/doctor.shdocs/WORKTREES.mdtest/cases
Not
unknown: the record declares no `non_scope`
Depends on
unknown: the record declares no `depends_on`
Priority
p1
Profile
implementation
Parallel safe
true
Owner
unknown: the record declares no `owner`

The work so far

Branches
none
Merged
none
Commits
0
Trunk
master
Sessions
none
Created
2026-10-08
Updated
2026-10-14T17:17:04Z
Started
2026-10-14T17:16:55Z
Verified
unknown: the record declares no `verified_at`
Completed
2026-10-14T17:17:04Z

Synchronisation

Adapter
scripts/github-sync
Repository
unknown: the derived plan's header carries no repository
External issue
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
State there
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it

Findings

Nothing is wrong with these records.