Okamžik
README má plán rozvoje. GitHub má milníky. Plánovací dokument má diagram. V červnu to byl tentýž plán. Dnes je úkol na GitHubu zavřený, v dokumentu otevřený a v README chybí a worker právě začal práci, která na něm závisí.
Proč k tomu dochází
Plán napsaný prózou je snímek a každá jeho kopie je další snímek, který se rozchází po svém. Nejhorší je stav: „done“ napsané do pole je tvrzení, ne pozorování, a v tom poli zůstává pravdivé, i když se svět posunul. Práce se pak vybírá z paměti, ne podle pořadí závislostí, takže se něco začne dřív než to, co to potřebuje, a diagramy se překreslují ručně, dokud je někdo přestane překreslovat.
Proč to lepší model nevyřeší
Pracovník, který má vybrat další úlohu, čte kteroukoli kopii, na kterou byl odkázán. Nemůže vědět, že existují dvě další, a už vůbec ne, která ze tří je nejméně zastaralá. Podat mu všechny tři vyrobí pracovníka, který musí hádat, což dělali lidé.
Co to stojí
Práce zahájená v nesprávném pořadí, což se projeví mnohem později jako přepisování. Plánovací porady strávené srovnáváním dokumentů místo rozhodování. A pomalé opouštění všech tří kopií, po němž plán žije v hlavách několika lidí.
Co Majordomus dělá
Plán tvoří dva druhy kanonických souborů, kontrolovaných proti seznamu povolených, kde klíč, který nikdo nečte, je chyba. Milník je spustitelná specifikace výsledku. Úkol je omezený prováděcí kontrakt: cesty, kterých se smí dotknout, úkoly, na kterých závisí, jeho akceptační kritéria a důkazy, které jeho dokončení vyžaduje. Nikde se neukládá žádný stav. READY, BLOCKED, ACTIVE, VERIFY a DONE se odvozují z toho, co o sobě úkol zaznamenává, a ze stavu jeho závislostí, pokaždé když běží majordomus plan; zapsané pole stavu je neznámý klíč.
plan validate odmítne cyklus, závislost samu na sobě a závislost na neexistujícím úkolu, každé jménem. plan waves spočítá pořadí provádění z grafu a úkoly v jedné vlně, které se dotýkají týchž cest, hlásí jako serializované. plan start odmítne úkol, který není připraven, a pojmenuje, na co čeká; plan done odmítne, dokud je jakýkoli deklarovaný důkaz nepokrytý nebo závislost není hotová. Plán rozvoje na tomto webu a milníky na GitHubu jsou projekce týchž souborů.
Před a po
before README roadmap | GitHub milestones | planning doc three snapshots
after $ majordomus plan next
I0813 READY session-knowledge-integration (deps I0806, I0812 done)
$ majordomus plan done I0042
refused: evidence 'gap_reproduced' is uncoveredJak to ověřit
Přidejte hranu závislosti a spusťte plan next: množina připravených se změní, aniž by se upravil jakýkoli stav. Zaveďte cyklus a plan validate ho pojmenuje. Nic nikde nenese pole stavu, protože seznam povolených hodnot žádné odmítne.
Co nedělá
Neodhaduje, neplánuje ani neprioritizuje; řadí podle závislostí a hlásí, co je připraveno. Model je dobrovolný: repozitář bez něj doctor přeskočí, ne selže. Projekce běží jedním směrem — GitHub se zapisuje ze souborů a nic napsaného na GitHubu se do nich nikdy nekopíruje zpět.