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
I2718
A linked worktree runs its own hooks, never the primary checkout's
Where it stands
devtask.issue- Readiness
- ready no dependency and no gate holds it; nobody has started it
- Status
- READY
- Can start
- startable
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- none
- Behind it in all
0- Evidence
0of1
Moves
plan.transitionWhat it is
- Objective
- Make every linked worktree run, and doctor judge, the hooks of its own tree, so that a stale primary checkout cannot refuse or weaken the commits of every other worktree.
- Why
- 2026-10-14 ~19:25Z: commits on branches based on current master were refused in every worktree with \"FAIL wiring ssh-permissions-on-commit — providers-check --permissions-only is not invoked by <primary checkout>/.githooks/pre-commit\". core.hooksPath is the relative `.githooks`, and git 2.55 resolves it against the MAIN worktree (`git -C <linked worktree> rev-parse --git-path hooks` answered the primary's path), so all 329 linked worktrees ran the primary checkout's hooks, and the primary sat at afbc25924a (2026-10-11). Fixed by hand at 19:3xZ with the owner's approval: the primary's .githooks restored from origin/master, extensions.worktreeConfig enabled (repositoryformatversion 1), and each linked worktree given core.hooksPath = its own absolute .githooks in its config.worktree. A worktree created after that falls back to the primary again.
- Now
- The per-worktree setting exists only where it was set by hand; `majordomus worktree create` does not set it; doctor's wiring check reads whatever `git rev-parse --git-path hooks` answers without saying which tree's hooks those are.
- Wanted
- `majordomus worktree create` (and `worktree migrate`/repair) sets the worktree's own core.hooksPath, enabling extensions.worktreeConfig when it is off; doctor fails, with the command that fixes it, when a linked worktree's hooks resolve outside its own tree; the main worktree keeps `.githooks`.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- A worktree made by `majordomus worktree create` answers its own .githooks to `git rev-parse --git-path hooks`
- doctor in a linked worktree whose hooks resolve to another tree fails with the fixing command
- The main worktree's hooks path is unchanged
- Validation
bin/majordomus plan validate- Evidence required
worktree_runs_its_own_hooks_case- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
apps/majordomus-cli/src/worktreeapps/majordomus-cli/src/commands/worktree.rslib/doctor.shdocs/WORKTREES.mdtest/cases- Not
- unknown: the record declares no `non_scope`
- Depends on
- none
- Priority
- p0
- 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-14
- Updated
- 2026-10-14
- Started
- unknown: the record declares no `started_at`
- Verified
- unknown: the record declares no `verified_at`
- Completed
- unknown: the record declares no `completed_at`
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
| Level | Code | Message | Reproduce |
|---|---|---|---|
| WARN | scope_conflict | shares test/cases with I2720; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2723; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2731; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2734; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2740; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares lib/doctor.sh with I2742; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2747; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2760; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2786; they may not run concurrently | majordomus plan validate |