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.

O tom, co server MCP servíruje, rozhoduje manifest, deklarované třídy zdrojů a front matter každého souboru, takže objekt přidaný do vrstvy se servíruje bez změny executable

Spustitelný soubor nejmenuje žádný soubor repozitáře kromě dvou konvencí, které vrstva dokumentuje, .ai/manifest.yaml a sources.yaml v sekci znalostí. Manifest říká, které sekce existují, sources.yaml říká, které soubory nesou který druh, tentýž share/allow/<kind>.txt, který používá shellový nástroj, říká, jaké klíče může druh nést, a vložené schema/kinds.yaml spustitelného souboru říká, jak se druh čte. Napište pravidlo do .ai/repo/rules/project/, sledujte ho, restartujte server a je to majordomus://rule/<id>@<version> s vlastní proveniencí. Deklarujte v sources.yaml novou třídu známého druhu a obsluhuje se také.

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

Sekvence přidat, odebrat a rozbít skrz sestavenou binárku je tests/external_extension.rs v crate; shellový případ dokazuje, že vrstva, kterou init zapíše, se servíruje a že pravidlo do ní přidané se objeví.

Co to znamená

Spustitelný soubor nejmenuje žádný soubor repozitáře kromě dvou konvencí, které vrstva dokumentuje, .ai/manifest.yaml a sources.yaml v sekci knowledge. Manifest říká, které sekce existují, sources.yaml říká, které soubory nesou který druh, tentýž share/allow/<kind>.txt, který používá shellový nástroj, říká, jaké klíče druh smí nést, a vložený schema/kinds.yaml spustitelného souboru říká, jak se druh čte. Napište pravidlo do .ai/repo/rules/project/, sledujte ho, restartujte server a je majordomus://rule/<id>@<version> s vlastním původem. Deklarujte novou třídu známého druhu v sources.yaml a bude servírována také.

Princip

src/discovery/mod.rs čte třídy a vyjmenovává každý pathspec přes git ls-files, seřazeně; src/index.rs čte každý soubor ve formátu jeho druhu, validuje jeho klíče proti allow-listu, bere identitu a titul z polí, která schéma jmenuje, a zaznamenává cestu, adresář, třídu a sekci. Nic v kódu nevětví podle cesty, názvu souboru ani jména providera.

Jak to vidět

majordomus init && git add -A && git commit -qm install
apps/majordomus-cli/target/debug/majordomus mcp --inspect | grep -c '^resource    majordomus://rule/'
cat > .ai/repo/rules/project/example.v1.md <<'R'
---
id: project.example
version: 1
kind: rule
title: Example
description: An example.
statement: Do the example thing.
status: active
class: advisory
depends_on: []
tags: []
---
R
git add -A
apps/majordomus-cli/target/debug/majordomus mcp --inspect | grep '^resource    majordomus://rule/project.example@1'

Počet naroste o jedna a nové URI je uvedeno; smažte soubor a zmizí.

Co nepokrývá

Druh, který spustitelný soubor nečte (kind: v sources.yaml bez položky v schema/kinds.yaml), se hlásí u každého souboru té třídy a neservíruje se u žádného: data popisují objekty, nedefinují, jak se čte nový druh. Objevování sleduje kontrakt vrstvy a jde přes git index, takže nesledovaný soubor se neservíruje, pokud o něj není požádáno --discovery filesystem. Hierarchické kontextové soubory se servírují jako dokumenty se zaznamenaným adresářem a nesloučí se, protože repozitář nedefinuje žádnou sémantiku sloučení.

Proč existuje

Tabulka zdrojů zapsaná do kódu by se od vrstvy rozešla s prvním novým pravidlem, což je druhý zdroj pravdy, kterému má 28_no_hardcoded_values.sh zabránit. apps/majordomus-cli/tests/external_extension.rs provede posloupnost přidání, odebrání a porušení přes sestavený binární soubor bez změny v Rustu; test/cases/72_rust_mcp.sh dokládá, že pravidlo přidané do vrstvy, kterou zapisuje init, je servírováno.

Podrobnosti vykresleny z docs/claims/mcp-data-driven.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    O tom, co server MCP servíruje, rozhoduje manifest, deklarované třídy zdrojů a front matter každého souboru, takže objekt přidaný do vrstvy se servíruje bez změny executable

    Vzniklo na Interfaces.

  2. 2 · kanonické tvrzení

    mcp-data-drivendeklarovaný stav: zaručeno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    apps/majordomus-cli/src/index.rs

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

    Test: test/cases/72_rust_mcp.sh

    Provedeno v Rozšiřte, co spustitelný soubor poskytuje, přidáním souboru, nikdy jeho přebuilděním, Řekněte jednou, k čemu vaše práce slouží, a nechte to říkat každý povrch.

  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 72_rust_mcp

Související tvrzení stejná implementace

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