Plán
milníky jsou specifikace výsledků a úkoly jsou prováděcí smlouvy; stav, vlny provádění a další připravený úkol se odvozují z grafu závislostí a nikdy se neukládají
milníky jsou specifikace výsledků a úkoly jsou prováděcí smlouvy; stav, vlny provádění a další připravený úkol se odvozují z grafu závislostí a nikdy se neukládají
Kde to žije
Stav, který vlastní
Co to implementuje
Specifikováno v
Příkaz, který na to působí
majordomus plan
Model milníků a úkolů — ověřte ho, přečtěte ho a proveďte jím jeden úkol.
- mění stav
- --json
majordomus plan <subcommand> [options]
Podívat se, jak odmítá a jak přijímá
plan čte kanonický projektový model a posouvá jím jeden úkol. Stav se nikdy neukládá — odvozuje se z toho, co bylo o úkolu zaznamenáno, a ze stavu jeho závislostí. Každý scénář zde se provádí proti skutečnému binárnímu souboru pomocí test/cases/34_command_fixtures.sh.
Pro tento repozitář platí
# Installed, with a canonical project model carrying one milestone and two issues, the # second depending on the first. The helpers come from test/lib.sh, which the fixture # runner has already sourced. . "$FIXTURE_SETUP/installed.sh" pj_init pj_milestone M000 pj_issue I0001 M000 pj_issue I0002 M000 I0001
Spustit
$ majordomus plan validate
Výstup obsahuje
- milestone
- issue
- 0 selhání
ukončení
0
Schémata, odkazy, graf závislostí a konzistence stavů v jednom průchodu. Klíč, který nikdo nečte, je zde chyba ze stejného důvodu jako v politice: nečtené pole je přesvědčení, které nic nekontroluje.
Pro tento repozitář platí
# A repository with Majordomus installed and projections generated, and one commit of work. "$MJ" init >/dev/null "$MJ" update >/dev/null mkdir -p lib docs echo a > lib/a echo d > docs/d git add . && git commit -qm base
Spustit
$ majordomus plan validate
Výstup obsahuje
- žádný kanonický projektový model
ukončení
12
Kód 12 je MISSING_ARTIFACT: repozitář není nastaven pro model projektu, což je jiná skutečnost než model, který se nepodaří parsovat.
Pro tento repozitář platí
# Installed, with a canonical project model carrying one milestone and two issues, the # second depending on the first. The helpers come from test/lib.sh, which the fixture # runner has already sourced. . "$FIXTURE_SETUP/installed.sh" pj_init pj_milestone M000 pj_issue I0001 M000 pj_issue I0002 M000 I0001
Spustit
$ majordomus plan ready
Výstup obsahuje
- I0001
ukončení
0
I0002 závisí na I0001, takže připraven je jen I0001. Připravenost se odvozuje z grafu, a ne štítkuje na úkolu, takže se nemůže rozcházet se závislostmi.
Pro tento repozitář platí
# Installed, with a canonical project model carrying one milestone and two issues, the # second depending on the first. The helpers come from test/lib.sh, which the fixture # runner has already sourced. . "$FIXTURE_SETUP/installed.sh" pj_init pj_milestone M000 pj_issue I0001 M000 pj_issue I0002 M000 I0001
Spustit
$ majordomus plan blocked
Výstup obsahuje
- I0002
ukončení
0
Doplněk připravenosti, který jmenuje závislost, a ne jen skutečnost, že je blokováno — užitečná otázka je, co dokončit první.
Pro tento repozitář platí
# Installed, with a canonical project model carrying one milestone and two issues, the # second depending on the first. The helpers come from test/lib.sh, which the fixture # runner has already sourced. . "$FIXTURE_SETUP/installed.sh" pj_init pj_milestone M000 pj_issue I0001 M000 pj_issue I0002 M000 I0001
Spustit
$ majordomus plan explain
Výstup obsahuje
- plan
ukončení
2
Kód ukončení 2 je USAGE. Překlepnutý podpříkaz se odmítne, místo aby se bral jako výchozí, takže skript se nemůže mlčky zeptat na jinou otázku, než zamýšlel.
Co to vynucuje
- majordomus.dag-integrity blokující vynucuje doctor, watch Graf závislostí úkolů je acyklický, každá hrana pojmenovává existující úkol a žádný úkol se neprovádí před závislostí, která není hotová.
- majordomus.project-integrity blokující vynucuje doctor, watch Každý soubor milníku a úkolu se parsuje, nese id, které tvrdí jeho název souboru, a neobsahuje klíč, který nikdo nečte.
- majordomus.roadmap-integrity blokující vynucují doctor, watch Žádný dokument není druhou autoritou pro plán rozvoje a žádný milník si nepíše vlastní verzi. Dokud existuje ručně psaná tabulka plánu rozvoje, nesmí uvádět release, v němž nebyl vydán žádný milník, ani skrýt ten, který milník nesl; release milníku (released_in) se odvozuje ze záznamů release, nikdy se nepíše.
Co je zaručeno
- zaručeno Milníky a úkoly jsou kanonické soubory repozitáře a klíč, který nikdo nečte, je chybadokázáno test/cases/40_project_model.sh
- zaručeno Stav úkolů a milníků se odvozuje ze zaznamenaných faktů a nikde se neukládádokázáno test/cases/41_project_status.sh
- zaručeno Cyklus, závislost sama na sobě a závislost na úkolu, který neexistuje, jsou každé odmítnuty jménemdokázáno test/cases/42_dag_waves.sh
- zaručeno Vlny provádění se počítají z grafu a úkoly jedné vlny, které se dotýkají týchž cest, se hlásí jako serializovanédokázáno test/cases/42_dag_waves.sh
- zaručeno Úkol nelze dokončit, dokud chybí požadovaný důkazdokázáno test/cases/41_project_status.sh
- zaručeno Plán rozvoje se odvozuje ze stavu milníků a žádný dokument nesmí být jeho druhou autoritoudokázáno test/cases/49_roadmap_doctrine.sh
- zaručeno Milníky a úkoly GitHubu se generují z kanonického modelu a ručně upravená generovaná oblast je nahlášena, ne přepsánadokázáno test/cases/45_github_projection.sh
- zaručeno Projekce, která se přestane aplikovat, zčervená build, a kontrola, která nedosáhne na GitHub, to ohlásí, místo aby prošlaprokázáno test/cases/97_github_gate.sh
- zaručeno Pull request, který upravuje promítnutý záznam plánu, se neodmítne jen proto, že GitHub úpravu ještě nezobrazuje, a trunk se pro něj odmítne, jakmile uplyne deklarované oknodokázáno test/cases/1038_a_head_is_judged_against_what_it_changes.sh
- zaručeno Stav záměru se odvozuje z milníků, které ho realizují, a každé kritérium z ledgeru důkazů, a je splněn jen tehdy, dokud každé kritérium má aktuální úspěšný běhdokázáno test/cases/367_an_intent_is_satisfied_only_by_evidence.sh
- zaručeno Záměr, jehož kritérium jmenuje důkaz, který se nevyřeší na nic, je odmítnut jménemdokázáno test/cases/367_an_intent_is_satisfied_only_by_evidence.sh
- zaručeno Jakmile pod záměrem existuje práce, kritérium, kterému neslouží žádný úkol, úkol pod jeho milníky, který neslouží ničemu, a odkaz na neexistující kritérium jsou každé odmítnuty jménemdokázáno test/cases/386_a_plan_is_held_to_its_intent.sh
- zaručeno Mezera, která nechává kritérium bez odpovědi, se odmítá, a úkol sloužící záměru, který začal bez kritiky nebo zatímco je otevřen blokující nález, selže při validaci záměrudokázáno test/cases/386_a_plan_is_held_to_its_intent.sh
- zaručeno Práce realizující záměr se spojuje napříč relacemi, poskytovateli a předávkami a záměr, jehož milníky jsou všechny uzavřeny, zatímco důkazy kritéria selhávají, je odmítnut s uvedením tohoto kritériaprokázáno test/cases/388_an_intent_is_realised_across_providers_and_held_to_reality.sh
- zaručeno Dotázán před prací na úkolu, `intent preflight` jmenuje záměry, kterým úkol slouží, s platnou správou, nebo odmítne s uvedením příčinydokázáno apps/majordomus-cli/tests/intent.rs
- zaručeno Cockpit ukazuje každý záměr s jeho odvozenou fází na /cockpit/intents a kritéria, důkazy, sloužící úkoly a realizující práci jednoho záměru na /cockpit/intents/<id>dokázáno apps/majordomus-cli/tests/intent_realization.rs
- zaručeno Kde politika vyžaduje vazbu, je zahájení úkolu nebo úlohy, která slouží záměru bez kritiky nebo s otevřeným blokujícím nálezem, odmítnuto při zahájení, nikoli hlášeno potédokázáno test/cases/962_plan_start_asks_the_binding_in_both_engines.sh
Okamžiky, na které to odpovídá
- přečetl tři plány rozvoje jednoho projektu a nevěřil žádnému Plán vedený v próze je snímek a každá jeho kopie se rozchází svým tempem; uložený stav je tvrzení, které platí i poté, co se svět pohnul.
- našel hotovou práci na větvi, kterou nikdo nikdy nemergoval Workeři vyprodukují mnohem víc, než integrace pojme, a nic nerozlišuje práci hotovou od práce hotové a přistálé.
- našel podstatnou změnu, kterou nikdy nepožadoval žádný úkol, ticket ani plán Práce přichází bez vymezeného kontraktu, takže její rozsah, kritéria přijetí i vlastnictví se rozhodují až zpětně.
- uzavřel úkol, jehož kritéria přijetí nikdo skutečně neověřil Dokončení se eviduje jako změna stavu v trackeru, a ne jako důkaz v repozitáři, takže se obojí okamžitě rozejde.
- se zeptal, kam milník dospěl, a musel se jít ptát čtyř lidí Pokrok je agregát, který existuje jen v lidech, protože části, které agreguje, se nikdy nezaznamenaly ve tvaru, který by šel sečíst.
- nedokázal reprodukovat výsledek, protože nic nezaznamenalo stav, ze kterého vzešel Výsledek je zaznamenaný, podmínky, které ho vytvořily, nikoli, takže je to anekdota, a ne měření.