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.

HTTP API: devtask

Úkol a milník se čtou jako práce, kterou je třeba udělat, ne jako metadata: co napsal člověk, kam ho řadí graf plánu, co se s ním stalo lokálně, v jakém stavu je jeho externí projekce a zda ho worker smí začít — s původem každé hodnoty přímo na hodnotě. Nic zde není druhý projektový model: záznamy jsou kanonické, stav a graf jsou z `plan`, větve a commity z `trace`, slovník připravenosti upřesňuje tři kanonické stavy, aniž by kterýkoli nahradil, a projekce na GitHub zůstává věcí `scripts/github-sync`. Nic zde nic nezapisuje, a proto je hodnota od uživatele z GitHubu před tím v bezpečí.

Vykresleno z docs/generated/openapi.json, který spustitelný soubor generuje ze svého registru schopností a CI jej odmítne, je-li zastaralý. Surový dokument je na /openapi.json; běžící server servíruje stejný dokument na vlastní /openapi.json a Swagger UI na /swagger.

devtask

Úkol a milník se čtou jako práce, kterou je třeba udělat, ne jako metadata: co napsal člověk, kam ho řadí graf plánu, co se s ním stalo lokálně, v jakém stavu je jeho externí projekce a zda ho worker smí začít — s původem každé hodnoty přímo na hodnotě. Nic zde není druhý projektový model: záznamy jsou kanonické, stav a graf jsou z `plan`, větve a commity z `trace`, slovník připravenosti upřesňuje tři kanonické stavy, aniž by kterýkoli nahradil, a projekce na GitHub zůstává věcí `scripts/github-sync`. Nic zde nic nezapisuje, a proto je hodnota od uživatele z GitHubu před tím v bezpečí.

GET /api/v1/devtask/issue devtask.issue

Jeden úkol jako spustitelná vývojová úloha

Identita, titulek, záměr, stav, milník, kritéria přijetí, závislosti, blokátory, commity, které pojmenovávají jeho vlastní důkazy, a commity, které našel git, jeho větve, relace, které na něm pracovaly, jeho připravenost a vše špatné na jeho záznamech — každé pole nese, zda ho napsal člověk (`explicit`), stroj ho spočítal pravidlem, které se nemůže mýlit (`derived`), stroj ho spočítal pravidlem, které může (`inferred`, s uvedeným pravidlem), nebo není k dispozici vůbec (`unknown`, s důvodem). Klíč, který záznam nenese, je `unknown`, nikdy prázdný řetězec: `objective: ""` a záznam bez objective jsou stejný řetězec a různé fakty. Id, které model nedeklaruje, se zodpoví, neodmítne. `git: false` odpovídá jen ze záznamů, což je to, co srovnání napříč stroji chce.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache vypnuta
  • nástroj MCP majordomus_devtask
  • $ devtask issue

Parametry dotazu

názevtyppovinnépopispříklady
issue string ano Id úkolu tak, jak ho píše kanonický model (`I0901`). Id, které model nedeklaruje, se zodpoví s `declared: false` a každým kanonickým polem `unknown`, nikdy se neodmítne a nikdy se nezodpoví prázdnými řetězci, které by vypadaly jako psané ručně. records-only: "I0001"with-git: "I0001"
git boolean ne Zeptat se gitu na větve a commity, které ji realizovaly. Výchozí: ano. Nastavte na false pro deterministickou odpověď závislou jen na záznamech — což je to, co chce generovaný dokument nebo porovnání napříč stroji. records-only: falsewith-git: true

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/devtask/issue?issue=I0001&git=false"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 DevTask Jeden úkol jako proveditelná vývojová úloha: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.
GET /api/v1/devtask/milestone devtask.milestone

Jeden milník jako spustitelný graf závislostí

Každý úkol milníku jako uzel s jeho připraveností, vlnou a tím, co na něj čeká; každá hrana závislosti s alespoň jedním koncem uvnitř, přecházející označené; úkoly rozdělené na připravené, blokované, čekající, aktivní, v revizi, blokované dokončením, dokončené a zrušené; kritické blokátory seřazené podle toho, kolik nedokončené práce každý zdržuje; zahajitelná práce rozdělená do podmnožin, které skutečně mohou běžet současně — stejná vlna, každá bezpečná pro paralelismus, žádné dvě nesdílejí cestu rozsahu — s tím, že každá serializace jmenuje cestu, která ji způsobila; každý cyklus závislostí jako jeho silně souvislá komponenta; a každý nález o milníku nebo jeho úkolech. Čistá funkce kanonických záznamů: žádný git, žádné hodiny, žádná síť, každý seznam v kanonickém pořadí, takže dva běhy na dvou strojích dají stejné bajty. Pracovní povrch, který toto čte, sám nic neodvozuje.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache vypnuta
  • Nástroj MCP majordomus_devtask_milestone
  • $ devtask milestone

Parametry dotazu

názevtyppovinnépopispříklady
milestone string ano Id milníku tak, jak jej píše kanonický model. Na id, které model nedeklaruje, se odpoví prázdným grafem a každé pole `unknown`, ne odmítnutím. first-milestone: "M000"

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/devtask/milestone?milestone=M000"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 MilestoneGraph Jeden milník jako spustitelný graf závislostí: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.

Schémata

Komponenty, které používají jen operace tohoto tagu. Každý řádek je pole daného typu, jeho doc komentář je popis; typ vlastněný jinou stránkou na ni odkazuje.

AttestationTally

object
Kolik z jedné odpovědi bylo napsáno a kolik stroj spočítal.

Není to dekorace: je to měření, díky němuž lze disciplínu původu kontrolovat zvenčí. Úloha, jejíž deklarace je většinou unknown, je zástupný znak, jakkoli úplně vypadá její odvozená polovina, a toto je číslo, které to říká.

vlastnosttyppovinnépopis
explicit integer (uint32) ano Pole, která člověk napsal v kanonickém záznamu.
odvozeno integer (uint32) ano Pole zjištěná pravidlem, které se u čitelného repozitáře nemůže mýlit.
odhadnuto integer (uint32) ano Pole zjištěná pravidlem, které se může mýlit.
neznámé integer (uint32) ano Pole vůbec nedostupná.

Používá DevTask

AttestedCount

object
Počet s původem. Oddělený od AttestedText, protože vlna, součet commitů a počet důkazů jsou čísla, se kterými volající počítá, a číslo vykreslené jako řetězec je číslo, které musí každý klient parsovat zpět.
vlastnosttyppovinnépopis
hodnota integer | null ne Číslo, chybí právě tehdy, když je provenience unknown.
provenance FieldProvenance → FieldProvenance ano Odkud pochází.
zdroj string ano Jediné místo, kam čtenář jde, aby to ověřil.
důvod string | null ne Proč je původ takový, jaký je, když to stojí za větu.

Používá DevTaskExecution DevTaskPosition MilestoneGraph

AttestedList

object
Seznam s původem. Rozdíl, který holé Vec nedokáže udělat, je tady ten rozhodující: depends_on: [] v záznamu je autorský prázdný seznam, kdežto záznam bez klíče depends_on je neznámý. Oba jsou prázdné; jen jeden je výrok.
vlastnosttyppovinnépopis
hodnoty array of string ano Položky v pořadí, v jakém je vytvořil záznam nebo odvození. Prázdné pro autorsky prázdný seznam i pro neznámé pole; provenance je rozliší.
provenance FieldProvenance → FieldProvenance ano Odkud pocházejí.
zdroj string ano Jediné místo, kam čtenář jde, aby je ověřil.
důvod string | null ne Proč je původ takový, jaký je, když to stojí za větu.

Používá DevTaskDeclaration DevTaskExecution DevTaskPosition MilestoneGraph

AttestedText

object
Jeden skalár s původem: jednotka, z níž se skládá každé pole vývojové úlohy.

Invariant, který konstruktory vynucují a AttestedText::is_consistent vyjadřuje, je, že hodnota je přítomna právě tehdy, když původ není FieldProvenance::Unknown. Bez něj by tvar mohl vyjádřit „neznámé, a tady je hodnota“, což je přesně ta vada, které má celý tento modul předejít.

vlastnosttyppovinnépopis
hodnota string | null ne Hodnota, chybí přesně tehdy, když je původ unknown.
provenance FieldProvenance → FieldProvenance ano Odkud pochází.
zdroj string ano Jediné místo, kam čtenář jde si to ověřit: cesta relativní k repozitáři s klíčem, ze kterého byla přečtena, id schopnosti nebo příkaz. Nikdy cesta stroje.
důvod string | null ne Proč má původ takovou podobu, když to stojí za větu: vždy pro unknown a pro inferred, jinak vynecháno.

Používá DevTaskDeclaration DevTaskExecution DevTaskPosition DevTaskSynchronisation MilestoneGraph

Blokátor

object
Jedna věc stojící mezi úlohou a možností ji spustit, s tím, co s ní dělat.
vlastnosttyppovinnépopis
druh BlockerKind → BlockerKind ano Jaký druh věci to je.
předmět string ano Věc: id úkolu, id milníku, token důkazu.
detail string ano Co je špatně, na jednom řádku, podle kterého může člověk jednat.

Používá ReadinessVerdict

BlockerKind

"issue" | "milestone" | "evidence" | "reference" | "cycle"
Co za věc úlohu zdržuje. Pět jich je těch pět, které kanonický model skutečně dokáže vytvořit; není žádné other.
  • issueÚkol, na kterém tento závisí a který není DONE.
  • milestoneKontrola milníku: výsledek, který milník tohoto úkolu vyžaduje, není DONE.
  • evidencePovinný token důkazu, který záznam nenese, se zaznamenaným dokončením.
  • referenceZávislost, která se nevyhodnotí na nic: model takový úkol nemá.
  • cycleCyklus závislostí, v němž tato úloha je nebo je po proudu od něj, takže se nikdy nemůže stát připravenou.

Používá Blocker

CriticalBlocker

object
Jeden nedokončený úkol, který brzdí navazující práci, a jak moc.
vlastnosttyppovinnépopis
issue string ano Úkol.
připravenost TaskReadiness → TaskReadiness ano Kde stojí, což říká, zda je jeho odblokování práce, nebo rozhodnutí.
blokuje array of string ano Nedokončené úkoly, které na něj čekají, přímo nebo přes jiný, v kanonickém pořadí.
váha integer (uint32) ano Kolik to je. Číslo, podle kterého je seznam řazen.

Používá MilestoneGraph

DevTask

object
Jeden úkol jako spustitelná vývojová úloha: co bylo napsáno, kde sedí, co se s ním stalo, kde stojí jeho externí projekce a zda ho smí pracovník začít.
vlastnosttyppovinnépopis
issue string ano Id úkolu, jak bylo požadováno.
deklarováno boolean ano Zda ho kanonický model deklaruje. Nepravda se odpovídá, neodmítá, přičemž každé kanonické pole je unknown: překlep, který by se četl jako „nic nebylo napsáno“, je jediná odpověď, kterou toto nesmí dát.
record string | null ne Cesta kanonického záznamu relativní k repozitáři, pokud existuje.
deklarace DevTaskDeclaration → DevTaskDeclaration ano Co napsal člověk.
pozice DevTaskPosition → DevTaskPosition ano Kam ho řadí graf plánu.
provádění DevTaskExecution → DevTaskExecution ano Co se stalo lokálně.
synchronizace DevTaskSynchronisation → DevTaskSynchronisation ano Kde stojí externí projekce.
připravenost ReadinessVerdict → ReadinessVerdict ano Zda se na tom dá pracovat a co v tom brání.
diagnostika pole DevTaskDiagnostic → DevTaskDiagnostic ano Vše, co je špatně s jeho záznamy.
atestace AttestationTally → AttestationTally ano Kolik z odpovědi bylo napsáno a kolik vypočítal stroj.

Používá devtask.issue

DevTaskDeclaration

object
Co člověk napsal v kanonickém záznamu. Každé pole je FieldProvenance::Explicit nebo FieldProvenance::Unknown a nic jiného: hodnota zde byla zapsána, nebo neexistuje.
vlastnosttyppovinnépopis
název AttestedText → AttestedText ano Jeden řádek pojmenovávající výsledek.
cíl AttestedText → AttestedText ano K čemu úkol slouží.
why AttestedText → AttestedText ano Proč se to vyplatí.
current_state AttestedText → AttestedText ano Kde repozitář stojí před tím.
desired_state AttestedText → AttestedText ano Kde repozitář stojí, až bude skutečný.
completion AttestedText → AttestedText ano Co autor říká o tom, jak daleko to došlo. Napsaná próza, nikdy stav: stav je odvozen a toto je jediné pole, kde s ním osoba může nesouhlasit.
milestone AttestedText → AttestedText ano Milník, do něhož patří.
priorita AttestedText → AttestedText ano p0 … p3.
profil AttestedText → AttestedText ano Profil provádění, pod nímž se na tom pracuje.
parallel_safe AttestedText → AttestedText ano Zda smí běžet vedle jiného úkolu své vlny.
vlastník AttestedText → AttestedText ano Kdo jej vlastní.
riziko AttestedText → AttestedText ano Co se může pokazit.
slug AttestedText → AttestedText ano Slug.
zrušeno AttestedText → AttestedText ano Zda byl stažen.
created_at AttestedText → AttestedText ano Kdy byl záznam vytvořen.
updated_at AttestedText → AttestedText ano Kdy se naposledy pohnulo.
started_at AttestedText → AttestedText ano Kdy provádění začalo.
verified_at AttestedText → AttestedText ano Kdy byla implementace prohlášena za dokončenou.
completed_at AttestedText → AttestedText ano Kdy bylo dokončení zaznamenáno.
scope AttestedList → AttestedList ano Cesty, kterých se smí dotknout.
non_scope AttestedList → AttestedList ano Cesty, kterých se záměrně nedotýká.
depends_on AttestedList → AttestedList ano Úkoly, na nichž deklaruje závislost, přesně tak, jak jsou deklarovány — včetně toho, který neexistuje, což je diagnostika, a ne tiché vynechání.
acceptance_criteria AttestedList → AttestedList ano Co musí platit, než je hotovo.
validace AttestedList → AttestedList ano Příkazy, které to kontrolují.
evidence_required AttestedList → AttestedList ano Tokeny důkazů, které vyžaduje, než smí být dokončena.
evidence_present AttestedList → AttestedList ano Tokeny důkazů, které skutečně nese.
evidence_commits AttestedList → AttestedList ano Commity, které jmenují vlastní položky důkazů záznamu. Autorské, a tedy jiný fakt než commity, které git najde na větvích — ty jsou v DevTaskExecution::commits a jsou odvozené.

Používá DevTask

DevTaskDiagnostic

object
Jedna věc, která je s záznamy této úlohy špatně, ve tvaru, o který žádá project.finding-carries-reproduce.
vlastnosttyppovinnépopis
úroveň string ano FAIL nebo WARN, jako vlastní úrovně nálezů plánu.
kód string ano Stabilní kód, který čtenář hledá grepem.
zpráva string ano Co je špatně, jedním řádkem.
reprodukovat string ano Jediný příkaz, který to ukáže znovu.

Používá DevTask MilestoneGraph

DevTaskExecution

object
Lokální stav provádění: co se skutečně stalo v historii gitu a záznamech relací tohoto checkoutu. Odvozeno tam, kde byl vztah deklarován, odhadnuto tam, kde ne, a pole říkají které.
vlastnosttyppovinnépopis
git_consulted boolean ano Zda byl git vůbec dotázán. Nepravda způsobí, že každé níže uvedené pole odvozené z gitu je unknown, a ne prázdné, což je rozdíl mezi „nic to nerealizovalo“ a „nikdo se nepodíval“.
branches AttestedList → AttestedList ano Větve, jejichž název nese id tohoto úkolu, lokální první.
merged_branches AttestedList → AttestedList ano Z nich ty, které dosáhly trunku.
commity AttestedCount → AttestedCount ano Kolik různých commitů tyto větve drží, které trunk neměl.
trunk AttestedText → AttestedText ano Trunk, proti kterému se měřila každá branch.
commits_complete AttestedText → AttestedText ano True, když bylo možné odvodit commity každé větve. False, když některá dosáhla trunku bez vlastního merge commitu, takže část práce nelze od trunku odlišit — hlásí se, nepočítá se jako nula.
relace AttestedList → AttestedList ano Záznamy relací, jejichž vlastní klíč issues jmenuje tento úkol. Odvozeno: klíč se zjišťuje z událostí registru epizody, ne ručně psaný a ne hádaný.
sessions_by_branch AttestedList → AttestedList ano Záznamy relací, které se k tomuto úkolu dostanou jen přes název větve, a proto mohou být chybné. Nikdy se nepřekrývá s DevTaskExecution::sessions: relace, která úkol deklarovala, se hlásí tam, a ne zde, takže slabší vztah nikdy nenahradí silnější.

Používá DevTask

DevTaskPosition

object
Kde úloha sedí v grafu plánu. Každé pole je odvozeno; nic zde není autorské a nic se nikde neukládá.
vlastnosttyppovinnépopis
status AttestedText → AttestedText ano Kanonický stav z jeho jediného odvození.
vlna AttestedCount → AttestedCount ano Vlna provádění: o jedna víc než nejdelší cesta k ní. Neznámá, když cyklus brání tomu, aby ji kdy měla.
blocked_by AttestedList → AttestedList ano Závislosti, které nejsou DONE, plus brána milníku, když se uplatní.
závislé AttestedList → AttestedList ano Úkoly, které na tento čekají.
transitive_dependents AttestedCount → AttestedCount ano Každý úkol, který na něm čeká, přímo nebo přes jiný. Míra toho, co jeho dokončení odblokuje.
milestone_status AttestedText → AttestedText ano Stav milníku, ke kterému patří.
milestone_rank AttestedCount → AttestedCount ano Vrstva milníku v grafu milníků.
milestone_blocked_by AttestedList → AttestedList ano Výsledky, na které tento milník stále čeká.
evidence_have AttestedCount → AttestedCount ano Kolik tokenů důkazů nese.
evidence_need AttestedCount → AttestedCount ano Kolik jich potřebuje.

Používá DevTask

DevTaskSynchronisation

object
Externí projekce. Tento spustitelný soubor sem nikdy nic nezapisuje a pole, na která může odpovědět jen adaptér, to říkají, místo aby se četla jako prázdná.
vlastnosttyppovinnépopis
adaptér string ano Adaptér, který projekci vlastní. Jediná věc, která umí odpovědět na živý stav.
repozitář AttestedText → AttestedText ano Repozitář, na který projekce míří, z project.yaml.
state AttestedText → AttestedText ano Stav sesouhlasení externího záznamu. Odtud vždy unknown: je to fakt o síti a tento program žádný nečiní. Důvod jmenuje příkaz.
external_id AttestedText → AttestedText ano Vlastní identifikátor externího záznamu — číslo na GitHubu — které přiděluje GitHub a nic lokálního ho nezaznamenává. Vždy unknown, ze stejného důvodu.
reconcile_with array of string ano Příkazy, které odpovídají na vnější polovinu.
zapisovatelné boolean ano Zda tento spustitelný soubor smí cokoli z toho zapisovat. Vždy false; uvedeno jako pole, aby klient nemusel znát pravidlo, aby ho respektoval.

Používá DevTask

FieldProvenance

"explicit" | "derived" | "inferred" | "unknown"
Odkud hodnota pochází, a tedy jakou váhu jí čtenář smí přiznat.

Ta čtyři slova nejsou stupně jistoty, jsou to čtyři různé vztahy k repozitáři a nejdůležitější je rozlišení prvního od posledních dvou: napsal to člověk, nebo to vypočítal stroj.

use majordomus_cli::devtask::{AttestedText, FieldProvenance};

// a value the record itself carried
let title = AttestedText::explicit("Ship it", ".ai/repo/project/issues/I0001.yaml#title");
assert_eq!(title.provenance, FieldProvenance::Explicit);

// a key the record does not have is unknown, and unknown carries no value
let missing = AttestedText::unknown(
    ".ai/repo/project/issues/I0001.yaml#objective",
    "the record declares no `objective`",
);
assert_eq!(missing.provenance, FieldProvenance::Unknown);
assert!(missing.value.is_none());
  • explicitNapsal to člověk v kanonickém záznamu pod tímto klíčem. Nejsilnější tvrzení, jaké lze o hodnotě učinit, a jediné, které přežije přepsání každého odvození v tomto repozitáři.
  • derivedStroj to zjistil ze záznamů nebo z gitu pravidlem, které se nemůže mýlit o repozitáři, který umí číst: závislými úkolu jsou úkoly, které ho jmenují. Odvozuje se znovu při každém volání a nikde se neukládá.
  • inferredStroj to vyřešil pravidlem, které může být chybné, protože vztah, který čte, nebyl nikdy deklarován: relace patří k úkolu, protože název její větve obsahuje id úkolu. Užitečné a nikdy nezaměňovat s deklarací.
  • unknownNení k dispozici. Buď záznam klíč nenese, nebo fakt žije mimo to, co tento proces smí číst — například živý stav GitHubu — a pole říká které ve svém reason. Neznámé pole nikdy nenese hodnotu.

Používá AttestedCount AttestedList AttestedText

MilestoneCounts

object
Úkoly jednoho milníku spočtené podle připravenosti, plus dva jmenovatelé.
vlastnosttyppovinnépopis
celkem integer (uint32) ano Každý úkol, který jmenuje tento milník.
povinné integer (uint32) ano Celkem bez zrušených: jmenovatel, který používá údaj o postupu.
by_readiness mapa celých čísel (uint32) ano Jedna položka na stav připravenosti, který má alespoň jeden úkol, klíčovaná jeho slovem.

Používá MilestoneGraph

MilestoneEdge

object
Jedna hrana závislosti grafu milníku, from před to.
vlastnosttyppovinnépopis
z string ano Úkol, který musí být nejdřív skutečný.
do string ano Úkol, který na něj čeká.
externí boolean ano Pravda, když je jeden konec mimo tento milník. Taková hrana je důvodem, proč může být milník zcela blokován, aniž by uvnitř bylo něco špatně, takže se označuje, místo aby se zahodila.

Používá MilestoneGraph

MilestoneGraph

object
Jeden milník jako spustitelný graf závislostí.
vlastnosttyppovinnépopis
milestone string ano ID milníku tak, jak bylo požadováno.
deklarováno boolean ano Zda ho kanonický model deklaruje. Nepravda se zodpoví, neodmítne se.
record string | null ne Cesta kanonického záznamu relativní k repozitáři, pokud existuje.
název AttestedText → AttestedText ano Jeden řádek pojmenovávající výsledek, tak jak byl napsán.
výsledek AttestedText → AttestedText ano Co platí, až to bude skutečné, tak jak to bylo napsáno.
status AttestedText → AttestedText ano Odvozený stav milníku.
pořadí AttestedCount → AttestedCount ano Její vrstva v grafu milníků: co řadí plán rozvoje.
depends_on AttestedList → AttestedList ano Milníky, které vyžaduje, jak jsou napsány.
blocked_by AttestedList → AttestedList ano Ty z nich, které nejsou DONE. Neprázdné znamená, že každý úkol zde je zadržen, ať říkají jeho vlastní závislosti cokoli.
závislé AttestedList → AttestedList ano Milníky, které ji vyžadují.
nodes pole MilestoneNode → MilestoneNode ano Každý úkol milníku v kanonickém pořadí.
hrany pole MilestoneEdge → MilestoneEdge ano Každá hrana závislosti, jejíž alespoň jeden konec je v tomto milníku, seřazeno.
připraveno array of string ano Úkoly, které může worker převzít hned.
blokováno array of string ano Úkoly čekající na peera.
čeká array of string ano Úkoly, které čekají už jen na kontrolu milníku.
aktivní array of string ano Úkoly, které někdo začal.
review array of string ano Úkoly čekající na potvrzení.
completion_blocked array of string ano Úkoly prohlášené za dokončené, jejichž důkazy to nepodporují.
dokončeno array of string ano Úkoly dokončené podle vlastních podmínek.
zrušeno array of string ano Stažené úkoly.
critical_blockers pole CriticalBlocker → CriticalBlocker ano Co odblokovat jako první, nejdřív práce s nejvíce navazujícími.
paralelizovatelné pole ParallelSet → ParallelSet ano Spustitelná práce rozdělená na podmnožiny, které smějí běžet současně.
cykly pole polí řetězců ano Každý cyklus závislostí s úkolem tohoto milníku, každý jako jeho silně souvislá komponenta v kanonickém pořadí.
diagnostika pole DevTaskDiagnostic → DevTaskDiagnostic ano Vše, co je špatně se záznamy tohoto milníku nebo jeho úkolů.
počty MilestoneCounts → MilestoneCounts ano Úkoly sečtené podle připravenosti.

Používá devtask.milestone

MilestoneNode

object
Jeden úkol milníku jako uzel jeho grafu.
vlastnosttyppovinnépopis
issue string ano Id úkolu.
název string ano Jeden řádek pojmenovávající výsledek.
připravenost TaskReadiness → TaskReadiness ano Kde stojí jako práce.
canonical_status string ano Kanonický stav, který zjemňuje.
vlna integer | null ne Vlna provádění; chybí, když cyklus brání tomu, aby ji měla.
priorita string ano p0 … p3.
parallel_safe boolean ano Zda smí běžet vedle jiného úkolu své vlny.
blocked_by array of string ano Co ještě není DONE, plus kontrola milníku, když se uplatní.
závislé array of string ano Úkoly, které na něj čekají přímo.
transitive_dependents integer (uint32) ano Kolik úkolů na něj čeká přímo nebo přes jiný.
scope array of string ano Cesty, kterých se dotýká.

Používá MilestoneGraph

ParallelSet

object
Jedna podmnožina spustitelné práce, která může skutečně běžet současně.
vlastnosttyppovinnépopis
vlna integer (uint32) ano Vlna, do které patří každý úkol v ní.
úkoly array of string ano Úkoly v kanonickém pořadí.
serializováno pole ScopeConflict → ScopeConflict ano Proč sada není větší: kandidáti téže vlny, které se musely serializovat proti něčemu, co v ní už je.

Používá MilestoneGraph

ReadinessVerdict

object
Verdikt připravenosti se vším, z čeho byl odvozen, vedle.
vlastnosttyppovinnépopis
state TaskReadiness → TaskReadiness ano Jak úloha stojí, jako práce.
canonical_status string ano Kanonický stav, který zjemňuje, takže se oba nikdy nemohou číst odděleně.
důvod string ano Proč je v tomto stavu, v jednom řádku.
spustitelné boolean ano Smí si to worker vzít hned teď?
terminál boolean ano Není už nic dalšího k udělání?
blockers pole Blocker → Blocker ano Vše, co stojí v cestě, každé s tím, co s tím dělat.

Používá DevTask

ScopeConflict

object
Dva úkoly jedné vlny, které nemohou běžet spolu, a cesta, která je zastavuje.
vlastnosttyppovinnépopis
držené string ano Úkol, který už v množině je.
vyloučeno string ano Úkol, který se k němu nemohl připojit.
path string ano Cesta rozsahu, kterou sdílejí, tak jak ji deklaruje jeden z nich.

Používá ParallelSet

TaskReadiness

"ready" | "blocked" | "waiting" | "in_progress" | "review" | "completion_blocked" | "complete" | "cancelled" | "undeclared"
Kde vývojová úloha stojí, jako práce.

use majordomus_cli::devtask::TaskReadiness;

// every state names the canonical status it refines, and refines only one
assert_eq!(TaskReadiness::Ready.canonical(), "READY");
assert_eq!(TaskReadiness::Waiting.canonical(), "BLOCKED");
assert_eq!(TaskReadiness::Blocked.canonical(), "BLOCKED");
assert_eq!(TaskReadiness::Review.canonical(), "VERIFY");
assert_eq!(TaskReadiness::CompletionBlocked.canonical(), "VERIFY");

// and one state is the absence of a record rather than a status of one
assert!(TaskReadiness::Undeclared.canonical().is_empty());
  • readyNic ho nezdržuje a nikdo ho nezačal. Kanonický READY.
  • blockedAlespoň jeden úkol, na kterém závisí, není DONE. Kanonicky BLOCKED.
  • waitingKaždá závislost úkolu je splněna; kontrola milníku ho drží. Kanonické BLOCKED a odlišná situace, protože se řeší v jiném milníku.
  • in_progressProvádění začalo: záznam nese started_at. Kanonické ACTIVE.
  • reviewImplementace je prohlášena za hotovou a dokončení nebylo zaznamenáno: záznam nese verified_at. Kanonické VERIFY.
  • completion_blockedDokončení bylo zaznamenáno a důkazy, které si záznam sám vyžaduje, tam nejsou všechny, takže plán odmítá označit ho za DONE. Kanonické VERIFY a případ, o němž je nález evidence_missing.
  • completeDokončeno podle vlastních podmínek: nezrušeno, dokončení zaznamenáno, všechny požadované tokeny důkazů přítomny. Kanonický DONE.
  • cancelledStaženo. Kanonické CANCELLED.
  • undeclaredKanonický model toto id nedeklaruje. Není to stav: je to absence záznamu.

Používá CriticalBlocker MilestoneNode ReadinessVerdict

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