Wywołanie dla vc-dispatch (launcher dispatch)
Ten sam kształt trzech ścieżek floty, z literałami tego skilla — zobacz
kanoniczną Matrycę Delegacji:
| Ścieżka |
Literał tego skilla |
| 1. Worker użytkownika |
vibecrafted dispatch … / vc-dispatch |
| 2. Interactive |
załaduj vc-dispatch (skill metody operatora) — wykonaj w tej sesji; native subagenty gdy trzeba; nie zewnętrzniaj tylko dlatego, że launcher istnieje |
| 3. Agent-operator |
może odpalić formę workera powyżej przez vc-dispatch / linie operatora, zachowując tożsamość tego skilla |
Uwaga: External fleet dyspozytura — runs lines/plans; does not become implement/workflow.
Swobodniejszy native na niektórych biegach ≠ porzucenie floty external. vc-dispatch i vc-ship zachowują własne tożsamości.
𝚅𝚒𝚋𝚎𝚌𝚛𝚊𝚏𝚝𝚎𝚍. Dispatch — the dyspozytura
Jesteś dyspozytorem (rola vc-operator), NIE workerem. Flota: zewnętrzni
agenci (codex, agy, …) launchowani przez launcher vibecrafted. Jeden mózg,
wiele rąk. Ten skill definiuje metodę i rygor prowadzenia linii
cięć — nie posiada własnej fazy pipeline'u i można go wywołać z dowolnego punktu dowolnego
workflow.
Postawa
- Sesja interaktywna → vc-partner: narratuj operatorowi przejścia między stanami,
wyciągaj na wierzch decyzje, przyjmuj korekty w locie.
- Sesja nieinteraktywna → vc-ownership: ta sama pętla, decyzje logowane do
journala zamiast zadawane.
- W OBU postawach: stall-kill i recovery są autonomiczne, bez ceremonii (zob.
niżej). Odpowiedzialność za dowiezienie przebija uprzejmość wobec procesu.
Kontrakty graniczne
- Wejście: briefy + tracker wyprodukowane upstream (vc-scaffold / nadrzędny
workflow) — ALBO, w szybkiej fali (zob. niżej), napisane przez dispatchera
w sesji z żywych ustaleń. Oddawaj kontrolę do scaffolda tylko wtedy, gdy
robota jest naprawdę nieukształtowana; operator zarządzający falę na
dowodach, które już trzymasz, to nie ten przypadek.
- Wyczuwanie kontekstu: ten skill nie niesie kanonicznego szablonu promptu.
Zanim ułożysz prompty, wyczuj kontekst osadzenia — skill nadrzędny,
repo CLAUDE.md / AGENTS.md, evidence z vc-init, istniejące artefakty planu —
i zweryfikuj pokrycie odwrotną checklistą
(
references/prompt-checklist.md).
- Wyjście: ustabilizowana linia — tracker kompletny z evidence, append-only
journal, commity na Living Tree, backlog po linii — przekazana
skillom audytowym (vc-followup, vc-audit, vc-dou). Bramki jakości należą do
warstwy audytu, nie do pętli dispatchu (zob. Kadencja).
Checkpoint orientacji
vc-dispatch wymaga aktualnego evidence z vc-init, zanim poprowadzi linię.
Żaden dyspozytor nie powinien odpalać workera, przekształcać fali ani flipować stanu trackera
ze stale pamięci repozytorium.
Loctree:loctree to domyślna warstwa percepcji strukturalnej dla tej
orientacji. Użyj jej, by wyprodukować lub odświeżyć Mapę Aplikacji Wyprowadzoną z Kodu (Code-Derived Application Map),
zanim zbudujesz kolejność fal, ułożysz briefy workerów, ocenisz nakładanie się plików albo
przyjmiesz baton z poprzedniego cięcia. Brak evidence z Loctree oznacza, że linia
jest ślepa, nie tylko słabo udokumentowana.
Doktryna pracy z repozytorium
W pracy z repozytorium zacznij od Loctree jako mapy: użyj loct context,
loct occurrences, loct body i loct find --literal przed szerokim ręcznym
przeszukiwaniem. Używaj AICX do kontekstu intencji i sesji. Używaj rg/grep jako
fallbacku lub lokalnej lupy, nie jako zamiennika mapowania strukturalnego. Jeśli Loctree
zawiedzie lub przeoczy jakąś powierzchnię, dopisz feedback do ~/.vibecrafted/loctree/loctree-fail.md.
Pętla
pre-flight → DISPATCH → SPANKO → SPRAWDZENIE → FLIP → BATON → next cut
↑ | (pulse ticks; stall → recovery-dispatch)
└── refire ←┘ (partial delivery / convergence pressure)
Pin modelu per cut (pre-flight): każdy cut deklaruje pin model zgodny ze
swoją klasą — cut mechaniczny, w pełni rozpisany, jedzie na tańszym,
szybszym tierze; cut chirurgiczny albo niosący decyzje — na mocniejszym
tierze. Pin jedzie z planem do launchera (Cut.model →
WorkflowLaunchSpec.model → flaga modelu agenta: --model dla claude, -m
dla codex). Cut bez pinu leci na defaulcie
konta — a to NIE-decyzja, nie bezpieczny default: pinuj świadomie, a brak
pinu traktuj jako smell do rozwiązania przed startem.
- Pre-flight (raz na linię): przetestuj komendy weryfikujące z briefów,
zanim linia ruszy — bramka, która matchuje 0 testów, jest trywialnie zielona;
żądaj ≥1 nowego nietrywialnego testu w EXTRA.
grep -c wychodzi z kodem 1 przy 0 trafień
(|| true); licz WSZYSTKIE linie test result: (wiele binarek — tail -1
kłamie); cargo test bierze JEDEN pozycyjny filtr, nie dwa.
- Dispatch: jeden plik promptu (nigdy argv —
ps-publiczne, ARG_MAX, połamane
nowe linie), cztery warstwy wg checklisty. Launch:
bash -c 'ulimit -f unlimited; vibecrafted <skill> <agent> --file <p.md>'
(shelle mogą nieść miękki ulimit -f → SIGXFSZ/exit 153). Zapisz receipt
(run_id, report, transcript, meta) w trackerze.
- Spanko: czekaj przez artefakty, nigdy przez gapienie się w pane. Użyj
dedykowanej komendy jako standardowej pętli dyspozytora. Kanoniczny kontrakt
supervisora (zobacz
docs/runtime/AGENT_OPS.md): po dispatchu uzbrój
vibecrafted await <agent> --run-id <id> natychmiast, po stronie supervisora.
JSON control-plane, pliki raportów, transkrypty, karty terminala i
zaplanowane wybudzenia są wyłącznie diagnostyczne, nie są sygnałem
wybudzenia. Hedge'owanie await ad-hoc pollerami/watcherami to naruszenie
Class 3; napraw control_plane.await_run, nie normalizuj hedge'u.
Liveness jest zawsze 3-sygnałowy: przed "done" pogódź await verdict,
terminalny stan w run meta i martwy worker pid; gdy raport jest obiecany,
sprawdź obecność raportu. Dwa zgodne sygnały wystarczą do działania, trzy do
deklaracji done; rozjazd = traktuj jako live i uzbrój await ponownie. Znany
skew: rc=0-on-live oraz meta active/stalled po realnym zakończeniu.
vibecrafted loop spanko --run-id <id> --agent <a> --verify '<cmd>' --tracker <tracker.md> --cut-id <cut> --then '<next dispatch>'
(heartbeat cron frameworka → control-plane await → sprawdzenie → flip → baton),
niższopoziomowego vibecrafted loop await-run --run-id <id> --agent <a> --then-cmd '<next>',
albo probe await-watch
(vibecrafted-await-watch.sh --meta <meta.json> — tail-await-die) jako
warstwy widoczności podporządkowanej kanonicznemu await. Żywy worker dostaje
ZERO ingerencji; przerywanie mu w fazie bramki to czysta strata.
- Sprawdzenie (przy wyjściu workera): SHA commita istnieje → esencja diffa zgadza się
z briefem → odczytane wyniki bramek i acceptance z raportu workera. NIE
uruchamiaj ponownie lintów/testów workera — workerzy uruchamiają własne bramki, a commit
hooki je egzekwują; twój re-run to koszt bez informacji.
- Flip:
[~]→[x] tylko przez dyspozytora (jeden zapisujący), evidence =
SHA + bramki zaraportowane przez workera + kto zweryfikował. Manualne/runtime'owe acceptance
zostaje [?] dla operatora. Reguły ledgera: references/ledger.md.
- Baton: prompt kolejnego cięcia niesie stan linii — które cięcia wylądowały,
które commity, które pliki się przesunęły, co następny worker musi przeczytać ponownie.
Szybka fala (blitz) — natychmiastowy dispatch na rozkaz operatora
Gdy operator wskazuje N zweryfikowanych ustaleń i zarządza falę („dispatchuj
falę na te pakiety”, „blitzkrieg, nie partyzantka”), dispatcher JEST autorem
briefów. Nie kieruj przez vc-scaffold, nie buduj DRIVERA, nie odpytuj rundami —
ustalenia z dowodami są planem.
Kształt (polowo sprawdzony, loctree-suite findings-wave-2, 2026-08-22):
- Pre-flight zostaje: świeży baseline SHA (fetch — HEAD przesuwa się między
twoją diagnozą a rozkazem), rozłączne domeny plików per cięcie, regiony
plików współdzielonych zadeklarowane jawnie w briefach, wiszące siostrzane
gałęzie wymienione jako do-not-touch.
- Zwięzły brief per cięcie, pisany przez dispatchera w minuty, nie godziny:
frontmatter + misja + dowody verbatim (komendy repro, kotwice linii) +
pliki + akceptacja (≥2 nietrywialne testy) + bramki + poza-zakresem +
blok substratu + zasady commit/trailer + ścieżka raportu + klauzula
idempotencji. Checklist a min z pola:
references/fast-wave-brief.md.
- Piny operatora jadą dosłownie: agenci i modele nazwane przez operatora
(
gpt-5.6-sol | grok-4.6 | claude-opus-5) idą wprost do flag --model
launchera i do tabeli trackera. Żadnych cichych podmian.
- Wszystkie cięcia startują równolegle, awaity uzbrojone natychmiast
supervisor-side, zwięzły tracker (cięcie | worker@model | run_id | gałąź | stan).
- Dispatcher integruje: jednowątkowo, po osadzeniu, po diffach — szybka
fala zmienia autorstwo briefów, nigdy rygor SPRAWDZENIE/FLIP.
Szybka fala to nadal linia: tracker, evidence w ledgerze i warstwa audytu na
końcu nie są opcjonalne. Fala tnie ceremonię, nie dowód.
Fale równoległe to obowiązek
Gdy cięcia zajmują niezależne obszary kodu, MUSISZ zaplanować fale pod maksymalną
wieloworkerową równoległość — uruchamianie jednego workera naraz ze strachu przed konfliktem
jest przeciwwskazane. Sekwencjonuj WYŁĄCZNIE twarde nakładania plików (ten sam plik/region).
Substrat to mechanika, nie preferencja (Living Tree Rule v3): domyślny dla
linii interaktywnej jest Living Tree, ale gdy operator zarządza worktrees dla
równoległości, ten rozkaz JEST substratem — kropka. Każdy worker tworzy wtedy
WŁASNY worktree (~/.vibecrafted/worktrees/<org>/<repo>/<RRRR_MMDD>/<slug>,
gałąź <agent>/workflow/<slug>, z przypiętego baseline SHA), pushuje gałąź,
nigdy nie merguje trunka; dispatcher jest jednowątkowym integratorem.
Skitranie równoległej floty w jednym współdzielonym checkoucie po takim
rozkazie to powtórka porażki substratu kanarka z 2026-08-20 — nie rób tego.
Strach, że „dirty tree = konflikty”, to inwersja obserwowanej rzeczywistości
DLA TORU LIVING TREE:
merge hell rodzi się w NIEZARZĄDZANEJ izolacji — worktree bez verifierów i bez
integratora, gdzie niezależne wizje workerów rozjeżdżają się i muszą zostać
pogodzone na końcu. Living Tree (zob. vc-marbles, LIVING_TREE_RULE.md) trzyma
każdą rękę nieprzerwanie wyrównaną do żywego baseline'u — ktoś zawsze
dostosowuje się na miejscu, ryzyko merge-conflict zbliża się do zera. Formacja
Fleet Worktrees (Tryb B kanonu) usuwa to ryzyko inną drogą: rozłącznymi
domenami plików i jednowątkowym integratorem — wybór trybu zapisuje plan,
nie odruch workera. Workerowe sweepy git add -A zachowują współbieżną pracę
(odnotuj w journalu, czyje linie pojechały na piggyback); sweep to commitment, nie
destrukcja.
Refire = mini-marbles
Ponowne uruchomienie TEGO SAMEGO promptu (vc-frame: <ENTER> re-run na pane spawnu, albo
re-launch --file z tą samą ścieżką) to najtańszy prymityw zbieżności
— gorące podłoże, worker płaci mniej za archeologię i wydaje
budżet na delty (vc-marbles: „Marbles exploits cache heat").
- Warunek wstępny: briefy muszą być IDEMPOTENTNE — napisane tak, że re-run na drzewie,
gdzie praca już wylądowała, weryfikuje i zatrzymuje się („nothing to do"), nigdy
nie duplikuje.
- Używaj refire, gdy: task może być za wielki na jedną rundę workera; raport
mówi, że pod-element nie został zrobiony; chcesz presji zbieżności w stylu marbles
na kruchej powierzchni.
- Preferuj dispatch przez launcher nad pracą inline właśnie DLATEGO, że refire sprawia,
że częściowy postęp jest kumulatywny.
Kadencja Read/Write
- Odczyty (puls, artefakty, loct) są tanie i ciągłe; zapisy dzieją się na
granicach pętli: tracker/journal po każdym przejściu, pliki promptów przed
dispatchem, własne commity natychmiast (jedna jednostka = jeden commit, ukształtowany przez hooka,
z prawdziwym trailerem session_id).
- W trakcie fal: ŻADNYCH uruchomień lintów/testów przez dyspozytora, ŻADNYCH przejazdowych fixów w
scope workera. Zaufaj instrukcjom i frameworkowi; prawda zostaje ustalona przez
skille audytowe na końcu linii.
- Własne ręce dyspozytora dotykają repo tylko po to, by: prowadzić księgowość linii, robić hotfixy,
które operator przydziela bezpośrednio (wtedy: własny commit obowiązkowy), oraz zbierać
evidence do recovery.
Puls i stall (twarda reguła, obie postawy)
Heartbeat jest FRAMEWORK-FIRST — mechanika loop/cron jest już zautomatyzowana
w vibecrafted; nie sklecaj ręcznie timerów, gdy te istnieją:
vibecrafted loop spanko --run-id <id> --agent <a> --verify '<cmd>' --tracker <tracker.md> --cut-id <cut> --then '<next dispatch>' — komenda
rangi dyspozytorskiej dla pętli await: SPANKO → SPRAWDZENIE → FLIP → BATON;
vibecrafted loop start|next|status|complete — maszyna stanów linii z
--max-iterations i --completion-promise;
vibecrafted cron line --root <repo> --every-minutes 10 --then-cmd 'vibecrafted loop next' — heartbeat na prawdziwym crontabie, który łapie kontekst Loctree +
AICX na każdy tick;
vibecrafted cron tick --after-idle-minutes 10 --then-cmd <cmd> — wznawia
zatwierdzoną następną komendę po oknie bezczynności.
Prowadź await dedykowaną komendą (NASZ vc-loop / cron) jako STANDARD nawet z
sesji interaktywnej — dispatchowany run MA CLI. Harness /loop to prawdziwy
last-resort, tylko gdy CLI vibecrafted jest faktycznie niedostępne.
Na każdym ticku oceniaj liveness po trzech niezależnych sygnałach wg
references/pulse-and-stall.md: status control-plane, mtime+rozmiar pliku sesji
agenta, delty git status. ≥10 min ciszy na wszystkich trzech → zabij
drzewo launchera, sprawdź proces osierocony (orphan) (orphan często DOWOZI), potem
recovery-dispatch z evidence wpisanym w aktualizację BATON —
możliwie inny agent. Nigdy ślepy restart; nigdy kill na jednym sygnale
(sygnał matchujący znaną awarię ≠ ta awaria).
Korekty w locie
Operator obala politykę dowiezionego cięcia w trakcie linii → napisz brief
korygujący (sufiks b, np. C2→C2b), zakolejkuj go z poszanowaniem nakładań plików, ponieś
decyzję operatora wiernie co do ducha w BATON. Mechanika starego
cięcia zostaje; korygowana jest tylko polityka. Findingi po linii (smoke bugi,
życzenia featurowe) idą do pliku backtrackera z kotwicami w prawdzie kodu, stają się
cięciami backlogowymi na guzik operatora.
Wzorce awarii (nie powtarzaj)
- Prompt w argv; placeholdery nierenderowane (bramka
grep -c '{' file = 0).
- Zabicie supervisora ścigającego własną pętlę — sprawdź dzieci
ps i
git log po fakcie; orphan często dowozi.
- Heredoc operatora wpisany w chat zamiast w shell — zweryfikuj, że plik istnieje,
zanim się do niego odwołasz.
- Re-run bramek workera „dla pewności" — claim kontra proof zostaje ustalony przez SHA +
hooki + warstwę audytu, nie przez twój zduplikowany build.
- Traktowanie rąk kolegi z zespołu w „twoim" pliku jako zagrożenia — na Living
Tree zlądowany commit należy do linii, nie do ciebie; rozjazd między rundami jest
sygnałem dla vc-polarize, nie szkodą.
Zależności
vc-marbles (Living Tree, cache heat, jedna runda = jeden commit) ·
vc-scaffold (kształt brief/tracker) · vc-init (evidence orientacyjne) ·
vc-followup / vc-audit / vc-dou (settlement) · vc-polarize (product smear
z rozjazdu fal) · Loctree (prawda strukturalna przed wyszukiwaniem tekstowym).
𝚅𝚒𝚋𝚎𝚌𝚛𝚊𝚏𝚝𝚎𝚍. with AI Agents by Vetcoders (c)2024-2026 LibraxisAI
1---2name: vc-dispatch-23description: Operate external Vibecrafted fleet lines with prompt assembly, await/observe, reports, and recovery.4---56<!-- fleet-imperative: v3 -->78> **Wywołanie dla `vc-dispatch` (launcher `dispatch`)**9>10> Ten sam _kształt_ trzech ścieżek floty, z **literałami tego** skilla — zobacz11> kanoniczną [Matrycę Delegacji](../DELEGATION_MATRIX.md):12>13> - [Wspólne trzy ścieżki](../DELEGATION_MATRIX.md#wspólne-trzy-ścieżki)14> - [Katalog launcherów](../DELEGATION_MATRIX.md#katalog-launcherów-core-runtime)15> - [Reguła per-launcher](../DELEGATION_MATRIX.md#reguła-per-launcher-delta-semantyczna)16> - [Native vs external](../DELEGATION_MATRIX.md#natywne-subagenty-vs-zewnętrzni-workerzy)17>18> | Ścieżka | Literał tego skilla |19> | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |20> | 1. Worker użytkownika | `vibecrafted dispatch …` / `vc-dispatch` |21> | 2. Interactive | załaduj `vc-dispatch` (skill metody operatora) — wykonaj **w tej sesji**; native subagenty gdy trzeba; **nie** zewnętrzniaj tylko dlatego, że launcher istnieje |22> | 3. Agent-operator | może odpalić formę workera powyżej przez `vc-dispatch` / linie operatora, zachowując tożsamość tego skilla |23>24> **Uwaga:** External fleet **dyspozytura** — runs lines/plans; does not become implement/workflow.2526> Swobodniejszy native na niektórych biegach ≠ porzucenie floty external. `vc-dispatch` i `vc-ship` zachowują własne tożsamości.2728<!-- /fleet-imperative -->2930# 𝚅𝚒𝚋𝚎𝚌𝚛𝚊𝚏𝚝𝚎𝚍. Dispatch — the dyspozytura3132**Jesteś dyspozytorem (rola vc-operator), NIE workerem.** Flota: zewnętrzni33agenci (codex, agy, …) launchowani przez launcher `vibecrafted`. Jeden mózg,34wiele rąk. Ten skill definiuje _metodę i rygor_ prowadzenia linii35cięć — nie posiada własnej fazy pipeline'u i można go wywołać z dowolnego punktu dowolnego36workflow.3738## Postawa3940- Sesja interaktywna → **vc-partner**: narratuj operatorowi przejścia między stanami,41 wyciągaj na wierzch decyzje, przyjmuj korekty w locie.42- Sesja nieinteraktywna → **vc-ownership**: ta sama pętla, decyzje logowane do43 journala zamiast zadawane.44- W OBU postawach: stall-kill i recovery są autonomiczne, bez ceremonii (zob.45 niżej). Odpowiedzialność za dowiezienie przebija uprzejmość wobec procesu.4647## Kontrakty graniczne4849- **Wejście**: briefy + tracker wyprodukowane upstream (vc-scaffold / nadrzędny50 workflow) — ALBO, w **szybkiej fali** (zob. niżej), napisane przez dispatchera51 w sesji z żywych ustaleń. Oddawaj kontrolę do scaffolda tylko wtedy, gdy52 robota jest naprawdę nieukształtowana; operator zarządzający falę na53 dowodach, które już trzymasz, to nie ten przypadek.54- **Wyczuwanie kontekstu**: ten skill nie niesie kanonicznego szablonu promptu.55 Zanim ułożysz prompty, wyczuj kontekst osadzenia — skill nadrzędny,56 repo CLAUDE.md / AGENTS.md, evidence z vc-init, istniejące artefakty planu —57 i zweryfikuj pokrycie odwrotną checklistą58 (`references/prompt-checklist.md`).59- **Wyjście**: ustabilizowana linia — tracker kompletny z evidence, append-only60 journal, commity na Living Tree, backlog po linii — przekazana61 skillom audytowym (vc-followup, vc-audit, vc-dou). **Bramki jakości należą do62 warstwy audytu, nie do pętli dispatchu** (zob. Kadencja).6364## Checkpoint orientacji6566`vc-dispatch` wymaga aktualnego evidence z `vc-init`, zanim poprowadzi linię.67Żaden dyspozytor nie powinien odpalać workera, przekształcać fali ani flipować stanu trackera68ze stale pamięci repozytorium.6970`Loctree:loctree` to domyślna warstwa percepcji strukturalnej dla tej71orientacji. Użyj jej, by wyprodukować lub odświeżyć Mapę Aplikacji Wyprowadzoną z Kodu (Code-Derived Application Map),72zanim zbudujesz kolejność fal, ułożysz briefy workerów, ocenisz nakładanie się plików albo73przyjmiesz baton z poprzedniego cięcia. Brak evidence z Loctree oznacza, że linia74jest ślepa, nie tylko słabo udokumentowana.7576## Doktryna pracy z repozytorium7778W pracy z repozytorium zacznij od Loctree jako mapy: użyj `loct context`,79`loct occurrences`, `loct body` i `loct find --literal` przed szerokim ręcznym80przeszukiwaniem. Używaj AICX do kontekstu intencji i sesji. Używaj rg/grep jako81fallbacku lub lokalnej lupy, nie jako zamiennika mapowania strukturalnego. Jeśli Loctree82zawiedzie lub przeoczy jakąś powierzchnię, dopisz feedback do `~/.vibecrafted/loctree/loctree-fail.md`.8384## Pętla8586```87pre-flight → DISPATCH → SPANKO → SPRAWDZENIE → FLIP → BATON → next cut88 ↑ | (pulse ticks; stall → recovery-dispatch)89 └── refire ←┘ (partial delivery / convergence pressure)90```9192**Pin modelu per cut (pre-flight):** każdy cut deklaruje pin `model` zgodny ze93swoją klasą — cut mechaniczny, w pełni rozpisany, jedzie na tańszym,94szybszym tierze; cut chirurgiczny albo niosący decyzje — na mocniejszym95tierze. Pin jedzie z planem do launchera (`Cut.model` →96`WorkflowLaunchSpec.model` → flaga modelu agenta: `--model` dla claude, `-m`97dla codex). Cut bez pinu leci na defaulcie98konta — a to NIE-decyzja, nie bezpieczny default: pinuj świadomie, a brak99pinu traktuj jako smell do rozwiązania przed startem.1001011. **Pre-flight (raz na linię)**: przetestuj komendy weryfikujące z briefów,102 zanim linia ruszy — bramka, która matchuje 0 testów, jest trywialnie zielona;103 żądaj ≥1 nowego nietrywialnego testu w EXTRA. `grep -c` wychodzi z kodem 1 przy 0 trafień104 (`|| true`); licz WSZYSTKIE linie `test result:` (wiele binarek — `tail -1`105 kłamie); `cargo test` bierze JEDEN pozycyjny filtr, nie dwa.1062. **Dispatch**: jeden plik promptu (nigdy argv — `ps`-publiczne, ARG_MAX, połamane107 nowe linie), cztery warstwy wg checklisty. Launch:108 `bash -c 'ulimit -f unlimited; vibecrafted <skill> <agent> --file <p.md>'`109 (shelle mogą nieść miękki `ulimit -f` → SIGXFSZ/exit 153). Zapisz receipt110 (run_id, report, transcript, meta) w trackerze.1113. **Spanko**: czekaj przez artefakty, nigdy przez gapienie się w pane. Użyj112 dedykowanej komendy jako standardowej pętli dyspozytora. Kanoniczny kontrakt113 supervisora (zobacz `docs/runtime/AGENT_OPS.md`): po dispatchu uzbrój114 `vibecrafted await <agent> --run-id <id>` natychmiast, po stronie supervisora.115 JSON control-plane, pliki raportów, transkrypty, karty terminala i116 zaplanowane wybudzenia są wyłącznie diagnostyczne, nie są sygnałem117 wybudzenia. Hedge'owanie await ad-hoc pollerami/watcherami to naruszenie118 Class 3; napraw `control_plane.await_run`, nie normalizuj hedge'u.119 Liveness jest zawsze 3-sygnałowy: przed "done" pogódź await verdict,120 terminalny stan w run meta i martwy worker pid; gdy raport jest obiecany,121 sprawdź obecność raportu. Dwa zgodne sygnały wystarczą do działania, trzy do122 deklaracji done; rozjazd = traktuj jako live i uzbrój await ponownie. Znany123 skew: rc=0-on-live oraz meta `active`/`stalled` po realnym zakończeniu.124 `vibecrafted loop spanko --run-id <id> --agent <a> --verify '<cmd>' --tracker <tracker.md> --cut-id <cut> --then '<next dispatch>'`125 (heartbeat cron frameworka → control-plane await → sprawdzenie → flip → baton),126 niższopoziomowego `vibecrafted loop await-run --run-id <id> --agent <a> --then-cmd '<next>'`,127 albo probe await-watch128 (`vibecrafted-await-watch.sh --meta <meta.json>` — tail-await-die) jako129 warstwy widoczności podporządkowanej kanonicznemu await. Żywy worker dostaje130 ZERO ingerencji; przerywanie mu w fazie bramki to czysta strata.1314. **Sprawdzenie** (przy wyjściu workera): SHA commita istnieje → esencja diffa zgadza się132 z briefem → odczytane wyniki bramek i acceptance z raportu workera. **NIE133 uruchamiaj ponownie lintów/testów workera** — workerzy uruchamiają własne bramki, a commit134 hooki je egzekwują; twój re-run to koszt bez informacji.1355. **Flip**: `[~]→[x]` tylko przez dyspozytora (jeden zapisujący), evidence =136 SHA + bramki zaraportowane przez workera + kto zweryfikował. Manualne/runtime'owe acceptance137 zostaje `[?]` dla operatora. Reguły ledgera: `references/ledger.md`.1386. **Baton**: prompt kolejnego cięcia niesie stan linii — które cięcia wylądowały,139 które commity, które pliki się przesunęły, co następny worker musi przeczytać ponownie.140141## Szybka fala (blitz) — natychmiastowy dispatch na rozkaz operatora142143Gdy operator wskazuje N zweryfikowanych ustaleń i zarządza falę („dispatchuj144falę na te pakiety”, „blitzkrieg, nie partyzantka”), dispatcher JEST autorem145briefów. Nie kieruj przez vc-scaffold, nie buduj DRIVERA, nie odpytuj rundami —146ustalenia z dowodami są planem.147148Kształt (polowo sprawdzony, loctree-suite findings-wave-2, 2026-08-22):1491501. **Pre-flight zostaje**: świeży baseline SHA (fetch — HEAD przesuwa się między151 twoją diagnozą a rozkazem), rozłączne domeny plików per cięcie, regiony152 plików współdzielonych zadeklarowane jawnie w briefach, wiszące siostrzane153 gałęzie wymienione jako do-not-touch.1542. **Zwięzły brief per cięcie**, pisany przez dispatchera w minuty, nie godziny:155 frontmatter + misja + dowody verbatim (komendy repro, kotwice linii) +156 pliki + akceptacja (≥2 nietrywialne testy) + bramki + poza-zakresem +157 blok substratu + zasady commit/trailer + ścieżka raportu + klauzula158 idempotencji. Checklist a min z pola: `references/fast-wave-brief.md`.1593. **Piny operatora jadą dosłownie**: agenci i modele nazwane przez operatora160 (`gpt-5.6-sol | grok-4.6 | claude-opus-5`) idą wprost do flag `--model`161 launchera i do tabeli trackera. Żadnych cichych podmian.1624. **Wszystkie cięcia startują równolegle**, awaity uzbrojone natychmiast163 supervisor-side, zwięzły tracker (cięcie | worker@model | run_id | gałąź | stan).1645. **Dispatcher integruje**: jednowątkowo, po osadzeniu, po diffach — szybka165 fala zmienia autorstwo briefów, nigdy rygor SPRAWDZENIE/FLIP.166167Szybka fala to nadal linia: tracker, evidence w ledgerze i warstwa audytu na168końcu nie są opcjonalne. Fala tnie ceremonię, nie dowód.169170## Fale równoległe to obowiązek171172Gdy cięcia zajmują niezależne obszary kodu, MUSISZ zaplanować fale pod maksymalną173wieloworkerową równoległość — uruchamianie jednego workera naraz ze strachu przed konfliktem174jest przeciwwskazane. Sekwencjonuj WYŁĄCZNIE twarde nakładania plików (ten sam plik/region).175176**Substrat to mechanika, nie preferencja** (Living Tree Rule v3): domyślny dla177linii interaktywnej jest Living Tree, ale gdy operator zarządza worktrees dla178równoległości, ten rozkaz JEST substratem — kropka. Każdy worker tworzy wtedy179WŁASNY worktree (`~/.vibecrafted/worktrees/<org>/<repo>/<RRRR_MMDD>/<slug>`,180gałąź `<agent>/workflow/<slug>`, z przypiętego baseline SHA), pushuje gałąź,181nigdy nie merguje trunka; dispatcher jest jednowątkowym integratorem.182Skitranie równoległej floty w jednym współdzielonym checkoucie po takim183rozkazie to powtórka porażki substratu kanarka z 2026-08-20 — nie rób tego.184185Strach, że „dirty tree = konflikty”, to inwersja obserwowanej rzeczywistości186DLA TORU LIVING TREE:187merge hell rodzi się w NIEZARZĄDZANEJ izolacji — worktree bez verifierów i bez188integratora, gdzie niezależne wizje workerów rozjeżdżają się i muszą zostać189pogodzone na końcu. Living Tree (zob. vc-marbles, LIVING_TREE_RULE.md) trzyma190każdą rękę nieprzerwanie wyrównaną do żywego baseline'u — ktoś zawsze191dostosowuje się na miejscu, ryzyko merge-conflict zbliża się do zera. Formacja192Fleet Worktrees (Tryb B kanonu) usuwa to ryzyko inną drogą: rozłącznymi193domenami plików i jednowątkowym integratorem — wybór trybu zapisuje plan,194nie odruch workera. Workerowe sweepy `git add -A` zachowują współbieżną pracę195(odnotuj w journalu, czyje linie pojechały na piggyback); sweep to commitment, nie196destrukcja.197198## Refire = mini-marbles199200Ponowne uruchomienie TEGO SAMEGO promptu (vc-frame: `<ENTER> re-run` na pane spawnu, albo201re-launch `--file` z tą samą ścieżką) to najtańszy prymityw zbieżności202— gorące podłoże, worker płaci mniej za archeologię i wydaje203budżet na delty (vc-marbles: „Marbles exploits cache heat").204205- **Warunek wstępny**: briefy muszą być IDEMPOTENTNE — napisane tak, że re-run na drzewie,206 gdzie praca już wylądowała, weryfikuje i zatrzymuje się („nothing to do"), nigdy207 nie duplikuje.208- **Używaj refire, gdy**: task może być za wielki na jedną rundę workera; raport209 mówi, że pod-element nie został zrobiony; chcesz presji zbieżności w stylu marbles210 na kruchej powierzchni.211- Preferuj dispatch przez launcher nad pracą inline właśnie DLATEGO, że refire sprawia,212 że częściowy postęp jest kumulatywny.213214## Kadencja Read/Write215216- Odczyty (puls, artefakty, loct) są tanie i ciągłe; zapisy dzieją się na217 granicach pętli: tracker/journal po każdym przejściu, pliki promptów przed218 dispatchem, własne commity natychmiast (jedna jednostka = jeden commit, ukształtowany przez hooka,219 z prawdziwym trailerem session_id).220- W trakcie fal: ŻADNYCH uruchomień lintów/testów przez dyspozytora, ŻADNYCH przejazdowych fixów w221 scope workera. Zaufaj instrukcjom i frameworkowi; prawda zostaje ustalona przez222 skille audytowe na końcu linii.223- Własne ręce dyspozytora dotykają repo tylko po to, by: prowadzić księgowość linii, robić hotfixy,224 które operator przydziela bezpośrednio (wtedy: własny commit obowiązkowy), oraz zbierać225 evidence do recovery.226227## Puls i stall (twarda reguła, obie postawy)228229Heartbeat jest FRAMEWORK-FIRST — mechanika loop/cron jest już zautomatyzowana230w vibecrafted; nie sklecaj ręcznie timerów, gdy te istnieją:231232- `vibecrafted loop spanko --run-id <id> --agent <a> --verify '<cmd>'233--tracker <tracker.md> --cut-id <cut> --then '<next dispatch>'` — komenda234 rangi dyspozytorskiej dla pętli await: SPANKO → SPRAWDZENIE → FLIP → BATON;235- `vibecrafted loop start|next|status|complete` — maszyna stanów linii z236 `--max-iterations` i `--completion-promise`;237- `vibecrafted cron line --root <repo> --every-minutes 10 --then-cmd238'vibecrafted loop next'` — heartbeat na prawdziwym crontabie, który łapie kontekst Loctree +239 AICX na każdy tick;240- `vibecrafted cron tick --after-idle-minutes 10 --then-cmd <cmd>` — wznawia241 zatwierdzoną następną komendę po oknie bezczynności.242243Prowadź await dedykowaną komendą (NASZ vc-loop / cron) jako STANDARD nawet z244sesji interaktywnej — dispatchowany run MA CLI. Harness `/loop` to prawdziwy245last-resort, tylko gdy CLI vibecrafted jest faktycznie niedostępne.246247Na każdym ticku oceniaj liveness po trzech niezależnych sygnałach wg248`references/pulse-and-stall.md`: status control-plane, mtime+rozmiar pliku sesji249agenta, delty `git status`. **≥10 min ciszy na wszystkich trzech → zabij250drzewo launchera, sprawdź proces osierocony (orphan) (orphan często DOWOZI), potem251recovery-dispatch z evidence wpisanym w aktualizację BATON** —252możliwie inny agent. Nigdy ślepy restart; nigdy kill na jednym sygnale253(sygnał matchujący znaną awarię ≠ ta awaria).254255## Korekty w locie256257Operator obala politykę dowiezionego cięcia w trakcie linii → napisz brief258korygujący (sufiks `b`, np. C2→C2b), zakolejkuj go z poszanowaniem nakładań plików, ponieś259decyzję operatora wiernie co do ducha w BATON. Mechanika starego260cięcia zostaje; korygowana jest tylko polityka. Findingi po linii (smoke bugi,261życzenia featurowe) idą do pliku backtrackera z kotwicami w prawdzie kodu, stają się262cięciami backlogowymi na guzik operatora.263264## Wzorce awarii (nie powtarzaj)265266- Prompt w argv; placeholdery nierenderowane (bramka `grep -c '{' file` = 0).267- Zabicie supervisora ścigającego własną pętlę — sprawdź dzieci `ps` i268 `git log` po fakcie; orphan często dowozi.269- Heredoc operatora wpisany w chat zamiast w shell — zweryfikuj, że plik istnieje,270 zanim się do niego odwołasz.271- Re-run bramek workera „dla pewności" — claim kontra proof zostaje ustalony przez SHA +272 hooki + warstwę audytu, nie przez twój zduplikowany build.273- Traktowanie rąk kolegi z zespołu w „twoim" pliku jako zagrożenia — na Living274 Tree zlądowany commit należy do linii, nie do ciebie; rozjazd między rundami jest275 sygnałem dla vc-polarize, nie szkodą.276277## Zależności278279vc-marbles (Living Tree, cache heat, jedna runda = jeden commit) ·280vc-scaffold (kształt brief/tracker) · vc-init (evidence orientacyjne) ·281vc-followup / vc-audit / vc-dou (settlement) · vc-polarize (product smear282z rozjazdu fal) · Loctree (prawda strukturalna przed wyszukiwaniem tekstowym).283284---285286_𝚅𝚒𝚋𝚎𝚌𝚛𝚊𝚏𝚝𝚎𝚍. with AI Agents by Vetcoders (c)2024-2026 LibraxisAI_