I0904 — Adresa naslouchání je jedna skutečnost se dvěma projekcemi
Přimět nasazení, aby se vázalo na externě dosažitelné rozhraní na portu, který deklaruje kanonický objekt, aniž by se změnil výchozí loopback, na kterém závisí lokální použití, a aniž by port existoval jako literál na více než jednom místě.
HOTOVO vlna 2 · 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
Přimět nasazení, aby se vázalo na externě dosažitelné rozhraní na portu, který deklaruje kanonický objekt, aniž by se změnil výchozí loopback, na kterém závisí lokální použití, a aniž by port existoval jako literál na více než jednom místě.
Proč
Server navázaný na 127.0.0.1 uvnitř Machine je nedosažitelný a obvyklá náprava je napevno zapsat 0.0.0.0:8080 do tří souborů. Port je fakt objektu nasazení; kontejner, konfigurace poskytovatele a proces musí číst tentýž.
Aktuální stav
bind() ve výchozím stavu používá loopback a varuje, když navázaná adresa loopback není, protože jiná než loopback adresa vystavuje vrstvu tohoto repozitáře každému hostiteli, který na rozhraní dosáhne. Výchozí port je konstanta v cli.rs.
Cílový stav
Lokální vyvolání je beze změny. Hostovaný proces se váže na deklarovanou adresu záměrně, varování zůstává pro náhodný případ a port se objevuje jednou jako kanonická data.
Rozsah
- apps/majordomus-cli/src/http/server.rs
- apps/majordomus-cli/src/commands/serve.rs
- apps/majordomus-cli/src/cli.rs
Mimo rozsah
- Řádné vypnutí, což je I0906
- Jakákoli změna toho, co server poskytuje
Závislosti
Co na tom čeká
- I0906PŘIPRAVENO Ukončení je řádné a doložené proti skutečnému kontejneru
- I0909ZABLOKOVÁNO Produkční image je vygenerovaná projekce specifikace buildu
Kritéria přijetí
- Port nasazení je uveden jednou v kanonickém objektu a spotřebovává jej proces, projekce kontejneru i konfigurace poskytovatele
- Lokální výchozí zůstává loopback a stávající varování se stále spustí při nezamýšleném navázání mimo loopback
- Hostovaný bind je vyjádřen jako záměr, ne potlačením varování
- Test dokazuje, že hostovaná konfigurace naslouchá na dosažitelné adrese a lokální výchozí ne
Validace
- cargo test --workspace --all-features
- bash test/run.sh
Požadované důkazy
- single_port_source
- hosted_bind
- local_default_unchanged
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| single_port_source | test | MJ_TEST_JOBS=2 bash test/run.sh 85_deployment_bind | testy: 1 prošel, 0 selhalo, 0 přeskočeno (běh 2026-10-14 mezi 08:59Z a 09:04Z na master e28daccd9b) | e28dacc |
| hosted_bind | test | MJ_TEST_JOBS=2 bash test/run.sh 85_deployment_bind | testy: 1 prošel, 0 selhalo, 0 přeskočeno (běh 2026-10-14 mezi 08:59Z a 09:04Z na master e28daccd9b) | e28dacc |
| local_default_unchanged | test | MJ_TEST_JOBS=2 bash test/run.sh 85_deployment_bind | testy: 1 prošel, 0 selhalo, 0 přeskočeno (běh 2026-10-14 mezi 08:59Z a 09:04Z na master e28daccd9b) | e28dacc |
Riziko
Oslabení výchozího loopbacku pro všechny by vystavilo lokální repozitáře na sdílených sítích. Hostovaná cesta musí být výslovný režim, ne snížená výchozí hodnota.
Časová osa
- zahájeno
- 2026-10-14T09:04:46Z
- ověřeno
- —
- dokončeno
- 2026-10-14T09:04:57Z
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/I0904.yaml. Přečtěte ho zpět pomocí majordomus plan show I0904.