I2718 — Propojený worktree spouští vlastní hooky, nikdy hooky primárního checkoutu
Zařídit, aby každý propojený worktree spouštěl a doctor posuzoval hooky vlastního stromu, aby zastaralý primární checkout nemohl odmítnout ani oslabit commity všech ostatních worktrees.
HOTOVO vlna 0 · p0 · profil implementation · bezpečné souběžně
Součást development-runtime — The runtime has a development surface.
Cíl
Zařídit, aby každý propojený worktree spouštěl a doctor posuzoval hooky vlastního stromu, aby zastaralý primární checkout nemohl odmítnout ani oslabit commity všech ostatních worktrees.
Proč
2026-10-14 ~19:25Z: commity na větvích založených na aktuálním masteru byly odmítnuty v každém worktree s \"FAIL wiring ssh-permissions-on-commit — providers-check --permissions-only is not invoked by <primary checkout>/.githooks/pre-commit\". core.hooksPath je relativní `.githooks` a git 2.55 ho řeší proti HLAVNÍMU worktree (`git -C <linked worktree> rev-parse --git-path hooks` odpovědělo cestou primárního), takže všech 329 propojených worktree spouštělo hooky primárního checkoutu, který stál na afbc25924a (2026-10-11). Opraveno ručně v 19:3xZ se souhlasem vlastníka: .githooks primárního obnoveno z origin/master, zapnuto extensions.worktreeConfig (repositoryformatversion 1) a každému propojenému worktree nastaveno core.hooksPath = jeho vlastní absolutní .githooks v config.worktree. Worktree vytvořené po tom se opět vrací k primárnímu.
Aktuální stav
Nastavení pro jednotlivé worktree existuje jen tam, kde bylo zadáno ručně; `majordomus worktree create` ho nenastavuje; kontrola zapojení v doctoru čte, co odpoví `git rev-parse --git-path hooks`, aniž by řekla, hooky kterého stromu to jsou.
Cílový stav
`majordomus worktree create` (a `worktree migrate`/repair) nastaví worktree vlastní core.hooksPath a zapne extensions.worktreeConfig, když je vypnuto; doctor selže, s příkazem, který to napraví, když se hooky propojeného worktree řeší mimo jeho vlastní strom; hlavní worktree si ponechává `.githooks`.
Rozsah
- apps/majordomus-cli/src/worktree
- apps/majordomus-cli/src/commands/worktree.rs
- lib/doctor.sh
- docs/WORKTREES.md
- test/cases
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Worktree vytvořený příkazem `majordomus worktree create` odpovídá na `git rev-parse --git-path hooks` vlastním .githooks
- doctor v propojeném worktree, jehož hooky se rozpoznávají do jiného stromu, selže s opravným příkazem
- Cesta hooků hlavního worktree je beze změny
Validace
- bin/majordomus plan validate
Požadované důkazy
- worktree_runs_its_own_hooks_case
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| worktree_runs_its_own_hooks_case | test | MJ_TEST_JOBS=4 bash test/run.sh 3036_a_worktree_runs_its_own_hooks | ok 3036_a_worktree_runs_its_own_hooks 100s (0 skipped) na 09c334079f5 se spustitelným souborem z #1304: worktree create naváže vlastní .githooks (relativní i absolutní hooksPath), commit tam spustí vlastní pre-commit worktree, doctor selže na wiring hooks-path v ručně vytvořeném worktree, hooks path primárního zůstává beze změny; dodáno ve velkém topu 11e53f5a451 a 51faa7a5c76 | 09c3340 |
Časová osa
- zahájeno
- 2026-10-16T16:39:12Z
- ověřeno
- 2026-10-16T16:39:17Z
- dokončeno
- 2026-10-16T16:39:25Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I2718.yaml. Přečtěte jej zpět pomocí majordomus plan show I2718.