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.

I3820 — A deployment names the provider that hosts it, and the provider's files are generated from it

deployment/v1 gains an optional provider block (name gigalixir, app, stack, url); the typed model parses and checks it; majordomus generate deployment renders deploy/gigalixir/Procfile and deploy/gigalixir/bin/{detect,compile,release} from the object with provenance headers under generate --check; the crate's build script reads the provider's SOURCE_VERSION when MAJORDOMUS_BUILD_COMMIT is unset; rule majordomus.deployment-contract moves to version 2 (a known provider is accepted, an unknown one refused, every provider file generated); .ai/repo/deployments/majordomus.yaml names the Gigalixir application prismatic-majordomus. ADR 0219.

PŘIPRAVENO vlna 0 · p1 · profil implementation · běží samostatně

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

Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3820 bude přijato.

Cíl

deployment/v1 gains an optional provider block (name gigalixir, app, stack, url); the typed model parses and checks it; majordomus generate deployment renders deploy/gigalixir/Procfile and deploy/gigalixir/bin/{detect,compile,release} from the object with provenance headers under generate --check; the crate's build script reads the provider's SOURCE_VERSION when MAJORDOMUS_BUILD_COMMIT is unset; rule majordomus.deployment-contract moves to version 2 (a known provider is accepted, an unknown one refused, every provider file generated); .ai/repo/deployments/majordomus.yaml names the Gigalixir application prismatic-majordomus. ADR 0219.

Proč

The owner ordered on 2026-10-20/21 that Prismatic Majordomus run on Gigalixir and that the deployment be derived, enforced and always current, not a parallel universe. The first deployment was a hand-assembled slug whose file list, start command and port restate facts the deployment object holds, and the contract refused the provider key that would let the object state where it runs.

Aktuální stav

Measured on master 573df967bb5: deployment/v1 has no provider field and rule deployment-contract v1 refuses one (case 84 asserts it); render.rs renders only deploy/Dockerfile and .dockerignore; build.rs reads MAJORDOMUS_BUILD_COMMIT or git; https://prismatic-majordomus.gigalixirapp.com runs a slug assembled by hand and answers the release binary's commit 9a5a9b77520.

Cílový stav

The object states provider.name gigalixir, app prismatic-majordomus, stack gigalixir-24 and url https://prismatic-majordomus.gigalixirapp.com; deploy/gigalixir/ holds the generated Procfile and hooks and generate --check refuses a hand edit; case 84 refuses an unknown provider name, a non-https url and a hosted loopback interface; case 86 checks the provider files' header, command, port and credential scan; case 3820 renders a fixture object with a provider and proves the Procfile starts the declared executable on the provider's port.

Rozsah

  • .ai/repo/adrs/0219-a-deployment-names-its-provider-and-every-provider-file-is-derived.md
  • .ai/repo/project/issues/I3820.yaml
  • .ai/repo/deployments
  • .ai/repo/rules/vendor/majordomus/rules
  • share/standard/majordomus/rules
  • share/schemas/majordomus/deployment
  • share/allow/deployment.txt
  • apps/majordomus-cli/src/deploy
  • apps/majordomus-cli/build.rs
  • deploy/gigalixir
  • lib/deployment.sh
  • test/cases/84_deployment_contract.sh
  • test/cases/86_deployment_projections.sh
  • test/cases/3820_a_deployment_renders_its_providers_files.sh
  • .gitattributes
  • dokumentace
  • web

Závislosti

Žádné. Tento úkol je kořenem grafu.

Co na tom čeká

Kritéria přijetí

  • An object with provider.name gigalixir, app, stack and an https url parses and checks; an unknown provider name, an http url or a hosted loopback interface is refused naming the file, key, value and correction
  • generate deployment writes deploy/gigalixir/Procfile and deploy/gigalixir/bin/{detect,compile,release}, each with the provenance header, and generate --check refuses a hand edit
  • The Procfile starts the deployment's executable with serve --discovery filesystem on all interfaces and the provider's PORT, falling back to listen.port
  • A build with SOURCE_VERSION set to a 40-hex commit and no MAJORDOMUS_BUILD_COMMIT answers that commit on /api/v1/live
  • Rule deployment-contract is version 2 in share/standard and in the vendored copy, identical

Validace

  • env -u MAJORDOMUS_SHARE -u MAJORDOMUS_HTTP_HOST -u MJ_ROOT bash test/run.sh 84_deployment_contract 86_deployment_projections 3820_a_deployment_renders_its_providers_files
  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib deploy::
  • majordomus generate --check

Požadované důkazy

  • provider_block_parses
  • provider_files_generated
  • unknown_provider_refused

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/I3820.yaml. Read it back with majordomus plan show I3820.

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