Co to znamená
majordomus start vyžaduje --scope: cesty repozitáře, kterých se tato úloha smí dotknout. Zaznamenává rozsah, profil, vlastníka a stav gitu v state/current.yaml. Dokud je výsledek toho záznamu active, druhý start ve stejném checkoutu se odmítne s exit kódem 15. Úloha končí příkazem finish nebo handover --close; další start starý záznam archivuje, místo aby ho zahodil.
Princip
lib/start.sh rozdělí --scope podle čárek (opakované příznaky se kumulují), normalizuje každou cestu — bez úvodního ./, bez koncového /, bez .., bez absolutních cest — a odmítne vše, co uniká z repozitáře. Záznam zapíše atomicky a připojí task.started do knihy. Rozsah pak čtou check a finish, které před porovnáním obě strany znovu normalizují, takže ručně upravená položka s koncovým lomítkem stále obsahuje své soubory.
Jak to vidět
majordomus start "fix auth" --scope lib/auth/,./test/auth
# started t-… profile=implementation scope=lib/auth,test/auth
majordomus start "second" --scope lib/other
# majordomus: task t-… is active ('fix auth'); run majordomus handover or majordomus finish firstCo nepokrývá
Jedna úloha na checkout se vynucuje; jeden checkout na souběžného zapisovatele je rada. Dvě relace sdílející jeden checkout si budou blokovat pushe, dokud se nedeklarují rozsahy — což se stalo při budování tohoto webu a proč návrh žádá worktree na zapisovatele.
Proč existuje
Ve zdrojovém prostředí byla deklarace rozsahu volitelným druhým krokem po vytvoření worktree; deset z osmnácti aktivních worktrees žádnou nikdy nedeklarovalo, takže blokující kontrola byla ve většině případů nedosažitelná. Co lze přeskočit, přeskočí se; zde je deklarace součástí start.