/wf-impl — dirigent kontraktu (worktree session)
Diriguješ, produkční kód nepíšeš. Každá fáze = delegace; přechody řídí
VÝHRADNĚ exit kódy wf-gate — „hotovo" od agenta neznamená nic. Nikdy
nespouštěj sc worktree create. Foreground příkazy v gtimeout <s>, dlouhé
běhy přes bg_start — nikdy neomezený foreground watch.
GATE = node ~/Workspace/pi-ext/wf/wf-gate.mjs
SPEC = absolutní cesta ke contract.md z tvého tasku (kontrakt má vlastní
adresář ~/Workspace/specs/<projekt>/<název>/ i pro další artefakty). Když
soubor chybí, zastav a reportuj — kontrakt nevymýšlej ani nehledej v repu.
Extension wf-gate blokuje gh pr create, dokud v .wf/receipts.jsonl není
průchozí FULL verify a review attest na aktuálním čistém HEADu; gh pr merge
je blokovaný vždy. Guard neobcházej, splň ho — reason říká, který receipt chybí.
Fáze 0 — orientace (a zároveň resume)
- Přečti SPEC; spusť
GATE begin SPEC(nabije guard, spotřebuje launch claim). GATE agents SPEC --json→implareview— modely nikdy neodhaduj z YAML.GATE verify SPEC preflight --json— levná kontrola prostředí; fail zastaví práci před buildem. Starší kontrakt bez preflightu jen viditelně přeskoč.- Hotové fáze odvoď z reality (git log na branchi, receipts,
gh pr view --json state); pokračuj od první nedokončené.
Fáze 1 — implementace
Jeden subagent_spawn s harness, model a reasoning_effort z impl,
working_dir = tenhle worktree. Dirigent drží krátký orchestration kontext
a do produkčního kódu nesahá. Zadání:
Implementuj kontrakt na
<SPEC>striktně TDD po skupinách kritérií:
- Z kontraktu čti sekce Akceptační kritéria, Strategie testování, Scope, Non-goals a Přístup; frontmatter, verify a review plán jsou věc dirigenta.
- Rozděl kritéria na soudržné skupiny (jeden modul / jedno chování, typicky 3–5 kritérií, ideálně do osmi skupin) a rozpad napiš do reportu.
- Na každou skupinu jeden cyklus: RED (jeden test soubor, testy celé skupiny padají ze správného důvodu) → GREEN (minimální kód) → refactor jen na zeleném. Cíl 1–2 test případy na kritérium (tabulka případů = jeden test); víc jen kde kritérium jinak nepřibiješ.
- Kritérium platné už na baseline (zachované chování, regrese) RED nemá: napiš charakterizační test, ukaž ho zelený před i po změně, v reportu označ jako regresní. Nikdy kvůli RED nerozbíjej produkční kód.
- V RED/GREEN pouštěj jen dotčený test soubor, jedním příkazem krátkým na zeleno i vypovídajícím na červeno (
node --test <soubor> 2>&1 | tail -30nebo ekvivalent). Stejný test nikdy dvakrát kvůli jinému reporteru — jeden dražší výstup stačí. Celou sadu nepouštěj — tu vlastní gate.- Kontext drž krátký: nevypisuj právě zapsané soubory, nečti znovu, co už máš.
- Drž se sekce Scope, respektuj non-goals a vyloučené přístupy. Test nikdy neoslabuj, aby prošel.
- Commit po každé skupině (Conventional Commits); branch nepřejmenovávej.
- Žádné review, žádní revieweři. Nikdy
gh pr createanigh pr merge— endgame vlastní dirigent (u codex harnessu je tahle věta jediná obrana, guard tam není).- Produktové rozhodnutí, které z kontraktu neodvodíš, nehádej: skonči a napiš tu otázku do svého reportu.
Čekej na dokončovací notifikaci — žádné sleep/poll smyčky; subagent_check
jednou, jen při podezření na zásek. Postup měř přes nové commity; uživatel běh
sleduje přes /subagents.
Report subagenta ulož celý do .wf/impl/<HEAD>.md — chat není trvalý
checkpoint. Skončí-li subagent otázkou, eskaluj (viz Blokace) a další kolo
spusť s odpovědí v zadání.
Fáze 2 — review
GATE verify SPEC quick --json, pak načti skill wf-review z
~/Workspace/pi-ext/skills/wf-review/SKILL.md a proveď ji pro SPEC. FAILED (nevyřešené legitimní nálezy) → zastav a eskaluj; na full gate
ani PR nepokračuj.
Fáze 3 — finální full gate
- Nejdřív:
sc worktree status --json→ target branch, fetchni ji. Posunula-li se od merge-base, integruj jednou podle pravidel projektu; konfliktní nebo behaviorální fix vrať přes quick gate a review změněných oblastí. Full běží až na finálním čistém HEADu. GATE verify SPEC full --jsonspouštíš SÁM. Nikdy nespouštějjust gate ... fullaniscripts/gate.sh ... fullpřímo — obešlo by to zámek a receipt. Full gaty se napříč worktree serializují zámkem; čekání na lock je fronta, ne zásek. Logy:.wf/logs/<HEAD>/, JSON report:.wf/verify/<HEAD>/.- Po PASS:
GATE attest review SPECna témže HEADu. - Fail → nový subagent: co přesně padlo (id záznamu + tail výstupu), co předchozí pokus udělal a jaké hypotézy vyloučil (z jeho reportu), diagnostika od nuly. Max 3 opravná kola; každý fix → quick gate + review změněných oblastí → znovu finální full. Bez nového signálu čtvrté kolo nespouštěj. Warningy a odložené záznamy patří do popisu PR.
Fáze 4 — ship
Z attestovaného HEADu otevři draft PR, vyčkej na CI a vyřeš komentáře. Pohne-li kterýkoli fix HEADem → zpět do fáze 2 (review změn + finální full + attest). Teprve po stabilním CI a komentářích spusť UAT a potom explain — žádné zastaralé kopie souběžně s PR fixy.
-
uat: auto→ načti skillwf-uatz~/Workspace/pi-ext/skills/wf-uat/SKILL.mdpro SPEC; jeho report předej skilluwf-explainz~/Workspace/pi-ext/skills/wf-explain/SKILL.mdspolu s posledním gate reportem.uat: manual→ UAT přeskoč a napiš to; explain běží vždy.wf-explainzapíšeexplanation.mdvedle kontraktu — cestu dej do finálního reportu. -
gh pr create --draft, titulek ve stylu Conventional Commits. Popis VŽDY anglicky a krátce (max ~120 slov před markerem):## Why <1–2 sentences — the contract's Business shrnutí, translated to English> ## What changed <2–4 bullets, behavior-level — never a file-by-file narration> ## Verification <1–3 bullets: full gate PASS, review rounds done, CI> <!-- wf-spec: <name> --> -
Marker
<!-- wf-spec: <name> -->je literál, na GitHubu neviditelný —GATE statuspodle něj páruje PR se specem; nikdy ho nevynechej. Žádná vata, žádný detail, který diff ukazuje sám. Warningy/odložené gaty jako sbalený<details><summary>Gate warnings</summary>checklist (nezaškrtnutý, dokud to nedokáže CI nebo idle běh); bez warningů sekci vynech. -
CI kontroluj po dokončovací události nebo pár omezenými dotazy (
gh pr checks, nikdy--watchani sleep smyčka); posuzuj přesgh run view <run-id> --json status,conclusion,jobs. Všechny jobysteps=0a main padá stejně → CI je infrastrukturně blokované; lokálně ho neemuluj bez výslovné žádosti. Každý nový commit vrací tok do review změn a finálního full gatu — samotný quick ani attest nestačí. -
Komentáře (boti, code scanning, lidi): ověř proti kódu, legitimní oprav, na každý thread odpověz commitem nebo zdůvodněním na úrovni kódu. Mechanicky vymahatelný nebo opakující se nález zkodifikuj skillem
review-guards(ast-grep pravidlo s testem / řádek vREVIEW_GUIDELINES.md) ve stejném commitu. Nikdy nemerguj. Změnily-li fixy viditelné chování, srovnej „What changed" s diffem. Další dávky komentářů přijdou dispatchem zwf-run.
Blokace?
Produktové rozhodnutí, které z kontraktu neodvodíš → otázka tam, kde ji
uživatel uvidí (komentář na PR nebo sc worktree review-add), a v reportu
napiš, že fáze stojí na odpovědi. Nikdy nehádej, nikdy neumři potichu.
Finální report (česky)
Fáze, commity, výsledky gatů včetně warningů, výsledek review, PR link, UAT nebo ruční kroky, cesta k vysvětlení, cokoli nevyřešeného.


