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.

I2760 — Položka rozsahu je jedna cesta a cesta, kterou by kontext odmítl, je odmítnuta při startu

Odmítnout při `start` každý záznam rozsahu, který záznam úlohy nemůže držet jako jednu cestu nebo který by `context` odmítl, a zabránit tomu, aby zaznamenaný záznam, který `context` nedokáže vyřešit, rozbíjel `context` i všechny commit hooky.

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

Součást development-runtime — The runtime has a development surface.

Cíl

Odmítnout při `start` každý záznam rozsahu, který záznam úlohy nemůže držet jako jednu cestu nebo který by `context` odmítl, a zabránit tomu, aby zaznamenaný záznam, který `context` nedokáže vyřešit, rozbíjel `context` i všechny commit hooky.

Proč

Dne 2026-10-15 byla v worktree #1170 spuštěna úloha s vloženým promptem jako rozsahem. `start` normalizoval záznam oddělený čárkami jako jedinou cestu, protože neobsahoval `..` a nezačínal `/`, a pak normalizované cesty spojil mezerami. Záznam zapsal každé slovo jako cestu rozsahu, asi 270 z nich, a tři z nich byly samotné `/`. Od té chvíle `majordomus context` končil chybou `refused-path '/'` na první z nich a pre-commit hook, který spouští `context`, odmítl každý commit v tomto worktree. Dne 2026-10-16 to opravný pruh zjistil jen čtením záznamu a musel úlohu uzavřít, aby mohl commitnout.

Aktuální stav

`start` odmítne položku, která je prázdná, absolutní nebo uniká z repozitáře, ale přijme takovou, která obsahuje mezeru, a pak ji rozdělí na slova. `context` volá mj_ctxd_target pro každou zaznamenanou cestu rozsahu a mj_ctxd_target ukončí proces na cestě, kterou odmítá.

Cílový stav

`start` před zápisem čehokoli odmítne položku obsahující mezeru i každou položku, kterou by odmítl `context` (absolutní, unikající nebo vedoucí přes odkaz mimo repozitář), a uvede položku i nápravu. mj_ctxd_refusal odpoví, proč je cesta odmítnuta, bez ukončení; mj_ctxd_target na této odpovědi končí stejně jako dřív; `context` vypíše zaznamenanou položku, kterou odmítá, jako odmítnutou a pokračuje zbytkem, takže starý nebo ručně upravený záznam zhorší jeden řádek, ne celý briefing.

Rozsah

  • lib/start.sh
  • lib/context.sh
  • lib/context_docs.sh
  • test/cases/3160_a_scope_entry_is_one_path.sh
  • .ai/repo/project/issues/I2760.yaml

Závislosti

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

Kritéria přijetí

  • majordomus start odmítne položku rozsahu obsahující whitespace s exit 2, nezapíše záznam úlohy a jmenuje položku
  • majordomus start odmítne položku rozsahu, která se přes symbolický odkaz překládá mimo repozitář
  • majordomus context nad zaznamenaným rozsahem, který jmenuje `/`, vypíše ten záznam jako odmítnutý, stále vypíše dokumenty ostatních cest rozsahu a skončí 0
  • majordomus context resolve <outside path> stále odmítá se stejnou zprávou a stejným návratovým kódem
  • případ 3160 bez této změny proti masteru selže

Validace

  • bash test/run.sh 3160_a_scope_entry_is_one_path 04_start_check
  • bin/majordomus plan validate

Požadované důkazy

  • scope_entry_case

Důkazy

pokrývátypcommandvýsledeku commitu
scope_entry_casetestbash test/run.sh --no-skips 3160_a_scope_entry_is_one_path 04_start_check3160 a 04 v pořádku, 0 přeskočeno (kód od 71474ebacc3, předek 4a4573690f8; znovu spuštěno na 4a4573690f8)4a45736

Časová osa

zahájeno
2026-10-17T18:25:28Z
ověřeno
2026-10-17T18:25:39Z
dokončeno
2026-10-17T18:25:46Z

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

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