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.

I0909 — Produkční image je generovaná projekce specifikace buildu

Vygenerovat vícestupňový build kontejneru a jeho ignore soubor ze specifikace buildu objektu nasazení: připnutý runtime Alpine, který drží binárku, runtimové prostředky a nic jiného, spouštěný neprivilegovaným uživatelem.

BLOKOVÁNO vlna 3 · p0 · profil deep-work · bezpečné paralelně

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

Blokováno. Tento úkol nemůže začít, dokud není hotov I0905. Stav je z toho odvozen, ne deklarován.

Cíl

Vygenerovat vícestupňový build kontejneru a jeho ignore soubor ze specifikace buildu objektu nasazení: připnutý runtime Alpine, který drží binárku, runtimové prostředky a nic jiného, spouštěný neprivilegovaným uživatelem.

Proč

Ručně psaný Dockerfile je druhý popis binárky, assetů a portu. Generování zachovává jeden popis; připnutí základu podle digestu zachovává image reprodukovatelný; minimální runtime stage udržuje malý útočný povrch i účet.

Aktuální stav

deploy/Dockerfile existuje a je generovaný: apps/majordomus-cli/src/deploy/render.rs ho vykresluje spolu s .dockerignore z objektu nasazení a generate.rs je vlastní jako cíle; docker-image.yml a úloha image v release.yml ho sestavují do ghcr.io/korczis/prismatic-majordomus. fly.toml byl vykreslován vedle nich do 2026-10-12, kdy bylo Fly.io vyloučeno jako cíl a soubor opustil strom. Výrok, který toto pole dříve nesl — že nikde neexistuje žádný Dockerfile — byl vyvrácen před 2026-09-10 a nikdy nebyl opraven. Naměřeno na masteru 6042f4286, 2026-09-10; odstranění fly.toml na 722228ef3c, 2026-10-12.

Cílový stav

Generovaný Dockerfile je idiomatický a revidovatelný, nese hlavičku jmenující svůj zdroj a příkaz pro regeneraci a generate --check jej odmítne, byl-li upraven ručně.

Rozsah

  • deploy/fly
  • apps/majordomus-cli/src/deploy/container.rs

Mimo rozsah

  • Buildpacks, Nixpacks nebo druhá implementace kontejnerů
  • Jakýkoli argument buildu, vrstva nebo soubor nesoucí přístupový údaj
  • Shellový entrypoint nebo jakýkoli shell ve fázi runtime

Závislosti

Co na tom čeká

Kritéria přijetí

  • Základní image je připnut na explicitní aktuální stabilní verzi Alpine a, kde je to možné, na její digest; v produkčním buildu se neobjevuje žádný plovoucí tag
  • Fáze runtime obsahuje binárku, deklarované assety runtime, certifikáty, pokud jsou vyžadovány, a nic jiného — žádný kompilátor, toolchain, zdrojový strom, historii, cache ani testy
  • Proces běží jako vyhrazený neprivilegovaný uživatel a test dokazuje, že jeho id uživatele není nula
  • Entrypoint spouští spustitelný soubor přímo ve formě exec, bez shellového obalu
  • Rozhodnutí o musl a statickém linkování se činí proti skutečnému grafu nativních závislostí a každá zbývající dynamická běhová závislost je jmenována, zdůvodněna, instalována záměrně a testována
  • Generovaný soubor uvádí svůj zdroj a příkaz regenerace, aniž by porušil formát, a generate --check selže na ruční úpravě

Validace

  • majordomus generate --check
  • cargo test --workspace --all-features

Požadované důkazy

  • generated_dockerfile
  • pinned_base
  • non_root
  • musl_decision

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á.

Riziko

Generování může způsobit, že Dockerfile bude nečitelný, což je horší než duplikace. Zdroj popisuje záměr, výstup popisuje mechaniku a výstup musí obstát v review u někoho, kdo generátor nikdy neviděl.

Č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/I0909.yaml. Načtěte ho zpět pomocí majordomus plan show I0909.

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