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.

Přijetí "hotovo" jen proto, že to řekl model

Plynulé tvrzení o dokončení se bere jako důkaz, protože nic předem nezapsalo, co by muselo platit.

→ přijal „hotovo“, protože to řekl model, a druhý den ráno za to zaplatil

cena, když k tomu dojde
vysoká
jak často
běžné

Okamžik

„Hotovo. Všechny testy procházejí.“ Mergujete. Ráno je pipeline červená, změna se dotkla souboru, na který se nikdo neptal, a „testy“, které prošly, byly ty dva, které worker zvolil ke spuštění.

Proč k tomu dochází

„Hotovo“ bylo slovo v přepisu. Nikdo nezapsal před začátkem práce, co by muselo platit, aby byla přijata — takže jediným důkazem bylo tvrzení samotného workera a plynulé tvrzení je levné. Studovaná prostředí byla toho plná: stavová pole s hodnotami ve volném textu, poznámky o dokončení, které nikdy nevznikly, a zdokumentovaná auditní stopa po krocích, kterou nikdy nezkontrolovala žádná kontrola.

Proč to lepší model nevyřeší

Schopnější model vytvoří přesvědčivější tvrzení o dokončení. To je zcela špatná osa: problém je v tom, že se tvrzení používá tam, kde se vyžadují důkazy, a řešením je kontrola, která tvrzení nečte. Sebejistota a správnost jsou nezávislé a čím plynulejší pracovník, tím méně se na jejich korelaci dá spolehnout.

Co to stojí

Přepracování je ta malá část. Velká část je eroze signálu: jakmile „hotovo“ několikrát znamenalo „tvrzeno jako hotovo“, nikdo to slovo k ničemu nepoužije a každé dokončení musí člověk znovu ověřit, což je právě náklad, který měli pracovníci odstranit.

Co Majordomus dělá

majordomus finish vyhodnotí kontrakt řádek po řádku a každý řádek vypíše jako pass nebo fail: dotčené soubory v deklarovaném rozsahu; vlastní ověřovací příkaz projektu proběhl a skončil nulou nad stromem, který se pod ním nehnul, se zaznamenaným příkazem, návratovým kódem, délkou a stromem; záznam úlohy stále popisuje tento checkout; žádná otevřená otázka k této úloze není nevyřešená; existuje předávka nebo poznámka o dokončení s požadovanými sekcemi. Pokud kterýkoli řádek selže, nic se nezapíše.

Výsledek je hodnota z uzavřeného slovníku — completed, partial, blocked, no_match, failed — ne próza. no_match znamená, že práce byla vykonána a hledaná věc neexistuje; failed znamená, že práci nebylo možné vykonat. V chatu vypadají podobně a jsou to různá fakta. Každé odmítnutí jmenuje příkaz, který selhávající řádek reprodukuje.

Před a po

before   worker: "Done. All tests pass."     -> merged

after    majordomus finish --outcome completed --verify-command "make test"
           OK   scope_respected
           FAIL verification_ran   exit 1   [reproduce: make test]
         nothing written

Jak to ověřit

Spusťte finish s ověřovacím příkazem, který selže. Nic se nezapíše, selhávající řádek je jmenován a vytiskne se příkaz k reprodukci. Pak to opravte a spusťte znovu; hlavní kniha nese návratový kód, trvání a strom, které byly skutečně pozorovány.

Co nedělá

Spouští ověřovací příkaz, který mu dáte; nerozhoduje, které testy záleží. Požadavek na regresní test v profilu debugging kontroluje jen, zda byla dotčena cesta tvaru testu, ne co test prokazuje. Nerevidouje kód.

Jak to vypadá

Konkrétní situace, jedna pro každé publikum. Každá je deklarována v záhlaví okamžiku, takže stav před a po jsou data, ne próza, od které by se stránka mohla odchýlit.

  1. "Všechny testy projdou" ai-native-team

    před
    Worker spustil dva testy, které si vybral; ráno je pipeline červená a změna se dotkla souboru, na který se nikdo neptal.
    po
    `finish` odmítne, dokud nebyl spuštěn vlastní ověřovací příkaz projektu a neskončil s nulou, a zaznamená příkaz, jeho exit kód a dobu trvání.
  2. Stav, který býval odstavcem engineering-lead

    před
    Zpráva říká, že migrace je dokončena; o týden později se zjistí, že její druhá polovina zůstala nedotčená.
    po
    Výsledek je hodnota z uzavřeného slovníku — completed, partial, blocked, no_match, failed — a `partial` je věc, kterou worker může poctivě říct.
  3. Auditor se ptá, co bylo zkontrolováno enterprise

    před
    Jediným artefaktem je chatový log, ve kterém stroj tvrdil úspěch.
    po
    Účetní kniha nese událost finish s ověřovacím příkazem, jeho exit kódem a dobou trvání, připojenou k úloze a commitu.

Jak to poznáte

Pozorovatelné příznaky, které tento okamžik deklaruje. Jsou dotazníkem na indexu a vstupem pro majordomus why diagnose; nic jiného je nedefinuje.

  • Práce byla tento týden přijata na základě toho, že worker řekl, že je hotová. done-was-a-sentence
  • Něco mergnuté jako dokončené se ukázalo jako rozbité a rozbití bylo celou dobu vidět. red-the-next-morning
  • Nikdo nedokáže říct, které ověření skutečně proběhlo pro poslední přijatou změnu. which-tests-ran

Kde to v nástroji najdete

Vše níže je načteno z vlastního záhlaví tohoto okamžiku a ověřeno proti repozitáři. Neexistující název by neprošel validací.

příkazy, které na to odpovídají

schopnosti spustitelného souboru, které na to odpovídají

co dohlíží — odvozeno z tvrzení níže

tvrzení, která tuto stránku podpírají, a důkazy za každým z nich

pravidla, která jej řídí

  • majordomus.verification-integrity
  • majordomus.verify-outcomes
  • majordomus.define-done-first
  • majordomus.note-integrity

případy užití, které ukazují cestu ven

Pokud vám tohle zní povědomě, další také

Co tento okamžik pojmenovává, co pojmenovává jeho a co sdílí jeho oblast, publikum nebo štítky. Druhé a třetí je odvozeno; zapsáno je jen první.

Všech 38 a jak souvisejí s nástrojem →

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