I2871 — A file in the half whose contract excludes it is refused, naming the path and the contract
A check reads I2870's declaration, walks the layer and refuses every path that a contract excludes — control-plane state under .ai/repo, authored knowledge under .ai/local — with '<path> violates <contract>'. doctor reports it and a gate runs it; update refuses a projection target outside the repository, the mj_norm_path guard I1101 found missing.
BLOKOVÁNO vlna 2 · p0 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I2870 is done. The status is derived from that, not declared.
Cíl
A check reads I2870's declaration, walks the layer and refuses every path that a contract excludes — control-plane state under .ai/repo, authored knowledge under .ai/local — with '<path> violates <contract>'. doctor reports it and a gate runs it; update refuses a projection target outside the repository, the mj_norm_path guard I1101 found missing.
Proč
The second slice of I1102. On 2026-10-21 nothing refused a cache or index written under .ai/repo, or a copy of a rule under .ai/local: doctor checks only that .ai/local is untracked and that manifest sections exist.
Aktuální stav
doctor checks .ai/local is git-ignored and nothing in it is tracked; scripts/ci/local-never-published keeps local out of the site; nothing reads a contract to judge a path.
Cílový stav
A misplaced file fails a check that names the path and the contract it violates.
Rozsah
- apps/majordomus-cli/src
- share/kinds.yaml
- share/skeleton/ai/repo/README.md
- lib/doctor.sh
- lib/update.sh
- test/cases/3405_a_misplaced_artifact_is_refused.sh
- .ai/repo/project/issues/I2871.yaml
Mimo rozsah
- Moving content between halves (I1109 and the migration issues)
Závislosti
Co na tom čeká
Kritéria přijetí
- A file a contract excludes is refused, naming the path and the contract; a negative case places one in each half
- update writes no path outside the repository root (the mj_norm_path guard)
Validace
- cargo test --workspace --all-features
- bin/majordomus doctor
Požadované důkazy
- boundary_checked
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.
Canonical record: .ai/repo/project/issues/I2871.yaml. Read it back with majordomus plan show I2871.