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.

I1405 — Pull request pojmenovává úkol, který realizuje, a hrana je odvozena, ne zapamatována

Odvodit vztah mezi úkolem a pull requesty, branchemi a commity, které jej realizovaly, z gitu a z GitHubu a umožnit jeho procházení oběma směry.

HOTOVO vlna 1 · p1 · profil implementation · běží samostatně

Součást work-graph-github — Projekce na GitHub je řízená, identifikovaná a průchodná a sloučený pull request vede zpět k výsledku, kterému sloužil.

Cíl

Odvodit vztah mezi úkolem a pull requesty, branchemi a commity, které jej realizovaly, z gitu a z GitHubu a umožnit jeho procházení oběma směry.

Proč

Model sahá tak daleko jako větev: `worktree/state.rs` čte id úkolu z názvu větve a kontrola topologie to vynucuje. Nad větví není nic. Sloučený pull request nevede zpět ke kritériím přijetí, která splnil, a výsledek nevede dopředu ke kódu, který k němu došel, což je otázka, na kterou celý model existuje.

Aktuální stav

Důkazy nesou volitelný řetězec `commit` psaný ručně. Žádný kanonický záznam nejmenuje pull request, běh kontroly ani větev. `issue_of()` v apps/majordomus-cli/src/worktree/state.rs odvozuje úkol ze složky cesty větve a je jedinou hranou, která existuje.

Cílový stav

Z úkolu lze odvodit větve, commity a pull requesty, které ho realizovaly. Ze sloučeného commitu nebo pull requestu lze odvodit úkol a výsledek, kterému sloužil. Neukládá se nic, co git nebo GitHub už zná.

Rozsah

  • apps/majordomus-cli/src/worktree
  • apps/majordomus-cli/src/git
  • apps/majordomus-cli/src/graph.rs
  • scripts/github-sync
  • test/cases
  • dokumentace

Mimo rozsah

  • Vyžadovat, aby větev kódovala id úkolu tam, kde to doktrína už nevyžaduje
  • Ukládání seznamu commitů do kanonického záznamu; commity vlastní git

Závislosti

Co na tom čeká

Kritéria přijetí

  • Pro dané id úkolu se vypíší branche, commity a pull requesty, které ho realizovaly, odvozené z gitu a GitHubu
  • Pro daný commit nebo pull request se pojmenuje úkol a milník, kterým sloužil, nebo se uvede jako nepřiřazený
  • Práce bez prováděcí smlouvy je hlášena jako nepřiřazená, ne tiše vynechána
  • Odvození nečte žádnou uloženou hranu, kterou už drží git nebo GitHub

Validace

  • cargo test --workspace --all-features
  • bash test/run.sh

Požadované důkazy

  • traceability_both_ways

Důkazy

pokrývátypcommandvýsledeku commitu
traceability_both_waystestenv -u MAJORDOMUS_SHARE bash test/run.sh 98_traceabilityok 98_traceability: nad skutečnými rámci MCP I0001 (sloučený merge commitem) uvádí svou větev, svůj merge commit a své dva commity; I0002 (otevřený) se měří proti trunku; I0003 (fast-forwardovaný) hlásí sám sebe jako pohlcený a nenárokuje si žádné commity trunku; I0004 (deklarovaný, nezačatý) nevede k ničemu a zůstává deklarovaný; I9999 odpovídá declared:false. Opačným směrem commit sloučené větve jmenuje I0001 a milník M0 a commit udělaný přímo na trunku je hlášen jako nepřiřazený s důvodem. Koše reportu dávají součet prozkoumaných commitů a commit pohlcené větve je v něm přítomen, ne vynechán. Pak scripts/traceability nad fixture pull requestů spojí PR #1 s I0001, odpoví na #2 pomocí I0002 a M0, ohlásí #3 (hlavní větev chore/tidy-up) jako nepřiřazený místo jeho zahození, sečte 3 přečtené / 2 přiřazené / 1 nepřiřazený a pod --strict skončí s 10 na commitu bez kontraktu. Nakonec: žádný kanonický záznam pod .ai/repo/project/ po běhu nejmenuje větev a git status je beze změny.990bd05

Riziko

Hrana commit–úkol odvozená z názvu větve je jen tak dobrá jako disciplína větví; unattributed musí být hlášený stav, ne předpoklad.

Časová osa

zahájeno
2026-09-09T18:55:15Z
ověřeno
2026-09-09T18:55:34Z
dokončeno
2026-09-09T18:55:36Z

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/I1405.yaml. Přečtěte jej zpět pomocí majordomus plan show I1405.

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