I2735 — Úprava, kterou nekryje žádné tvrzení, je odmítnuta
Je-li zapnuto session.edits_require_claim a mesh povolen, předběžný hook nástroje poskytovatele odmítne zápis (Edit, Write, MultiEdit, NotebookEdit), který nekryje žádný nárok: rozsah aktivní úlohy nebo živý nárok meshe zapisující relace; posuzuje ho majordomus guard hook v checkoutu, do něhož soubor patří, a schopnost guard.edit přes MCP a HTTP.
BLOKOVÁNO vlna 3 · p0 · profil implementation · běží samostatně
Blokováno. Tento úkol nemůže začít, dokud není I2289 hotovo. Stav je z toho odvozen, ne deklarován.
Cíl
Je-li zapnuto session.edits_require_claim a mesh povolen, předběžný hook nástroje poskytovatele odmítne zápis (Edit, Write, MultiEdit, NotebookEdit), který nekryje žádný nárok: rozsah aktivní úlohy nebo živý nárok meshe zapisující relace; posuzuje ho majordomus guard hook v checkoutu, do něhož soubor patří, a schopnost guard.edit přes MCP a HTTP.
Proč
Dne 2026-10-15 se vlastník zeptal, proč relace nevstoupí do mesh a nepracuje na něm a proč to nic nevynucuje. I2734, I2288 a I2289 dávají relaci a úlohu na mesh a odmítají dokončení mimo něj; úprava, kterou nikdo nenárokoval, přesto nebyla nikdy zastavena, takže nárok zůstal konvencí, dokud se o něj neptala sama úprava. Předchozí řešení: nesloučená větev feature/the-guard-refuses-an-unready-episode (2026-09-11) zapojila strážce PreToolUse pro připravenost serveru; tohle klade jinou otázku, ve spustitelném souboru, protože hook běží před každou úpravou a studený start nástroje v shellu byl změřen na zhruba 4 s.
Aktuální stav
Žádný hook neběží před nástrojem; úprava, kterou nepokrývá žádné tvrzení, se nikdy neodmítne.
Cílový stav
guard hook skončí s 2 s cestou a nápravou pro neclaimovanou editaci; vlastní živý claim relace nebo rozsah aktivní úlohy ji pustí; lokální stav, cesta mimo checkout, vypnutá politika a server, který neodpovídá, se pustí; sledovaný shim projde na 2 a na nic jiného.
Rozsah
- apps/majordomus-cli/src/guard.rs
- apps/majordomus-cli/src/capability/builtin/guard.rs
- apps/majordomus-cli/src/commands/guard.rs
- apps/majordomus-cli/src/cli.rs
- apps/majordomus-cli/src/cli/local.rs
- apps/majordomus-cli/src/policy.rs
- .claude/hooks/majordomus-edit-guard
- .ai/repo/policy.yaml
- share/schemas/majordomus/policy/policy.v1.schema.json
- share/skeleton/policy.yaml
- test/cases/3069_an_edit_no_claim_covers_is_refused.sh
- docs/MESH.md
Závislosti
Kritéria přijetí
- Nenárokovaná úprava se odmítne s návratovým kódem 2, uvede se cesta i náprava
- Živý nárok píšící relace nebo rozsah aktivní úlohy úpravu propustí; nárok jiné relace ne
- Lokální stav, cesta mimo checkout, nástroj, který nezapisuje soubor, vypnutá politika a neodpovídající server jsou propuštěny
- Posuzovaný checkout je ten, ke kterému zapsaný soubor patří
- Sledovaný shim propouští odmítnutí a nic jiného
Validace
- bin/majordomus plan validate
- cargo test --lib guard
- bash test/run.sh 3069_an_edit_no_claim_covers_is_refused
Požadované důkazy
- case_3069
- guard_unit_tests
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
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/I2735.yaml. Přečtěte ho zpět pomocí majordomus plan show I2735.