I2720 — majordomus self update znovu spouští publikovaný instalátor a nikdy ho nereimplementuje
Dát každé instalaci jeden typovaný příkaz, který hlásí a provádí upgrade na stabilní release spuštěním publikovaného install.sh s --version a vlastním prefixem instalace, aby stažení, ověření a výměna existovaly jednou.
PŘIPRAVENO vlna 0 · p0 · profil implementation · bezpečné souběžně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I2720 bude přijato.
Cíl
Dát každé instalaci jeden typovaný příkaz, který hlásí a provádí upgrade na stabilní release spuštěním publikovaného install.sh s --version a vlastním prefixem instalace, aby stažení, ověření a výměna existovaly jednou.
Proč
ADR 0161 (rozhodnutí vlastníka z 2026-10-14) určuje, že uzel mesh následuje publikovaný release. docs/DISTRIBUTION.md nechával otevřené, zda self-update znovu implementuje instalátor v Rustu, nebo jej znovu spouští; ADR 0161 rozhoduje, že jej znovu spouští, protože kontrola digestu a velikosti instalátoru a jeho atomické přejmenování launcheru jsou otestovanou rizikovou částí (případ 85).
Aktuální stav
Žádný příkaz self-update neexistuje; člověk znovu spustí install.sh s --version na každém stroji.
Cílový stav
Schopnost self.update s --check (aktuální verze, verze stabilního ukazatele, zda se upgrade uplatní, verdikt jen-dopředu a jen-stabilní) a --apply (spustí instalátor, který jmenuje share/distribution.yaml instalace, s --version <tag> a prefixem instalace, a hlásí nainstalovanou verzi přečtenou zpět z nového launcheru). Odmítne downgrade, pre-release a verzi, kterou metadata neuvádějí.
Rozsah
- apps/majordomus-cli/src/capability/builtin
- apps/majordomus-cli/src/release
- share/commands.yaml
- docs/DISTRIBUTION.md
- docs/CLI.md
- test/cases
Mimo rozsah
- Druhá implementace stahování, verifikace nebo výměny
- Aktivace nové verze v běžícím serveru (I2722, I2163)
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I2721BLOKOVÁNO Zapsaný uzel meshe sleduje stabilní ukazatel sám
- I2722BLOKOVÁNO Hub aktivuje novou verzi pod svým správcem služeb, zkontroluje její zdraví a sám se vrátí zpět
- I2724BLOKOVÁNO Uzel bez cesty k webu si vezme archiv od peera a přesto ho sám ověří
- I3178BLOCKED A self update killed at any stage leaves a usable installation
Kritéria přijetí
- self update --check jmenuje běžící a stabilní verzi a zda se upgrade uplatní, bez zápisu do sítě
- self update --apply nainstaluje stabilní release přes install.sh a nový launcher ho ohlásí
- Downgrade, pre-release a verze mimo seznam se odmítají s uvedením důvodu
Validace
- bin/majordomus plan validate
- MJ_TEST_JOBS=4 bash test/run.sh 85_installer <případ, který tento úkol přidá>
Požadované důkazy
- self_update_wraps_installer_test
- self_update_refuses_downgrade_test
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
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/I2720.yaml. Přečtěte jej zpět pomocí majordomus plan show I2720.