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.

Dashboard je projekce schopností a každá karta jmenuje odpověď, z níž byla čtena

Dashboard je projekce schopností a každá karta jmenuje odpověď, z níž byla čtena

majordomus://adr/adr-0088navrženo architekturarozhranícapabilitiescockpit

odkazuje na

  • put_in_force apps/majordomus-cli/src/capability/builtin/dashboard.rs (soubor)
  • put_in_force apps/majordomus-cli/src/cockpit/pages.rs (soubor)
  • put_in_force adr-0012
  • put_in_force adr-0087
  • put_in_force docs/COCKPIT.md (dokument)
  • put_in_force project.interfaces-are-projections@1
  • put_in_force test/cases/534_the_overview_answers_four_questions.sh (test)
  • put_in_force apps/majordomus-cli/tests/dashboard.rs (test)

odkazuje na něj

88. Dashboard je projekce schopností a každá karta jmenuje odpověď, z níž byla čtena

Kontext

Vlastník požádal o Dashboard Suite: ne sadu stránek, ale routovatelný, daty řízený pohled na kanonický stav, kterým čtenář prochází od přehledu k diagnóze, od diagnózy k důkazům a od důkazů k příkazu, který na ně reaguje. Fakta, která taková sada ukazuje, už existují. health.report rozhoduje, zda je tento proces zdravý, release.version co strom deklaruje a co commity implikují, plan.status a plan.next kde plán stojí, worktree.status zda je checkout tam, kam patří, continuity.state co odmítá dokončení, peers.list kdo jiný si nárokuje tytéž cesty. Každé je schopnost servírovaná přes MCP, HTTP, příkazovou řádku a Cockpit z jedné deklarace (ADR 0004, ADR 0012).

Dashboard je klasické místo, kde se tato fakta kopírují. Číslo, které si panel počítá sám — počet selhávajících kontrol vyfiltrovaný ze seznamu, součet „blokovaných“ sečtený z tabulky — je druhým odvozením něčeho, o čem již rozhoduje schopnost, a v den, kdy se obě rozejdou, není žádné špatně ve vlastních termínech. Cockpit už odmítá strukturální podobu toho (stránka nesmí číst index: kontrola cockpit-projection), ale nic neodmítlo stránku, která se zeptala správné schopnosti a pak si nad odpovědí počítala vlastní aritmetiku, nebo která ukázala jeden fakt na dvou místech ze dvou různých čtení.

Rozhodnutí

  • Dashboard Suite je modul schopností a jeho stránka je jedna schopnost. První je dashboard.overview (MCP majordomus_dashboard_overview, GET /api/v1/dashboard/overview, majordomus dashboard overview). Odpovídá na čtyři otázky — je zdravý, co se změnilo, co je rozbité, co vyžaduje akci — a nemá žádné úložiště, vlastní cache ani stav: každý zdroj se na jednu odpověď ptá jednou, prostřednictvím Context::execute, volání, které provádí každý další povrch.

  • Každá karta je typovaná odpověď, která jmenuje svůj zdroj. DashboardCard nese svou hodnotu, verdikt zdroje (ok, warn, fail, unknown — slovník HealthStatus), řádek detailu, trasu Cockpitu, do které se čtenář prokliká pro důkazy, příkaz, který na ni působí, když nějaký je, a DashboardSource: schopnost, vstup, s nímž se jí ptalo, ukazatel RFC 6901 do její odpovědi a míru. Mírou je exact — hodnota na ukazateli, null, když tam žádná není — nebo count — číslo na ukazateli, nebo délka tamního seznamu či mapy, a 0, když ji zdroj vynechal, což je způsob, jakým zdroje serializují prázdný seznam nebo nulový součet. Ani jedno není aritmetika za zdroj.

  • Slova stavu jsou verdikty zdrojů, nikdy prahy. fail, kde zdroj říká, že něco odmítá, warn, kde jmenuje něco, na co stojí za to se podívat, jinak ok a unknown — nikdy ok — když zdroj nemohl odpovědět, s jeho chybou jako detailem.

  • Test konzistence je vynucování. apps/majordomus-cli/tests/dashboard.rs se zeptá na přehled, pak pro každou kartu zavolá source.capability s source.input nad vlastní route té schopnosti a ověří, že čtení source.pointer s source.measure dává card.value; zdroj, který neodpověděl, musí nechat kartu unknown a prázdnou. Nejmenuje žádnou kartu, takže karta přidaná zítra je jím držena bez úpravy. Také ověřuje, že stránka přehledu Cockpitu nese hodnotu každé karty (jako data-value, JSON, který route vrátila) a odkazuje na její route. test/cases/534_the_overview_answers_four_questions.sh drží stejný kontrakt přes sestavený spustitelný soubor: JSON příkazové řádky proti vlastní odpovědi každého zdroje.

  • Cockpit nejdřív vykresluje schopnost. Stránka přehledu začíná sekcí „Čtyři otázky“ sestavenou z dashboard.overview přes executor; zbytek stránky zůstává.

  • Nejdřív přehled, ostatní stránky až po svých modelech. Quality, Governance, Delivery a Mesh následují jako další schopnosti modulu. Quality čeká na model důkazů z ADR 0087, aby jeho karty četly úsudek indexovaný podle subjektu, místo aby si nějaký vymýšlely.

Zamítnuté alternativy

  • Klientská dashboardová aplikace. Stahovala by stejné trasy a držela aritmetiku v JavaScriptu, kde ji nečte žádná kontrola tohoto repozitáře, a znovu by zavedla druhý model registru, který ADR 0012 pro Cockpit odmítlo.
  • Datové úložiště dashboardu (tabulka snímků, soubor metrik, cache hodnot karet). Je to kopie s plánem obnovy a každý čtenář se pak musí ptát, zda je kopie aktuální — otázka, na kterou schopnosti už odpovídají tím, že se jich ptáte.
  • Ručně počítaná čísla na každé stránce. Rychlejší na psaní a přesně ta vada, kterou toto rozhodnutí existuje, aby odmítlo: číslo bez odkazu na zdroj nelze zkontrolovat a číslo počítané dvakrát se rozejde při první úpravě, která zapomene na jedno z nich.
  • Nejdřív kvalita. Nejžádanější stránka a ta, jejíž fakta se stále modelují (ADR 0087). Postavit ji první by zafixovalo tvar, který model důkazů dosud nevyřešil.

Důsledky

Fakt na dashboardu má nyní adresu: schopnost, vstup a ukazatel, z něhož byl přečten, a čtenář se může zeptat přímo tohoto zdroje a musí dostat stejnou hodnotu. Cenou je, že každá karta je deklarace v dashboard.rs s funkcí soudce a zdroj, jehož výstup změní tvar, změní kartu — což konzistenční test i unit test, který provede každou kartu proti syntetickému repozitáři, okamžitě oba ohlásí.

Přehled stojí tolik, kolik stojí jeho zdroje. worktree.status prochází topologii worktrees a je z nich nejpomalejší na stroji s mnoha linked worktrees; peers.list se ptá jen nástěnky tohoto checkoutu (checkouts: this), aby přehled nikdy nesondoval sousední servery. Drahé a odmítající schopnosti — delivery.report, release.analysis, evidence.* — jsou jako zdroje odmítnuty unit testem v modulu.

Co zde není rozhodnuto: zda karta smí někdy kombinovat dva zdroje. Smlouva, jak je uvedena, dovoluje jeden zdroj na kartu; fakt, který potřebuje dva, je nejprve schopnost sám o sobě.

Odkud to pochází

kanonický soubor
.ai/repo/adrs/0088-a-dashboard-is-a-projection-of-capabilities-and-every-card-names-its-source.md
identity
adr-0088
dostupné také jako
Zdroj MCP majordomus://adr/adr-0088 · majordomus entity show adr/adr-0088 · GET /api/v1/entity?uri=majordomus://adr/adr-0088
v Cockpitu
/cockpit/objects/adr/adr-0088

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

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