Jak zatrzymać sprint w trakcie?
Sprint prowadzony pętlami składa się z trzech warstw i każdą zatrzymujesz osobno. Pętle uruchamiają pracę, sesje ją wykonują, a status sprintu w panelu jest od nich niezależny.
| Warstwa | Co to jest | Jak zatrzymać |
|---|---|---|
| Pętla dyspozytora | /loop 15m /monolynx:sprint-run albo skrypt sprint_run.sh |
zamknij sesję z pętlą albo przerwij skrypt |
| Pętla kolejki | /loop 10m /monolynx:mr-queue |
zamknij sesję z pętlą |
| Sesje ticketów | osobne sesje w tle, po jednej na ticket | claude stop <id> dla każdej |
| Sprint w panelu | stan Aktywny | zostaje bez zmian, dopóki nie uruchomisz sprint-end |
- Zatrzymaj obie pętle
Zamknij sesje, w których działa
/loop. Od tej chwili nie wystartuje żadna nowa sesja i żaden merge request nie zostanie zmergowany. - Sprawdź, co jeszcze pracuje
Komenda
claude agentspokazuje sesje w tle razem z identyfikatorami. - Zatrzymaj sesje, których nie chcesz
Użyj
claude stop <id>. Sesje, które mają dokończyć pracę, zostaw: skończą ticket i ustawią status Review bez pętli. - Zostaw sprint aktywny
Stanu w panelu nie zmieniaj. Po przerwie uruchamiasz pętle ponownie i sprint idzie dalej.
$ claude agents
sklep-SKL-12-opus a1b2c3d4 running
sklep-SKL-14-opus e5f6a7b8 running
$ claude stop a1b2c3d4Czym różni się stop od rm?
Obie komendy należą do Claude Code i dotyczą sesji w tle. Różnią się tym, co zostaje po ich użyciu.
| Cecha | claude stop <id> |
claude rm <id> |
|---|---|---|
| Proces sesji | zatrzymany | usunięty |
| Rozmowa | zostaje; wracasz przez claude attach <id> |
usunięta |
| Katalog roboczy ticketu | zostaje | usunięty razem z sesją |
| Niewypchnięte zmiany | zostają | komenda odmawia, dopóki ich nie wypchniesz albo świadomie nie porzucisz |
Jak wyjąć jeden ticket ze sprintu?
Kolejność ma znaczenie. Dyspozytor czyta wszystkie tickety przypisane do aktywnego sprintu. Ticket bez żywej sesji i w statusie innym niż Do zrobienia, Review albo Gotowe uznaje za awarię i raz wznawia pracę sam. Dotyczy to także statusu Backlog, dlatego sam status nie wystarczy: ticket trzeba odpiąć od sprintu.
- Odepnij ticket od sprintu
W panelu otwórz edycję ticketu, wyczyść pole sprintu i ustaw status Backlog. Ticket znika z listy, którą czyta dyspozytor, i przestaje się liczyć w
remaining. - Zatrzymaj sesję ticketu
Znajdź ją w
claude agentsi użyjclaude stop <id>. - Zdecyduj o zmianach
Branch ticketu zostaje w repozytorium. Możesz go porzucić, dokończyć ręcznie albo wrócić do sesji przez
claude attach <id>. - Zamknij merge request, jeśli powstał
Otwarty merge request trafiłby do kolejki przy następnym ticku.
Co z ticketami, które od niego zależą?
Ticket zależny czeka, aż jego bloker dostanie status Gotowe. Jeśli wyjmujesz bloker ze sprintu, zdejmij relację blokowania z ticketów zależnych albo wyjmij je razem z nim. Inaczej zostaną w sprincie jako praca, której nikt nie zacznie, a linia statusu dyspozytora nigdy nie dojdzie do remaining=0.
Jak odblokować kolejkę merge requestów?
Kolejka mr-queue prowadzi merge requesty po kolei i nie przeskakuje pozycji. Gdy pierwsza stoi, stoi cała kolejka.
| Sytuacja | Co robi kolejka | Co robisz Ty |
|---|---|---|
| brak zatwierdzenia | pyta w rozmowie, w tle kończy turę linią MR-QUEUE STOP |
odpowiadasz "tak" albo zatwierdzasz w GitLabie lub GitHubie |
| dwie nieudane rundy naprawy CI | oddaje sprawę człowiekowi | poprawiasz branch sam albo zamykasz merge request |
| merge request bez pipeline'u | werdykt needs_human, pozycja czeka |
uruchamiasz CI na branchu albo mergujesz ręcznie |
| pipeline anulowany albo ręczny | werdykt needs_human, bez ponawiania |
ponawiasz pipeline albo uruchamiasz jego ręczne zadania |
| merge request oznaczony jako draft | pozycja czeka | zdejmujesz status draft albo zamykasz merge request |
| merge request, którego już nie chcesz | nadal jest pierwszy w kolejce | zamykasz go na platformie |
Zamknięty merge request kolejka pomija sama przy następnym ticku. Listę pozycji trzyma plik .git/monolynx/mr-queue.json w repozytorium. Pozycję możesz też oznaczyć w nim jako closed, prosząc o to sesję kolejki.
Jak poprawić listę kolejki?
Pliku .git/monolynx/mr-queue.json nie edytuj ręcznie: jego format pilnuje skrypt kolejki. W sesji, w której działa kolejka, napisz zwykłym zdaniem, co ma się stać, na przykład "oznacz !42 jako zamknięty w kolejce". Sesja wykona operację skryptem i pokaże nową listę.
Jak cofnąć zły merge do brancha sprintu?
Zmergowany ticket, który okazał się błędny, cofasz zwykłym poleceniem git na branchu sprintu. Historii nie przepisujesz, bo opierają się na niej branche pozostałych ticketów.
$ git switch sprint/platnosci
$ git pull
$ git log --merges --oneline -5
$ git revert -m 1 <skrót commita merge>
$ git push- Cofnij merge
Polecenie
git revertdodaje nowy commit, który odwraca zmianę. Poprzednie commity zostają. - Załóż nowy ticket na poprawkę
Ticket cofniętej zmiany ma status Gotowe i zamkniętą historię. Poprawioną wersję opisz w nowym tickecie i dodaj go do sprintu.
- Sprawdź tickety zależne
Sesje, które wystartowały po złym merge, mają tę zmianę w swoich branchach. Ich merge requesty po cofnięciu mogą mieć konflikt, a kolejka rozwiąże go, wciągając branch sprintu.
Co się dzieje w projekcie bez CI?
Praca nad ticketem nie wymaga CI. Komenda work uruchamia lint i testy lokalnie, z komend zapisanych na stronie wiki toolchain. Dopiero kolejka opiera decyzję o merge na wyniku CI.
| Element | Z CI | Bez CI |
|---|---|---|
work i work-simple |
lint i testy lokalnie, potem merge request | bez zmian |
sprint-run |
startuje sesje ticketów | bez zmian; dyspozytor nie zależy od CI |
mr-queue |
merguje po zielonym CI | każda pozycja dostaje werdykt needs_human; mergujesz sam |
| Status Gotowe | ustawia kolejka po merge | ustawiasz sam po merge |
Czy dwie osoby mogą prowadzić pętle na jednym sprincie?
Nie powinny. Dyspozytor czyta listę sesji w tle z komputera, na którym działa. Sesji uruchomionych na innej maszynie nie widzi, więc ticket W trakcie wygląda dla niego jak porzucony i dostaje wznowienie. Efekt to dwie sesje nad jednym ticketem.
| Układ | Czy działa |
|---|---|
| jedna osoba prowadzi obie pętle, reszta zatwierdza merge requesty | tak |
jedna osoba prowadzi pętle, druga robi pojedynczy ticket komendą work |
tak, o ile ticket nie jest przypisany do aktywnego sprintu |
| dwie osoby prowadzą dyspozytora na dwóch komputerach | nie; sesje się dublują |
Agent pracuje na koncie osoby, która go uruchomiła. Komentarze, statusy i zapisy w wiki mają więc jej autora, a zakres tego, co agent może zrobić, wyznacza jej rola w projekcie.
Co po awarii komputera albo zamknięciu terminala?
Pętla /loop żyje tak długo jak sesja, w której działa. Po restarcie komputera nie ma ani pętli, ani sesji ticketów. Stan projektu jest jednak na platformie, a kod na branchach.
- Uruchom pętle ponownie
Z tego samego katalogu i z tym samym
MONOLYNX_MR_TARGETw środowisku. - Przeczytaj raport pierwszego ticku
Tickety W trakcie bez sesji dostaną jedno automatyczne wznowienie.
- Sprawdź sekcję "Czekają na człowieka"
Trafiają tam tickety, które wznowienie już wykorzystały.
- Posprzątaj katalogi robocze
Komenda
git worktree listpokazuje kopie repozytorium, które zostały po sesjach. Te należące do zakończonych ticketów usuwaclaude rm <id>.
Najczęstsze pytania
Czy zatrzymanie pętli psuje sprint?
Nie. Pętla tylko uruchamia ticki. Stan sprintu, ticketów i kolejki jest zapisany poza nią, więc po ponownym uruchomieniu wszystko idzie dalej.
Czy mogę zamknąć sprint z niedokończonymi ticketami?
Tak. Komenda sprint-end pyta o potwierdzenie, a niedokończone tickety tracą przypisanie do sprintu i dostają status Backlog. Tego kroku nie da się cofnąć.
Sesja czeka na moją odpowiedź. Mogę ją po prostu usunąć?
Lepiej nie. Sesja czekająca ma zwykle niewypchnięte zmiany. Wejdź do niej przez claude attach <id>, odpowiedz albo każ jej zakończyć pracę.
Dyspozytor wznowił ticket, który sam zatrzymałem. Dlaczego?
Ticket został przypisany do aktywnego sprintu, a jego sesja zniknęła. Dla dyspozytora to awaria. Odepnij ticket od sprintu, zanim zatrzymasz sesję.
Skąd wiem, że nic już nie pracuje?
Komenda claude agents nie pokazuje żadnej sesji z nazwą Twojego projektu, a linia statusu dyspozytora ma running=0.
Słownik i następny krok
- Pętla
- komenda powtarzana co stały czas: dyspozytor albo kolejka
- Sesja w tle
- osobny proces agenta pracujący nad jednym ticketem
- Katalog roboczy ticketu
- osobna kopia repozytorium dla jednej sesji; po angielsku worktree
- Automatyczne wznowienie
- jednorazowe ponowne uruchomienie sesji ticketu przez dyspozytora
- Werdykt
- stan ticketu albo merge requesta policzony przez skrypt, na przykład
needs_human
Pracę nad jednym ticketem obok działających pętli, poprawki po recenzji i odświeżanie brancha sprintu opisuje wpis Praca ręczna w trakcie sprintu. Objawy i przyczyny typowych usterek zbiera wpis Gdy coś nie działa w Monolynx. Jak czytać raporty pętli i odpowiadać sesjom, opisuje wpis Sesje w tle: jak obserwować pętle sprintu. Wymagania i dostęp zbiera wpis Zacznij tutaj: czym jest Monolynx i czego potrzebujesz.
Chcesz widzieć, co każda sesja robi w danej chwili?
Zobacz moduł Pipelines w Monolynx