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.

Provider bootstrapy, které politika deklaruje (AGENTS.md, CLAUDE.md, GEMINI.md, ...), jsou cílem majordomus generate, vykreslené z politiky a šablon providerů bajt po bajtu tak, jak je vykresluje nástroj shell, a generate --check odmítne ručně upravený či zastaralý v CI

AGENTS.md, CLAUDE.md, GEMINI.md a každý další cíl, který deklaruje projections[] politiky, jsou cache dvou vstupů: .ai/repo/policy.yaml s jejími profily a šablony poskytovatele (.ai/repo/providers/<provider>.tmpl, jinak share/providers/<provider>.tmpl distribuce). Zapisuje je majordomus generate providers spustitelného souboru v Rustu; majordomus generate --check, který CI spouští při každém pushi, je odvodí znovu, porovná bajt po bajtu, nic nezapíše a skončí s kódem 10, přičemž jmenuje každý soubor, který se liší nebo chybí. Pravidlo ručně napsané do AGENTS.md se proto nesloučí.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Jeden renderer, dva vstupní body, které se shodují na každém razítku; politika je jediným vstupem (její hash a hash profilů je první hash razítka). Cíl mimo repozitář, poskytovatel bez šablony, token, který politika neumí vyplnit, a cíl always_loaded přesahující rozpočet jsou odmítnuty s důvodem a nic se nezapíše. Režim regionu ponechává hostitelský dokument mimo značky. apps/majordomus-cli/tests/providers_projection.rs pokrývá stranu fixture; CI spouští generate --check při každém pushi.

Co to znamená

AGENTS.md, CLAUDE.md, GEMINI.md a každý další cíl, který deklaruje projections[] politiky, jsou cache dvou vstupů: .ai/repo/policy.yaml se svými profily a šablony poskytovatele (.ai/repo/providers/<provider>.tmpl, jinak share/providers/<provider>.tmpl distribuce). Zapisuje je majordomus generate providers spustitelného souboru v Rustu; majordomus generate --check, které CI spouští při každém pushi, je odvodí znovu, porovná bajt po bajtu, nic nezapíše a skončí s exit 10 se jmény každého souboru, který se liší nebo chybí. Pravidlo ručně napsané do AGENTS.md proto neprojde merge.

Princip

apps/majordomus-cli/src/policy.rs čte politiku stejným čtečkou podmnožiny YAML jako shellový nástroj a hashuje soubor politiky následovaný profily v pořadí podle jména, což je přesně to, co hashuje mj_policy_cat shellového nástroje. apps/majordomus-cli/src/providers.rs vyplní {{DEFAULT_PROFILE}}, {{CHECKPOINT_DEFAULT}} a {{POLICY_SHA}}, cíl v režimu souboru opatří razítkem jmenujícím hash politiky a hash obsahu a cíl v režimu regionu vloží mezi značky majordomus:begin a majordomus:end hostitelského dokumentu a zbytek hostitele nechá být. Výstup jsou stejné bajty, které zapisuje update shellového nástroje, takže doctor, watch a update --dry-run přijmou cíl zapsaný v Rustu a generate --check přijme cíl zapsaný shellem.

Deklarace, kterou nelze vytvořit, se odmítne s důvodem a nic se nezapíše: cíl mimo repozitář, poskytovatel bez šablony kdekoli, token, který politika nemůže vyplnit (šablona žádající {{PROFILE_TABLE}}), hodnota, kterou politika nenastavuje, a cíl always_loaded nad context.always_loaded_budget_lines.

Jak to vidět

apps/majordomus-cli/target/debug/majordomus generate providers --check   # OK generated AGENTS.md — matches the registry
printf '\nMy own rule.\n' >> AGENTS.md
apps/majordomus-cli/target/debug/majordomus generate providers --check   # exit 10: AGENTS.md (differs)
apps/majordomus-cli/target/debug/majordomus generate providers           # rewrites AGENTS.md to the very bytes it had

Co nepokrývá

update shellového nástroje stále existuje jako vstupní bod s --dry-run, --diff a --force; je to interaktivní zapisovač a kontrolou je generate v Rustu. Oba čtou stejné vstupy a zapisují stejné bajty, což test/cases/93_rust_provider_projections.sh dokazuje v obou směrech; když ten případ selže, dva renderery se rozešly. Blokové tokeny shellového nástroje ({{PROFILE_TABLE}}, {{FINISH_CONTRACT}}, {{REQUIRED_SECTIONS}}) spustitelný soubor v Rustu nevykresluje: žádná dodaná šablona je nepoužívá a šablona, která ano, se odmítne se jménem tokenu.

Proč existuje

Soubory providerů jsou jedinou projekcí, kterou čte každý AI pracovník před čímkoli jiným, a až dosud je s jejich razítkem porovnával jen doctor shellového nástroje; CI spouštělo generate --check pro dokument OpenAPI a referenci, ale ne pro ně. Doktrína repozitáře, že soubory providerů jsou adaptéry .ai/ a nikdy zdroj (pravidlo project.interfaces-are-projections, ADR 0001), je nyní vynucována tam, kde na tom záleží: zastaralý nebo ručně upravený bootstrap shodí sestavení.

Detail vykreslený z docs/claims/provider-projections-one-renderer.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Provider bootstrapy, které politika deklaruje (AGENTS.md, CLAUDE.md, GEMINI.md, ...), jsou cílem majordomus generate, vykreslené z politiky a šablon providerů bajt po bajtu tak, jak je vykresluje nástroj shell, a generate --check odmítne ručně upravený či zastaralý v CI

    Vytvořeno na Policy, Projection.

  2. 2 · kanonické tvrzení

    provider-projections-one-rendererdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/CAPABILITIES.md

  3. 3 · implementace

    apps/majordomus-cli/src/providers.rs

  4. 4 · test a scénáře

    Test: test/cases/93_rust_provider_projections.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 93_rust_provider_projections

Kde se toto tvrzení používá

pokryté odpovědnosti

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