I2740 — Dodání úkolu se odvozuje z větví, pull requestů, mergů, tagů a publikovaného webu
Přidat schopnost plan.delivery (CLI majordomus plan delivery [--json] [<id>], HTTP a MCP z jediné deklarace schopnosti), která pro každý úkol odpoví nejpokročilejší fází z none, branch, pr_open, merged, released, deployed, každou s objektem, který ji dokázal, a kdy byla pozorována, a vystavit ji v datech webu, která čtou stránky plánu.
HOTOVO vlna 0 · p0 · profil implementation · bezpečné souběžně
Cíl
Přidat schopnost plan.delivery (CLI majordomus plan delivery [--json] [<id>], HTTP a MCP z jediné deklarace schopnosti), která pro každý úkol odpoví nejpokročilejší fází z none, branch, pr_open, merged, released, deployed, každou s objektem, který ji dokázal, a kdy byla pozorována, a vystavit ji v datech webu, která čtou stránky plánu.
Proč
ADR 0166. Stav se odvozuje pouze z razítek (lib/project.awk:156-170, plan.rs derive); trace.issue, delivery.report a github-sync každý čte část pravdy a nic je nespojuje. I2653 byl sloučen celý v #1097 a stále se čte READY.
Aktuální stav
trace.issue (capability/builtin/trace.rs, worktree/trace.rs) dává větve a zmergované commity úkolu; servírovaná cache forge drží pull requesty a release; nic neodpovídá fází na úkol.
Cílový stav
plan.delivery znovu používá trace.issue pro větve a merge, hranu úkolu z I1405 pro pull requesty jmenované titulkem, větví nebo trailerem, servírovanou cache forge pro otevřené pull requesty (nepřečtený forge se hlásí jako nepřečtený, nikdy jako žádný), git tag --contains pro první tag v* a publikovaný latest.json pro nasazeno; scripts/generate-site-data z toho píše site/data/generated/delivery.json.
Rozsah
- apps/majordomus-cli/src/capability/builtin/plan.rs
- apps/majordomus-cli/src/plan
- apps/majordomus-cli/src/plan.rs
- apps/majordomus-cli/tests/plan_delivery.rs
- scripts/generate-site-data
- site/data/generated/delivery.json
- docs/PLANNING.md
- docs/generated
- test/cases/3100_an_issue_delivery_is_inferred.sh
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I2741DONE Merged work the plan has not recorded is drift, and on the trunk past a window it is red
- I2743READY The public roadmap draws every milestone in the graph's order, each issue with its inferred delivery
- I2744READY The UI roadmap reads delivery and the releases themselves, and its now is where work is
- I2851READY the homepage's product view counts the delivery the history proves beside the statuses the records declare, each count a link
- I3119READY The delivery report computes required_tests_current, test_evidence_published and ui_linked instead of citing a merged pull request
- I3203BLOCKED Delivery lead time is measured per phase, from a pull request's opening to its verified publication
- I3257BLOCKED intent explain follows each served issue past its merge to the release and the observed deployment that carry it
- I3270READY A blocked issue says which kind of block holds it: a dependency, contention, or a stale record
Kritéria přijetí
- Úkol jmenovaný sloučeným pull requestem ve fixture repozitáři se čte jako merged s merge commitem a jako released, jakmile jej obsahuje tag v*
- Úkol jen s otevřeným pull requestem se čte jako pr_open s jeho číslem; u nepřečteného forge odpověď říká unread
- Schopnost je deklarována jednou a dosáhne CLI, HTTP a MCP přes majordomus generate
- site/data/generated/delivery.json vytváří spustitelný soubor a kontroluje generate-site-data --check
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test plan_delivery
- bash test/run.sh 3100_an_issue_delivery_is_inferred
Požadované důkazy
- delivery_stage_case
- mutations_fail_the_case
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| delivery_stage_case | test | cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test plan_delivery | 3 prošly, 0 selhaly (sloučeno s merge commitem a PR #5, vydáno prvním záznamem releasu v0.1.0, pr_open #9 z pozorování forge, nepřečtený forge hlášen jako nepřečtený a nevypořádaný, nasazeno z latest.json pozorovaného nasazení Pages; --at čte jen historii a je bajtově stabilní napříč pozdějším tagem; CLI = HTTP = MCP) | b80c183 |
| mutations_fail_the_case | test | bash test/run.sh 3100_an_issue_delivery_is_inferred | 1 passed; 4 mutace kódu v src/plan/delivery.rs aplikované jednotlivě vždy selhaly tam, kde je uvedeno (slug část branch_names, vypuštěný titul merge, nepřečtený forge nepojmenován, otevřené pulls prázdné) | b80c183 |
| delivery_stage_case | ci | validate run 39438896504 at master 9a5a9b77520: suite-shard (2) job 118683338077 runs 3100_an_issue_delivery_is_inferred; rust (1) job 118683336143 runs cargo test incl. tests/plan_delivery.rs | success (the run's only red job is pages, which runs no test) | 573df96 |
Časová osa
- zahájeno
- 2026-10-16T09:56:45Z
- ověřeno
- 2026-10-16T13:32:49Z
- dokončeno
- 2026-10-20T22:11:19Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I2740.yaml. Přečtěte jej zpět pomocí majordomus plan show I2740.