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.

I1031 — Servírovaný povrch říká, který checkout servíruje

Přimět každý povrch, který proces poskytuje, aby jmenoval repozitář, který obsluhuje — jeho kořen a identitu — aby čtenář na první pohled poznal, zda odpovědi před ním pocházejí ze stromu, ve kterém pracuje.

HOTOVO vlna 0 · p1 · profil implementation · bezpečné souběžně

Součást capability-graph — Jeden graf schopností, dvě projekce a žádný druhý inventář toho, co tento repozitář umí.

Cíl

Přimět každý povrch, který proces poskytuje, aby jmenoval repozitář, který obsluhuje — jeho kořen a identitu — aby čtenář na první pohled poznal, zda odpovědi před ním pocházejí ze stromu, ve kterém pracuje.

Proč

Stálo to skutečnou hodinu. Prohlížeč držel stránku Swagger ze serveru, který skončil, jeho požadavky selhávaly se zprávou obviňující CORS a živý server na jiném portu se ukázal být worktree scratchpadu úplně jiné relace — takže i čtený dokument byl z toho jiného stromu, včetně věty o trasách, kterou tento strom už opravil. Nic na stránce neříkalo, který checkout na ni odpověděl. Několik relací sdílí jeden stroj a každá může navázat vlastní server; povrch, který nejmenuje svůj strom, vybízí přesně k tomuto závěru, že nástroj je rozbitý, když nástroj je v pořádku a adresa je špatná.

Aktuální stav

Polovina z toho přistála 2026-09-10 mimo plán. ADR 0035 přidalo repository::git_identity a domovská stránka i indexová trasa na ni odpovídají vedle vlastních repository_id a linked_worktree checkoutu, takže čtenář pozná, který repozitář a který checkout odpověděl; identita pochází z modelu repozitáře a nejmenuje žádnou cestu hosta (PR #153, PR #164). Dvě kritéria jsou stále otevřená: interaktivní shell API (apps/majordomus-cli/src/http/swagger.rs) nejmenuje ani kořen, ani identitu a žádný test neservíruje dva kořeny a nedokazuje, že každý povrch jmenuje svůj vlastní. Změřeno na masteru 6042f4286, 2026-09-10.

Cílový stav

Každý obsluhovaný povrch nese kořen repozitáře a identitu, pro kterou odpovídá, dost blízko obsahu, aby to čtenář viděl, aniž by o to žádal.

Rozsah

  • apps/majordomus-cli/src/http/router.rs
  • apps/majordomus-cli/src/http/swagger.rs
  • apps/majordomus-cli/src/web/home.rs
  • test/cases/3110_a_served_surface_names_its_checkout.sh

Mimo rozsah

  • Publikování absolutní vývojářské cesty na cokoli jiného než loopback povrch
  • Druhá identita vedle té, kterou už model repozitáře drží
  • Změna toho, co kterýkoli povrch servíruje; mění se jen to, co říká sám o sobě

Závislosti

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

Kritéria přijetí

  • Domovská stránka jmenuje kořen repozitáře a identitu, kterou proces obsluhuje, nejen povrchy, které vystavuje
  • Interaktivní shell API pojmenovává týž kořen, takže stránku načtenou z jednoho serveru nelze zaměnit se stránkou jiného
  • Identita pochází z modelu repozitáře, ne z druhé inspekce
  • Žádný povrch neuvádí umístění repozitáře na hostiteli: identita říká, který checkout odpověděl, nikdy kde leží, a test dokazuje, že žádný poskytovaný ani publikovaný výstup neobsahuje absolutní cestu
  • Chování je pokryto testem, který servíruje dva kořeny a dokazuje, že každý povrch jmenuje svůj vlastní

Validace

  • cargo test --workspace --all-features
  • bash test/run.sh

Požadované důkazy

  • identity_on_surfaces
  • published_carries_no_path

Důkazy

pokrývátypcommandvýsledeku commitu
identity_on_surfacestestbash test/run.sh 3110_a_served_surface_names_its_checkoutok 3110: dva kořeny (primární + propojený worktree) servírované naráz; / JSON, / HTML a /swagger každé jmenuje své vlastní repository_id, sdílené git_repository_id, větev a hlavu, nikdy cizí; FAIL na binárce masteru d116266d116266
published_carries_no_pathtestbash test/run.sh 3110_a_served_surface_names_its_checkoutok 3110 section 3: /, /swagger, /openapi.json, /api/v1/ of both roots carry no fixture root, $ROOT, $HOME or leak-patterns.tsv machine path; scripts/ci/no-machine-paths $ROOT exits 0d116266
identity_on_surfacestestbash test/run.sh 3110_a_served_surface_names_its_checkoutok, 1 prošel na masteru 707a04c7ce8 (2026-10-17); celá sada: ci check-run success na 4a4573690f8, běh 39049547899 job 117473773693; master 707a04c7ce8 přidává jen záznam release v0.29.0707a04c
published_carries_no_pathtestbash test/run.sh 3110_a_served_surface_names_its_checkoutok, 1 prošel na master 707a04c7ce8 (2026-10-17)707a04c

Riziko

Zjevná oprava — vypsat kořen — je ta, kterou je třeba odmítnout: prozradila by rozvržení adresářů hostitele každému, kdo se dostane k socketu, a incident se řeší tím, že se řekne, který checkout odpověděl, ne kde sídlí.

Časová osa

zahájeno
2026-10-16T11:59:02Z
ověřeno
2026-10-16T13:51:16Z
dokončeno
2026-10-17T21:35:04Z

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/I1031.yaml. Přečtěte jej zpět pomocí majordomus plan show I1031.

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