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.

Jeden pracovník vrací změnu jiného pracovníka

Pracovník uvidí ve své cestě nevysvětlenou změnu, usoudí, že je chybná, a odstraní ji — správně, podle důkazů, které měl.

→ sledoval, jak jeden pracovník schválně vrací změnu jiného pracovníka

cena, když k tomu dojde
vysoká
jak často
občasné

Okamžik

Worker přidá ochranu pro případ, na který narazil po těžké cestě. O hodinu později ji druhý worker při úklidu téže funkce smaže: nemá test, nemá komentář a vypadá jako defenzivní šum. Obě změny jsou rozumné. Jedna z nich je regrese.

Proč k tomu dochází

Druhý pracovník neměl jak zjistit, že první změna byla záměrná. Úprava bez zaznamenaného důvodu je k nerozeznání od nehody a schopný pracovník, který uklízí soubor, odstraní to, co vypadá nahodile. Izolace tu nepomůže: změna už přistála, takže oba pracovníci viděli tentýž strom.

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

Silnější druhý worker ochranu odstraní spíše, ne méně pravděpodobně — bude si jistější, že ta cesta kódem je nedosažitelná, a uvažuje ze stejných chybějících důkazů. Chyběla věta, která říká, proč ochrana existuje.

Co to stojí

Chyba se vrací, a vrací se potichu, protože změna, která ji znovu zavedla, vypadá jako úklid. Obnova stojí původní vyšetřování podruhé, navíc archeologii, jejímž cílem je zjistit, která ze dvou věrohodných změn byla ta špatná.

Co Majordomus dělá

Zde se setkávají dva mechanismy. Rozsah činí souběžné vlastnictví viditelným: majordomus start vyžaduje cesty, kterých se úloha smí dotknout, a jiný worktree držící překrývající se rozsah je hlášen v okamžiku, kdy práce začne. Rozhodnutí činí minulý záměr čitelným: decision add odmítne rozhodnutí bez --why, zaznamená odmítnutou alternativu a vypočítá úlohu a head z gitu. Další worker se sestavuje s nedávnými rozhodnutími ještě před startem.

Před a po

before   A: + if (session == null) return;      (reason: in A's head)
         B: - if (session == null) return;      (reason: looks unreachable)

after    B: majordomus start ... --scope lib/session
            OVERLAP ../checkout-a holds lib/session (task t-0091, active)
            decisions: "the guard covers the legacy mobile callback" — t-0091

Co nedělá

Nezamyká soubory a neblokuje změnu. Zda má pojistka zůstat, je úsudek; úkolem nástroje je zajistit, aby se úsudek činil s důvodem před očima.

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. Pojistka, která vypadala nadbytečně ai-native-team

    před
    Pracovník A přidá null guard pro případ, který objevil; pracovník B o hodinu později refaktoruje tutéž funkci a odstraní jej jako mrtvý kód.
    po
    Ochrana byla přidána pod deklarovaným rozsahem; start B hlásí, že A drží tyto cesty, a důvodem je záznam rozhodnutí, který B dostane.
  2. Dvě konvence, jeden soubor platform-team

    před
    Dva workeři uplatňují na tentýž soubor během týdne dvě různé konvence formátování, každý ruší práci druhého.
    po
    Konvencí je kontextový dokument s rozsahem pro daný adresář, který rozeznávají oba.
  3. Revert, který se dostal do revize engineering-lead

    před
    Recenzent vidí změnu, která odstraňuje opravu, bez vysvětlení na jedné či druhé straně, a musí rekonstruovat, která z nich je správná.
    po
    Ledger nese obě události s jejich úlohami a heads a záznam o rozhodnutí říká, proč ochrana existuje.

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.

  • Změnu provedenou tento týden odstranil jiný worker, který ji považoval za chybu. change-reverted
  • Workeři pravidelně narážejí na úpravy ve své cestě, které nic nevysvětluje. unexplained-edit
  • Tentýž řádek byl měněn tam a zpět různými relacemi. ping-pong

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.scope-integrity
  • majordomus.one-worker-one-scope
  • majordomus.externalise-decisions

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.