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.

I2463 — Vlak navrstvených pull requestů je typovaný objekt, servírovaný všude a vykreslený jako graf

Odvodit trainy otevřených pull requestů (řetězce a DAGy deklarovaných stacků i stacků podle základní větve) z vlastního zaznamenaného pozorování executoru jako typovaný read model, jednou ho promítnout jako schopnost integration.trains do příkazové řádky (majordomus prs trains), HTTP a MCP a vykreslit ho v Cockpitu na /cockpit/trains jako interaktivní graf se serverově vykreslenou tabulkou vedle něj.

HOTOVO vlna 0 · p2 · profil implementation · bezpečné souběžně

Součást development-runtime — The runtime has a development surface.

Cíl

Odvodit trainy otevřených pull requestů (řetězce a DAGy deklarovaných stacků i stacků podle základní větve) z vlastního zaznamenaného pozorování executoru jako typovaný read model, jednou ho promítnout jako schopnost integration.trains do příkazové řádky (majordomus prs trains), HTTP a MCP a vykreslit ho v Cockpitu na /cockpit/trains jako interaktivní graf se serverově vykreslenou tabulkou vedle něj.

Proč

Executor už parsuje každý řádek `Stacked on #N` / `Depends on #N` a každou base branch, která je headem jiného pull requestu, do závislostí a připravuje další head každého článku pod refs/prep/<n> před jeho pushem v jeho řadě. Co je vlak, který článek je další, který připravený head je stále nepushnutý a jak daleko za masterem je každý článek, žilo jen ve zprávách relací a v lokálních refech, které nikdo jiný nemohl číst; dvě relace se jednoho večera vzájemně ptaly na pořadí týchž jedenácti článků. Vlastník 2026-10-11 požádal o interaktivní, podrobnou vizualizaci vlaku ve stylu Neo4j Browser.

Aktuální stav

Závislosti a důvody jako stacked_on:#807 jsou vidět po jednom pull requestu v majordomus prs status; nic je neseskupuje do vlaků, neuspořádává jejich řadu ani neporovnává refs/prep/<n> s head, který servíruje forge.

Cílový stav

majordomus prs trains, GET /api/v1/pull-requests/trains a MCP majordomus_pull_request_trains odpovídají stejnými typovanými vlaky: články s číslem, názvem, větví, head, dispozicí a důvody, povinnými kontrolami, vztahem k master, připraveným head a tím, zda je pushnut, pořadím a pozicí, kořenem a vrcholem; /cockpit/trains je kreslí pomocí Cytoscape (barva podle dispozice z design tokenů, master jako kotva, označené šipky STACKED_ON / DEPENDS_ON, panel vlastností, filtry, hledání, přizpůsobení a zoom, přístup z klávesnice, respektování omezeného pohybu) a vypisuje tytéž fakty jako tabulku bez JavaScriptu.

Rozsah

  • apps/majordomus-cli/src/integration/train.rs
  • apps/majordomus-cli/src/integration/mod.rs
  • apps/majordomus-cli/src/capability/builtin/integration.rs
  • apps/majordomus-cli/src/cli.rs
  • apps/majordomus-cli/src/commands/prs.rs
  • apps/majordomus-cli/src/cockpit/mod.rs
  • apps/majordomus-cli/src/cockpit/nav.rs
  • apps/majordomus-cli/src/cockpit/pages.rs
  • apps/majordomus-cli/src/cockpit/trains.rs
  • share/cockpit/trains.js
  • .ai/repo/adrs/0138-a-train-of-pull-requests-is-a-typed-object-that-can-be-seen.md
  • docs/INTEGRATION.md
  • docs/COCKPIT.md
  • test/cases/1072_the_train_is_seen.sh
  • share/version.txt
  • apps/majordomus-cli/Cargo.toml
  • apps/majordomus-cli/Cargo.lock
  • docs/generated
  • site/data
  • site/content

Mimo rozsah

  • Přesun, push nebo smazání jakéhokoli ref, včetně refs/prep/<n>: model je čte
  • Nový proud: stránka dotazuje HTTP schopnost (majordomus monitor je I2400-I2407)

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • Vlaky se odvozují čistými, jednotkově testovanými funkcemi ze zaznamenaného pozorování, fronty a lokálních refs refs/prep/<n>; nic nesahá na síť ani nezapisuje ref
  • integration.trains je deklarováno jednou pomocí capability! a promítáno do příkazové řádky, HTTP a MCP příkazem majordomus generate
  • /cockpit/trains kreslí trainy interaktivně a stejná fakta vykresluje jako tabulku bez JavaScriptu; barvy pocházejí z designových tokenů
  • test/cases/1072_the_train_is_seen.sh se změnou projde a bez ní proti master selže

Validace

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib integration::train
  • MJ_TEST_JOBS=4 bash test/run.sh 1072_the_train_is_seen

Požadované důkazy

  • train_model_unit_tests
  • trains_projection_case

Důkazy

pokrývátypcommandvýsledeku commitu
train_model_unit_testscicargo test --lib integration::train (validate run 38223440282 na 722228ef3c, vrcholu v0.21.0)17 testů integration::train v pořádku722228e
trains_projection_casecitest/run.sh 1072_the_train_is_seen; cargo test --lib cockpit::trains (běh validate 38223440282 na 722228ef3c, top v0.21.0)případ 1072_the_train_is_seen ok; 8 testů cockpit::trains ok722228e

Časová osa

zahájeno
2026-10-12T10:59:39Z
ověřeno
2026-10-12T10:59:46Z
dokončeno
2026-10-12T10:59:59Z

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

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