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á | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| scope_entry_case | test | bash test/run.sh --no-skips 3160_a_scope_entry_is_one_path 04_start_check | 3160 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.