I0901 — Popis nasazení je druh vrstvy, ne soubor poskytovatele
Zaregistrovat `deployment` jako druh vrstvy AI — povolené klíče, schéma, smlouva adresáře — a popsat vlastní nasazení tohoto repozitáře jako jeden objekt pod .ai/repo/deployments/, aby každá další projekce četla jeden soubor a žádný soubor poskytovatele nebyl nikdy autoritativní.
HOTOVO vlna 0 · 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.
Cíl
Zaregistrovat `deployment` jako druh vrstvy AI — povolené klíče, schéma, smlouva adresáře — a popsat vlastní nasazení tohoto repozitáře jako jeden objekt pod .ai/repo/deployments/, aby každá další projekce četla jeden soubor a žádný soubor poskytovatele nebyl nikdy autoritativní.
Proč
Ručně psaný Dockerfile a fly.toml by opakovaly port, trasy, zdroje a vstupy sestavení, které repozitář už zná. Vrstva už má mechanismus pro kanonická fakta: druh, jeho povolené klíče, jeho schéma a jeho smlouvu o adresáři. Nasazení je druh a vše za ním je projekce.
Aktuální stav
Druh na trunku existuje: share/kinds.yaml deklaruje deployment proti schématu majordomus.deployment/v1, share/allow/deployment.txt uzavírá jeho klíče a je z toho schématu generován a .ai/repo/deployments/majordomus.yaml popisuje nasazení tohoto repozitáře vedle README adresáře. Práce se dostala na master s feature/deployment-core a k tomuto úkolu nebylo nikdy nic zaznamenáno, takže milník čte PLANNED 0/32, ačkoli jeho první artefakty jsou na trunku. Změřeno na masteru 6042f4286, 2026-09-10; zde není označeno jako dokončené, protože validace tohoto úkolu (bash test/run.sh, bin/majordomus doctor) nebyla proti tomu stromu znovu spuštěna.
Cílový stav
Objekt nasazení je indexován, čitelný stejnou plochou objektů jako každý jiný druh, uzavřený souborem allow, popsaný schématem a žije v adresáři, který nese vlastní kontextový dokument.
Rozsah
- .ai/repo/deployments
- share/kinds.yaml
- share/allow/deployment.txt
- share/schemas
Mimo rozsah
- Jakýkoli artefakt poskytovatele; tento úkol nezapisuje žádný Dockerfile ani fly.toml
- Jakýkoli Rust; typovaný model je I0902
- Jakákoli tajná hodnota, název přihlašovacího údaje nebo token
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I0902HOTOVO Objekt nasazení se stává typovaným Rustem, který odmítá nesmysly
- I0924ZRUŠENO Rozhodnutí je zaznamenáno tam, kde se zaznamenávají architektonická rozhodnutí
Kritéria přijetí
- Objekt uvádí obecná fakta o nasazení — identitu aplikace, balíček a binárku, port naslouchání, routes zdraví a readiness, zdroje, počet strojů, region, autostart a autostop, vstupy buildu, rozpočty — a fakta specifická pro providera drží v pojmenovaném bloku providera, ne promíchaná s obecnými
- Klíče jsou uzavřeny souborem share/allow/deployment.txt a neznámý klíč je odmítnut
- Adresář nese kontextové README, které říká, co je autoritativní, co generované a jak to přegenerovat, podle ADR 0011
- Objekt se vypisuje a čte přes stávající povrch objektů, bez kódu, který by pro něj dělal výjimku
- V objektu se neobjeví žádná tajná hodnota ani název přihlašovacího údaje
Validace
- bash test/run.sh
- bin/majordomus doctor
Požadované důkazy
- kind_registered
- keys_closed
- directory_contract
- object_indexed
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| kind_registered | artifact | grep -n -A3 '^ deployment:' share/kinds.yaml | share/kinds.yaml deklaruje druh deployment proti schématu majordomus.deployment/v1; share/allow/deployment.txt (41 klíčů) se generuje z tohoto schématu | f075170 |
| object_indexed | test | bin/majordomus-cli run objects.list --input '{\"kind\":\"deployment\"}' --format json; bin/majordomus-cli run objects.get --input '{\"uri\":\"majordomus://deployment/majordomus\"}' | objects.list vrací jeden objekt majordomus://deployment/majordomus v .ai/repo/deployments/majordomus.yaml; objects.get ho čte (stav succeeded); generický povrch objektů, žádný kód výpisu specifický pro nasazení | f075170 |
| keys_closed | test | bash test/run.sh 84_deployment_contract | ok 84_deployment_contract: doctor odmítá neznámý klíč jménem (key(s) the contract does not have: fly_api_token), cizí schéma, chybějící region, přihlašovací údaj, duplicitní identitu; obnovený objekt je přijat | f075170 |
| directory_contract | artifact | grep -nE 'uthoritative|enerated|egenerat' .ai/repo/deployments/README.md; bin/majordomus doctor | grep deployment | the context/v1 README ai.repo.deployments has sections 'What is authoritative and what is generated' and 'Regenerate' (ADR 0011); doctor: OK deployment .ai/repo/deployments/ — 1 deployment(s), no credential, one identity each | f075170 |
Riziko
Schéma napsané pro jedno nasazení se stane buď abstrakcí na úrovni Kubernetes, kterou nikdo nepotřebuje, nebo souborem Fly s jinou příponou. Musí být generické tam, kde by ho druhý poskytovatel věrohodně znovu použil, a konkrétní všude jinde.
Časová osa
- zahájeno
- 2026-10-04T09:55:21Z
- ověřeno
- 2026-10-04T09:59:52Z
- dokončeno
- 2026-10-04T10:00:11Z
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/I0901.yaml. Přečtěte jej zpět pomocí majordomus plan show I0901.