I4229 — The image's build stage carries every file the crate embeds
Fail validate, not the image build, when the executable embeds a file the image's compiling stages do not copy: a unit test of the Dockerfile renderer walks the package's non-test sources, resolves every include_str! and include_bytes! against the file that names it, and requires each to fall under a path the deps or build stage copies.
PŘIPRAVENO vlna 0 · p2 · implementační profil · bezpečné paralelně
Součást development-runtime — The runtime has a development surface.
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I4229 bude přijato.
Cíl
Fail validate, not the image build, when the executable embeds a file the image's compiling stages do not copy: a unit test of the Dockerfile renderer walks the package's non-test sources, resolves every include_str! and include_bytes! against the file that names it, and requires each to fall under a path the deps or build stage copies.
Proč
Train 6 (I2674) embedded share/mesh-cache-provider/* in mesh/cache_provision.rs while the image's build stage copied apps/majordomus-cli alone, and master's docker-image job failed (run 40189935629 on 71857dbb609: couldn't read share/mesh-cache-provider/policy.json). A pull request builds the image only when the image's own definition changes, so the defect reached master unseen. Train 7 moved the payload under apps/majordomus-cli/assets/, which the build stage copies; #2523 wrote this guard alongside a COPY share fix that the move made unnecessary.
Aktuální stav
On 2efeacea031 nothing short of building the image checks that an embedded file reaches the build context.
Cílový stav
deploy::render::tests::the_build_stage_carries_every_file_the_package_embeds passes on master's layout and fails, naming the file and the path, when a source embeds a file outside what the deps and build stages copy.
Rozsah
- .ai/repo/project/issues/I4229.yaml
- apps/majordomus-cli/src/deploy/render.rs
Mimo rozsah
- Changing what the image copies: master's layout already carries every embedded file
- Embeds written through concat! or env!, which name no literal path
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- The test passes on master's sources
- A source that embeds ../../../share/advisors.yaml fails the test, naming that source and that path
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib deploy::render::tests::the_build_stage_carries_every_file_the_package_embeds
Požadované důkazy
- embedded_files_reach_the_build_stage
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.
Canonical record: .ai/repo/project/issues/I4229.yaml. Read it back with majordomus plan show I4229.