Zdůvodnění
Worker, který čte vše, co najde, přečte výstupy buildu, vendorovaný kód, megabajt fixture, obrázek nebo tajemství a cituje je zpět. Hranice byla implicitní: výjimka tady, limit velikosti tam, .gitignore, které nikdo neměl za politiku. Jedna deklarace činí hranici prověřitelnou, stejnou pro každého poskytovatele a každou projekci, a zodpověditelnou: majordomus scope <path> řekne dovnitř, nebo ven, a jmenuje pravidlo.
Požadované chování
.ai/repo/scope.yaml (sekce scope manifestu) deklaruje in, pathspecy, které worker čte, a out, co nikdy nečte: cesty, tajemství, generovaná aktiva, archivy, obrázky, video, PDF, výpisy databází, fixtures nad limit, soubory nad limit, binární obsah. out vítězí nad in; cesta, která neodpovídá ničemu, je mimo jako undeclared. Repozitář, který nic nedeklaruje, se čte podle výchozího nastavení distribuce, tedy souboru, který majordomus init zaseje, a původ se hlásí, nikdy nepředpokládá. Spustitelný soubor v Rustu deklaraci při startu zkompiluje jednou; objevování zahodí zdroj mimo ni s diagnostikou jmenující pravidlo; index, a tedy každá jeho projekce přes MCP, HTTP i příkazovou řádku, nedrží nic mimo rozsah; repository.scope odpovídá deklarací a každým sledovaným souborem sečteným proti ní; repository.scope_classify posoudí libovolnou cestu podle názvu, pak velikosti, pak obsahu; sledované tajemství je varování tracked_secret. Příkaz doctor shellového nástroje odmítne soubor rozsahu s klíčem, který schéma nedeklaruje.
Chování při selhání
Nesprávně utvořená deklarace (verze, kterou tento spustitelný soubor nečte, absolutní vzor, segment .., vzor názvu s lomítkem, neznámý klíč) odmítne start s uvedením souboru a klíče; doctor selže na totéž; majordomus scope --check skončí kódem 10, když je zadaná cesta mimo. Recenzent odmítne změnu, která čte cestu, aniž by ji posoudila.
Ověření
apps/majordomus-cli/tests/scope.rs a unit testy crate v src/scope.rs; test/cases/93_scope_policy.sh nad sestaveným executable a shellovým nástrojem.