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á | typ | command | výsledek |
|---|---|---|---|
| sada testů | test | bash test/run.sh | každý případ v test/cases prošel a žádný neselhal, každý v jednorázovém repozitáři |
| cross_surface | test | bash test/run.sh 46_cross_surface | 1 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 |
| mutace | test | bash test/run.sh 47_mutation | 1 prošel — každá kanonická mutace, kterou případ provede, pohne každým rozhraním |
| github | ruční | scripts/github-sync --apply && scripts/github-sync --check | kaž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ží.
| issue | status | vlna | závisí na | ná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
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:2pxOdkazováno z tohoto diagramu (15)
- I0001 Auditovat, co v tomto repozitáři skutečně plánuje práci
- I0002 Definovat kanonické schéma milníku a úkolu
- I0003 Implementovat loader modelu a engine odvozování stavu
- I0004 Implementovat validaci DAG a vlny provádění
- I0005 Implementovat povrch příkazů plánu
- I0006 Generovat Mermaid DAG z grafu
- I0007 Vynutit kanonický model jako doktrínu
- I0008 Promítnout model do milníků a úkolů GitHubu
- I0009 Promítnout model do webu
- I0010 Behaviorální testy schématu, stavu, grafu a příkazu
- I0011 Konzistence napříč povrchy a mutační testy
- I0012 Přimět CI odmítnout neplatný model nebo zastaralou projekci
- I0013 Zdokumentovat sémantiku a pravidlo dogfoodingu
- I0014 Instrukce workerů budou vyžadovat model
- I0015 Otevřít první skutečný milník a provést jím jeden úkol
Kanonický záznam: .ai/repo/project/milestones/M000.yaml. Načtěte jej zpět pomocí majordomus plan show M000.