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.

M000 — Vývoj řízený milníky a DAG

Každá netriviální změna v tomto repozitáři patří ke specifikaci milníku a k jedné smlouvě o provedení úkolu navázané závislostmi, ověřené jako DAG, se stavem odvozeným, nikoli tvrzeným, a promítnutá na GitHub a na web z tohoto jednoho kanonického modelu.

HOTOVO 15 z 15 úkolů hotovo

připraveno
0
blokováno
0
aktivní
0
verify
0
hotovo
15
zrušeno
0

Problém

Práce v tomto repozitáři se plánovala v konverzaci a v záznamech úloh, které popisují vždy jednu relaci. Neexistovala spustitelná specifikace výsledku, graf závislostí mezi kusy práce ani způsob, jak by se nový worker mohl repozitáře zeptat, co dělat dál. Nástroj dohlíží na úlohu; plán, do kterého úloha patřila, nehlídalo nic.

Výsledek

Každá netriviální změna v tomto repozitáři patří ke specifikaci milníku a k jedné smlouvě o provedení úkolu navázané závislostmi, ověřené jako DAG, se stavem odvozeným, nikoli tvrzeným, a promítnutá na GitHub a na web z tohoto jednoho kanonického modelu.

Aktuální stav

Kanonický model, jeho engine, jeho CLI, jeho projekce, jeho doktríny a jeho testy existují a jsou procvičovány vlastními úkoly tohoto milníku. GitHub před touto prací nenesl žádné úkoly ani milníky.

Cílový stav

Čerstvý worker bez historie konverzace spustí `majordomus plan next`, obdrží jeden úkol, provede jej v rámci deklarovaného rozsahu, připojí důkazy a graf přepočítá, co je připraveno, aniž by kdokoli upravoval pole stavu.

Rozsah

  • .majordomus/project
  • lib/project.sh
  • lib/project.awk
  • lib/plan.sh
  • share/allow
  • share/doctrines.yaml
  • scripts/github-sync
  • scripts/generate-site-data
  • web
  • test/cases
  • dokumentace

Mimo rozsah

  • Hostovaný plánovací backend nebo databáze
  • Druhý slovník řízení projektu; milníky a úkoly jsou jediná nová podstatná jména
  • Obousměrný zpětný zápis z GitHubu do kanonických souborů
  • Odhady, burndown, velocity nebo jakýkoli plánovací model

Kritéria přijetí

  • Kanonický model se parsuje, odmítá neznámé klíče a duplicitní id
  • Cyklus závislostí, závislost na sobě samém a neznámá závislost jsou každá odmítnuty pojmenovaným nálezem
  • READY, BLOCKED, ACTIVE, VERIFY, DONE a CANCELLED se odvozují ze zaznamenaných faktů a nikde se neukládají
  • Vlny provádění se počítají z grafu a překrývající se rozsah uvnitř jedné vlny se hlásí
  • DAG v Mermaidu se generuje ze stejného grafu, který čte CLI
  • Milníky a úkoly na GitHubu se vytvářejí a aktualizují z kanonického modelu a drift mezi nimi je hlášen
  • Web vykresluje plán rozvoje, každý milník, každý úkol a DAG z generovaných dat
  • Každý povrch se shoduje: CLI, data webu a projekce GitHubu hlásí stejnou množinu úkolů a stejnou množinu PŘIPRAVENO
  • Změna jedné závislosti mění každý povrch
  • CI odmítne push, jehož kanonický model je neplatný nebo jehož vygenerované artefakty jsou zastaralé

Validace

  • bash test/run.sh
  • bin/majordomus plan validate
  • scripts/generate-site-data --check

Požadované důkazy

  • sada testů
  • cross_surface
  • mutace
  • github

Rizika

  • Engine je shell a awk; graf dost velký, aby to zpomalil, by potřeboval jinou implementaci. Změřeno, ne předpokládáno.
  • GitHub je projekce. Pokud člověk upraví tělo generovaného úkolu, další synchronizace ohlásí drift místo tichého přepsání, což znamená, že drift se může hromadit bez dozoru.

Důkazy

Milník není nikdy hotový tím, že jsou hotové jeho úkoly; poslední krok je jeho vlastní přijetí a podmiňují jej řádky níže.

pokrývátypcommandvýsledek
sada testůtestbash test/run.shkaždý případ v test/cases prošel a žádný neselhal, každý v jednorázovém repozitáři
cross_surfacetestbash test/run.sh 46_cross_surface1 prošel — CLI, výstup JSON, diagram Mermaid, projekce GitHub a čerstvě vygenerovaný soubor site-data se shodují na každé množině, na kterou se jich lze zeptat
mutacetestbash test/run.sh 47_mutation1 prošel — každá kanonická mutace, kterou případ provede, pohne každým rozhraním
githubručníscripts/github-sync --apply && scripts/github-sync --checkkaždý milník a úkol, které model držel při tomto commitu, existoval na korczis/prismatic-majordomus se stavem odpovídajícím odvozenému stavu; kontrola skončila s 0 bez driftu

Úkoly

Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.

issuestatusvlnazávisí nanázev
I0001 HOTOVO 0 — Zauditovat, co v tomto repozitáři skutečně plánuje práci
I0002 HOTOVO 1 I0001 Definovat kanonické schéma milníku a úkolu
I0003 HOTOVO 2 I0002 Implementovat loader modelu a engine odvozování stavu
I0004 HOTOVO 3 I0003 Implementovat validaci DAG a vlny provádění
I0005 HOTOVO 4 I0004 Implementovat příkazový povrch plánu
I0006 HOTOVO 4 I0004 Vygenerovat Mermaid DAG z grafu
I0007 HOTOVO 5 I0005 Prosadit kanonický model jako doktrínu
I0008 HOTOVO 5 I0005 Promítnout model do GitHub milníků a úkolů
I0009 HOTOVO 5 I0005, I0006 Promítnout model do webu
I0010 HOTOVO 4 I0004 Behaviorální testy pro schéma, stav, graf a příkaz
I0011 HOTOVO 6 I0008, I0009, I0010 Konzistence napříč povrchy a mutační testy
I0012 HOTOVO 7 I0011 Přimět CI odmítnout neplatný model nebo zastaralou projekci
I0013 HOTOVO 5 I0005 Zdokumentovat sémantiku a pravidlo dogfoodingu
I0014 HOTOVO 6 I0005, I0013 Přimět pokyny pro workery, aby model vyžadovaly
I0015 HOTOVO 8 I0012, I0014 Otevřít první skutečný milník a provést jím jeden úkol

Graf

graf závislostí M000z .ai/repo/project
flowchart LR
    I0001["I0001<br/>Audit what actually plans work in this repository"]:::done
    I0002["I0002<br/>Define the canonical milestone and issue schema"]:::done
    I0003["I0003<br/>Implement the model loader and the status derivation engine"]:::done
    I0004["I0004<br/>Implement DAG validation and execution waves"]:::done
    I0005["I0005<br/>Implement the plan command surface"]:::done
    I0006["I0006<br/>Generate the Mermaid DAG from the graph"]:::done
    I0007["I0007<br/>Enforce the canonical model as doctrine"]:::done
    I0008["I0008<br/>Project the model to GitHub milestones and issues"]:::done
    I0009["I0009<br/>Project the model into the website"]:::done
    I0010["I0010<br/>Behavioural tests for schema, status, graph and command"]:::done
    I0011["I0011<br/>Cross-surface consistency and mutation tests"]:::done
    I0012["I0012<br/>Make CI refuse an invalid model or a stale projection"]:::done
    I0013["I0013<br/>Document the semantics and the dogfooding rule"]:::done
    I0014["I0014<br/>Make the worker instructions require the model"]:::done
    I0015["I0015<br/>Open the first real milestone and execute one issue through it"]:::done
    I0001 --> I0002
    I0002 --> I0003
    I0003 --> I0004
    I0004 --> I0005
    I0004 --> I0006
    I0004 --> I0010
    I0005 --> I0007
    I0005 --> I0008
    I0005 --> I0009
    I0005 --> I0013
    I0005 --> I0014
    I0006 --> I0009
    I0008 --> I0011
    I0009 --> I0011
    I0010 --> I0011
    I0011 --> I0012
    I0012 --> I0015
    I0013 --> I0014
    I0014 --> I0015
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Kanonický záznam: .ai/repo/project/milestones/M000.yaml. Načtěte jej zpět pomocí majordomus plan show M000.

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