I2850 — publikovaný PR Drain nese své pull requesty a počítá pull requesty, ne úkoly plánu
Stránka UI, kterou snímek zapíše, nese každý pomalý panel, který obrazovka odkládá na svůj skript, už přečtený a na místě, kam by ho skript umístil: publikovaná /ui/prs ukazuje drain, Dashboard své pull requesty a Deployments svou dodávku. Počty PR Drain jsou počty samotné fronty integrace, jedna karta na každou dráhu, kterou fronta napočítala, každá jako odkaz na tu dráhu.
HOTOVO vlna 0 · p0 · profil implementation · bezpečné souběžně
Cíl
Stránka UI, kterou snímek zapíše, nese každý pomalý panel, který obrazovka odkládá na svůj skript, už přečtený a na místě, kam by ho skript umístil: publikovaná /ui/prs ukazuje drain, Dashboard své pull requesty a Deployments svou dodávku. Počty PR Drain jsou počty samotné fronty integrace, jedna karta na každou dráhu, kterou fronta napočítala, každá jako odkaz na tu dráhu.
Proč
Nalezeno rolí přistání dne 2026-10-18 na masteru 707a04c7ce8 (v0.29.0), ze snímku obrazovky publikované https://majordomus.dev/ui/prs/ při 1440 px. Obrazovka neukazovala žádný pull request, jen zástupný řádek 'Open the drain on its own page', protože skript snapshotu nenačítá žádný panel. Její hrdina počítal úkoly plánu z plan.status (ready 86, blocked 159), ne pull requesty. Vlastní karty drainu byly tři dráhy zapsané na obrazovce ('repair', 'waiting', 'held'), takže dráha, kterou fronta přidá, se nikdy nepočítala.
Aktuální stav
Snapshot zapíše každou obrazovku jako její první vykreslení: pomalý panel je zástupný blok s odkazem. Hero PR Drain čte plan.status; jeho pruh součtů jmenuje tři dráhy doslova.
Cílový stav
Snapshot se ptá každé stránky s hlavičkou X-Majordomus-Snapshot. UI pak nahradí každý placeholder data-panel-src vlastním pohledem panelu přes jeden dispatcher, podle kterého směruje i server. Živé UI se stále nejprve vykreslí a odloží. Hero PR Drain nečte žádný zdroj plánu a jeho pás má kartu Open, jednu kartu na lane v /queue/tallies/by_lane odkazující na ?lane=<word> a propustnost mergů.
Rozsah
- apps/majordomus-cli/src/ui/mod.rs
- apps/majordomus-cli/src/ui/prs.rs
- apps/majordomus-cli/src/web/report/snapshot.rs
- apps/majordomus-cli/src/cockpit/html.rs
- docs/MAJORDOMUS_UI.md
- test/cases/3240_the_published_screens_carry_their_slow_panels.sh
Mimo rozsah
- Zbytek plánu /ui/prs, který předala role přistání: pořadí čtení (co může přistát, co blokuje, úkol, milník, intent), každé id jako odkaz oběma směry, ui::prose, jedna primární akce na PR a tahy vypnuté jako pouze živé. To jsou samostatné úkoly tohoto bloku, po alfě, kde jsou funkcemi.
- Kontrola, že každá třída mj-ui-*, kterou obrazovka vydává, je definována (převzato z I2905; claim.rs a intent.rs stále vydávají nedefinované mj-ui-list, idd.rs mj-ui-subhead): vlastní úkol po alfě. Zde se dva seznamy PR Drain přesouvají na mj-ui-prose-list sady, jako ty z /ui/idd.
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Každá obrazovka, která odkládá panel, odpoví na požadavek snímku bez zástupce data-panel-src a s jedním nadpisem
- PR Drain ve snímku nese vlastní odpověď drainu
- Karty PR Drain jsou dráhy, které fronta počítala, každá odkaz na svou dráhu; jeho hrdina nepočítá žádný úkol plánu
- PR Drain nevysílá žádnou třídu, kterou stylesheet UI nedefinuje
Validace
- bin/majordomus plan validate
- cargo test --lib -- ui:: cockpit::html web::report::snapshot
Požadované důkazy
- snapshot_reads_every_slow_panel_test
- counts_are_the_queues_lanes_test
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| snapshot_reads_every_slow_panel_test | ci | validate run 39438896504 at master 9a5a9b77520: rust (1-3) jobs 118683336143 118683336062 118683336401 run cargo test, incl. ui::a_snapshot_reads_every_slow_panel_into_its_screen (82ace9a104d) | success (the run's only red job is pages, which runs no test) | a81b1e3 |
| counts_are_the_queues_lanes_test | ci | validate run 39438896504 at master 9a5a9b77520: rust (1-3) jobs 118683336143 118683336062 118683336401 run cargo test, incl. ui::prs::the_counts_are_the_queues_own_lanes_and_never_the_plans_issues (38f2e9b7f21) | success (the run's only red job is pages, which runs no test) | a81b1e3 |
Časová osa
- zahájeno
- 2026-10-20T16:15:52Z
- ověřeno
- —
- dokončeno
- 2026-10-20T16:29:16Z
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/I2850.yaml. Přečtěte jej zpět pomocí majordomus plan show I2850.