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.

I0902 — Objekt nasazení se stává typovaným Rustem, který odmítá nesmysly

Zpracovat kanonický objekt nasazení do silně typovaného Rustu — výčty a newtypy místo řetězců — a validovat jej tak, aby nasazení, které nemůže fungovat, bylo odmítnuto dříve, než se cokoli sestaví.

HOTOVO vlna 1 · p0 · profil implementation · bezpečné paralelně

Součást fly-deployment — Image kontejneru je projekcí modelu repozitáře a jeho smoke test je jeho důkazem.

Cíl

Zpracovat kanonický objekt nasazení do silně typovaného Rustu — výčty a newtypy místo řetězců — a validovat jej tak, aby nasazení, které nemůže fungovat, bylo odmítnuto dříve, než se cokoli sestaví.

Proč

Generování z nevalidovaného dokumentu vytvoří Dockerfile, který vypadá platně a míří na binárku, která neexistuje. Validace je bod, ve kterém chyba v nasazení stojí selhání testu místo selhání produkčního rolloutu.

Aktuální stav

apps/majordomus-cli/src/deploy/ existuje a parsuje objekt nasazení do typovaných struktur a apps/majordomus-cli/src/capability/builtin/deploy.rs jej projektuje přes registr. Stejně jako u I0901 se práce dostala na master, aniž by byla kdy zaznamenána k úkolu. Změřeno na masteru 6042f4286, 2026-09-10; zde není označeno jako dokončené, protože validace tohoto úkolu nebyla nad tímto stromem znovu spuštěna.

Cílový stav

Modul deploy parsuje objekt do typovaných struktur, validuje každý invariant, který lze rozhodnout lokálně, a hlásí selhání, které jmenuje soubor, klíč, co bylo špatně a co dělat.

Rozsah

  • apps/majordomus-cli/src/deploy

Mimo rozsah

  • Projekce provideru; to je I0913
  • Jakékoli síťové volání, jakékoli spuštění procesu, jakýkoli přístup k API Fly
  • Obecná hierarchie traitů pro více poskytovatelů pro jediného poskytovatele

Závislosti

Co na tom čeká

Kritéria přijetí

  • Porty, paměť, třída CPU, počty strojů a trasy jsou typované, ne řetězce, a neplatnou hodnotu nelze vytvořit
  • Validace odmítne nulovou paměť, neplatný port, trasu zdraví nebo připravenosti, kterou nezaregistruje žádná schopnost, balíček nebo binárku, kterou workspace neobsahuje, vstup sestavení, který se nevyřeší, a minimální počet běžících nad počtem strojů
  • Každé odmítnutí jmenuje zdrojový soubor, klíč, pozorovanou hodnotu a nápravu
  • Testy vlastností pokrývají invarianty, které musí platit pro jakýkoli přijatý objekt, ne jen příklady v repozitáři
  • Unit testy pokrývají každé odmítnutí

Validace

  • cargo test --workspace --all-features
  • cargo clippy --workspace --all-targets --all-features -- -D warnings

Požadované důkazy

  • typed_parse
  • validation_refuses
  • property_invariants

Důkazy

pokrývátypcommandvýsledeku commitu
typed_parsetestcargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --lib deploy::teststest result: ok. 30 passed; 0 failed (run 2026-10-14 between 07:40Z and 07:58Z on master ce5959db59)ce5959d
validation_refusestestcargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --lib deploy::teststest result: ok. 30 passed; 0 failed (run 2026-10-14 between 07:40Z and 07:58Z on master ce5959db59)ce5959d
property_invariantstestcargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --lib deploy::teststest result: ok. 30 passed; 0 failed (run 2026-10-14 between 07:40Z and 07:58Z on master ce5959db59)ce5959d

Riziko

Validace tras potřebuje registr schopností, takže model nasazení závisí na indexu. Číst registr, který už existuje, je správně; sestavovat druhý seznam tras, aby se závislosti předešlo, není.

Časová osa

zahájeno
2026-10-14T08:00:59Z
ověřeno
—
dokončeno
2026-10-14T08:01:10Z

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

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