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.

Cockpit se publikuje jako snímek exportérem, který čte UI, a dva snímky odkazují jen na stránky, které každý drží

Cockpit se publikuje jako snímek exportérem, který čte UI, a dva snímky odkazují jen na stránky, které každý drží

majordomus://adr/adr-0147navrženo architekturarozhranícockpituistránky

odkazuje na

  • put_in_force .ai/repo/ci/pages.yaml (soubor)
  • put_in_force apps/majordomus-cli/src/cockpit/mod.rs (soubor)
  • put_in_force apps/majordomus-cli/src/web/report/snapshot.rs (soubor)
  • put_in_force adr-0012
  • put_in_force adr-0135
  • put_in_force adr-0141
  • put_in_force docs/COCKPIT.md (dokument)
  • put_in_force docs/MAJORDOMUS_UI.md (dokument)
  • put_in_force test/cases/2981_the_cockpit_snapshot_holds_its_routes.sh (test)
  • put_in_force test/cases/2982_two_snapshots_link_what_the_other_holds.sh (test)

odkazuje na něj

Nic ve vrstvě to nejmenuje. Zpětné odkazy se odvozují, takže prázdný seznam je odpověď, ne opomenutí.

Kontext

Poslání vlastníka z 2026-10-12, „Unified Product Experience“, jmenuje tři plochy jednoho produktu: vstupní stránku, /ui a /cockpit. Jeho přijetí žádá, aby veřejné /cockpit bylo ověřeno a aby tři plochy byly navzájem dosažitelné.

  • UI je od ADR 0141 publikováno na /ui: snímek čtený v jednom commitu.
  • https://majordomus.dev/cockpit/ odpověděl vlastní stránkou webu pro nenalezeno. Nikdo se neptal.
  • Každá stránka UI jmenuje své zdroje odkazem na stránku schopnosti v Cockpitu (ADR 0135). Ve snapshotu UI vedl každý z těch odkazů na stránku, která říkala, že na ni odpovídá jen běžící proces. Na skutečném repozitáři to bylo 187 odkazů na šestnácti obrazovkách. Povrch, kam je čtenář poslán jako první, nevedl nikam pro vlastní důkazy.
  • Exportér z ADR 0141 byl napsán pro UI: jeho připojení, assety, obrazovky i skript byly v kódu pojmenovány.

Rozhodnutí

Jeden exportér čte oba povrchy a třetí by byla konstanta.

  1. Subjekt. To, v čem se snímek UI liší od snímku Cockpit, je hodnota (web::report::snapshot::Subject): identita, producent, obsluhovaný povrch, mount, assety, klíč dotazu, který žádá část stránky, zda stránka ponechává své skripty a trasy, které publikace nikdy nedrží. Exportér bere subjekt, vlastní handler povrchu a stránky ke čtení jako první. UI a COCKPIT jsou ty dva, které existují.
  2. majordomus web report cockpit-snapshot čte Cockpit v procesu a zapisuje target/web/cockpit-snapshot, deklarovaný jako povrch každé publikace na /cockpit a žádného procesu. Čte v pořadí: každou statickou routu; každou stránku Cockpitu, na kterou chtěl snapshot UI odkazovat; pak, po jedné stránce na rodinu střídavě, to, na co ty odkazují, až do hranice stránek nebo časového rozpočtu.
  3. Žádný skript. Skripty Cockpitu otevírají sockety, pollují a postují do procesu. Snapshot jej žádný z nich nenese. Každá stránka Cockpitu je kompletní HTML dřív, než se spustí skript, takže se neztratí nic, co by nemohlo fungovat.
  4. Jedna stránka je zadržena. /cockpit/continuity čte .ai/local/: otevřené epizody a předávky jednoho checkoutu, které jmenují disk. Předmět ji zadržuje. Nikdy se nečte, ať na ni vede cokoli, a odkaz na ni vede na stránku o živém Cockpitu. Test zjistil, že samotné naplnění to nedrželo: navigace na tuto stránku odkazuje z každé jiné.
  5. Dva snímky se propojují stránkami, které každý drží. Snímek je omezený, takže to, že je jeho mount publikován, neříká nic o jedné jeho stránce. Odkaz do povrchu jiného snímku vede na tuto stránku, když ji vlastní záznam druhého snímku uvádí, a na živou stránku, když ne. Snímek zapsaný jako druhý opraví soubory prvního: odkazy, které první vedly na živou stránku, protože druhý ještě neexistoval, se přesměrují na stránky, které druhý zapsal. Každý povrch se čte jednou.
  6. Model publikace deklaruje obojí (deploy.snapshots v .ai/repo/ci/pages.yaml). Nasazení umístí každé na přípojný bod, který mu dává topologie, scripts/pages verify-ui --surface cockpit se po nasazení ptá veřejného webu a kontrola pages-live váže každý deklarovaný snímek na publikovaný commit.

Důsledky

  • /cockpit/ na veřejném webu je Cockpit publikovaného commitu, na každé stránce označený jako snapshot, s commitem, časem a spustitelným souborem, který ho přečetl.
  • Schopnost, kterou UI cituje, je stránka, kterou čtenář může otevřít na veřejném webu. Na tomto repozitáři vede 169 ze 187 odkazů na stránku Cockpitu; zbytek je formulář a stránky za hranicí.
  • Snapshot Cockpitu je omezen hluboko pod registrem: stránka na každou schopnost a každý objekt by byly tisíce souborů. Co mez vynechává, je uvedeno v jeho snapshot.json a vede na živou stránku.
  • Snímek ukazuje stroj, který jej vykreslil, tam, kde stránka je o stroji: peeři, worktrees a stav zdraví patří běžci CI. Jsou publikovány tak, jak byly přečteny. Zadržena je pouze stránka, která čte .ai/local/.
  • Cockpit zatím neodkazuje na UI, ani v jednom směru publikace. Jeden kontrakt odkazů pro web, UI a Cockpit je I2496.
  • ADR 0141 platí tak, jak je napsáno. Jeho exportér je tento; jeho příkaz, adresář a deklarace se nemění.

Odmítnuté alternativy

  • Stránka na /cockpit/, která říká, že Cockpit běží s vaším serverem. Poctivé a zavřelo by to 404. Zanechalo by to také odkazy na důkazy v UI vedoucí nikam, což je vada, na kterou čtenář narazí.
  • Druhý exportér pro Cockpit. První už obsahoval každé pravidlo, které publikace potřebuje: relativní odkazy, živou stránku, razítko, mez. Kopie by se od něj rozcházela.
  • Číst UI dvakrát, jednou aby se zjistilo, na co odkazuje, a jednou aby se na něj odkázalo. Snímek UI stojí na CI minuty; oprava jeho souborů po zapsání Cockpitu stojí průchod přes ně.

Stav

Navrženo relací p12 dne 2026-10-12 pro misi Unified Product Experience vlastníka, s rozdělením dohodnutým s p9. Přijetí je aktem vlastníka.

Odkud to pochází

kanonický soubor
.ai/repo/adrs/0147-the-cockpit-is-published-as-a-snapshot-by-the-exporter-that-reads-the-ui.md
identity
adr-0147
dostupné také jako
Zdroj MCP majordomus://adr/adr-0147 · majordomus entity show adr/adr-0147 · GET /api/v1/entity?uri=majordomus://adr/adr-0147
v Cockpitu
/cockpit/objects/adr/adr-0147

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.