Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Blokující otázka blokuje dál i poté, co se práce předá nové úloze

Nevyřešená položka ve state/open-questions.md odmítne finish --outcome completed, jakákoli položka, ne jen ta, kterou otevřela aktivní úloha. Předejte práci, začněte novou úlohu a otázka dokončení stále odmítá, protože je stále nezodpovězená.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Kontrola čte každou nevyřešenou položku v úložišti, a ne jen položky aktivní úlohy, takže předávka nemůže vyprat blokátor. Úložiště je lokální pro checkout, takže otázky, které kontrola vidí, jsou ty položené v této pracovní kopii. Odmítá se jen dokončený finish; blocked, partial, no_match a failed jsou poctivá nedokončení a odmítnuta nejsou. Libovolná úloha smí vyřešit libovolnou otázku. Alternativy - přenést otázku s předávkou nebo podmínit kontrolu překryvem rozsahu - byly v M001 zamítnuty s případem, který každá z nich řeší špatně.

Co to znamená

Nevyřešená položka v state/open-questions.md odmítne finish --outcome completed — jakákoli položka, nejen ta, kterou otevřela aktivní úloha. Předejte práci, začněte novou úlohu a otázka stále odmítá dokončení, protože stále není zodpovězena.

Odmítá se jen dokončení. blocked, partial, no_match a failed jsou poctivá prohlášení, že práce neskončila, a žádné z nich není kontrolováno: odmítnout je by koupilo zelenou kontrolu tím, že by někdo musel výsledek označit nepravdivě.

Princip

mj_question_unresolved_any vrací každý nevyřešený řádek v úložišti a přeskakuje blok HTML komentáře s vlastním příkladem souboru — každá nová instalace ho obsahuje a prohledávání, které by ho nepřeskočilo, by odmítlo první dokončený finish, jaký kdo zkusil. mj_validate_blockers ho volá, uvádí, kolik jich je otevřených, a cituje první, a question resolve prohledává stejný seznam, takže kterákoli úloha může vyřešit kteroukoli otázku. Kontrola, kterou nikdo nemůže splnit, je kontrola, která se obchází.

Nic nového se neukládá. Úložiště je lokální pro checkout, takže otázky, které kontrola vidí, jsou ty položené v této pracovní kopii, a záznam si drží id úlohy, která se ptala — původ přežije rozšíření.

Jak to vidět

majordomus question add "does the legacy client still need the plain method?"
majordomus finish --outcome blocked                            # allowed; the question is the reason
majordomus start "continue the same work" --scope lib/auth
majordomus finish --outcome completed --verify-command "make test"  # refused: 1 unresolved question(s) on this branch
majordomus question list                                       # it is named, with a number
majordomus question resolve 1 --answer "no; retired in 4.0"
majordomus finish --outcome completed --verify-command "make test"  # accepted

Co nepokrývá

Otázka o opuštěné práci blokuje vše po ní. Pokud je práce, o které otevřená otázka byla, zahozena a nikdo otázku nezodpoví ani nevyřadí, každé další úloze na té větvi je odmítnuto dokončení, dokud někdo nenapíše odpověď. To je případ, ve kterém je toto chování záměrně špatně. Je hlasité — question list ho pojmenuje a jeden příkaz ho odstraní — a proto bylo zvoleno místo alternativ, jejichž selhání bylo tiché.

Je vymezena na checkout, ne na repozitář ani větev: úložiště leží pod .ai/local/, které git ignoruje, takže otázka položená v jiném worktree je tu neviditelná, dokud ji nepřenese předávka. Dva workeři sdílející jednu pracovní kopii sdílejí její blokátory, což je táž vazba, kterou už mají u každého jiného lokálního záznamu.

Neexistuje sloveso pro stažení. Otázka, na kterou se ukáže, že není třeba odpovídat, se vyřeší odpovědí, která to říká; přidat druhý způsob uzavření by byl druhý slovník pro tentýž úkon.

Proč existuje

Kontrola je jediný mechanismus nástroje, který zastavuje práci z lidského důvodu, a měla únik: to, co mělo odmítnout přijetí, přestalo odmítat v okamžiku, kdy práce přešla na novou úlohu. Zjistilo se to spuštěním zdokumentované sekvence end-to-end, ne recenzí, a bylo to zveřejněno jako plánované tvrzení bez implementace a bez testu, dokud M001 nerozhodlo mezi alternativami.

Dvě varianty byly zamítnuty. Přenesení otázky spolu s předávkou vyžaduje buď úpravu úložiště, která ničí záznam o tom, kdo se ptal, nebo pole původu, což je nový stav; a blokuje nesouvisející práci pokaždé, když předávka přejde na něco jiného. Podmínění překryvem rozsahu mezi úlohou, která se ptala, a úlohou, která končí, je heuristika zastupující věcnou souvislost, a když chybí archivovaný záznam úlohy, selže otevřeně — tedy stejná třída vady, která se opravuje. Obě selhávají tiše. Tato selhává nahlas a to byla rozhodující vlastnost.

Detail vykreslený z docs/claims/blocker-survives-handover.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Blokující otázka blokuje dál i poté, co se práce předá nové úloze

    Vytvořeno na Kontrakt dokončení, Finish.

  2. 2 · kanonické tvrzení

    blocker-survives-handoverdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si na tomto webu · docs/CONTINUITY.md

  3. 3 · implementace

    lib/check.sh · majordomus check

  4. 4 · test a scénáře

    Test: test/cases/50_blocker_across_handover.sh

    Provedeno v Předání práce s otázkou, která je stále otevřená, a ponechání její blokující role.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 50_blocker_across_handover

Kde se toto tvrzení používá

Související tvrzení stejná implementace

Okamžiky, na které to odpovídá

Prohledává názvy a popisy všech stránek, které tento web publikuje.