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.

Jak se čte každý deklarativní druh a jaké klíče smí nést, jsou data čtená za běhu a repozitář přidá druh s jeho JSON Schema bez změny kódu

Spustitelný soubor v Rustu nekompiluje nic o druzích ani klíčích. Při každém startu najde sdílený adresář distribuce nástroje a načte kinds.yaml (pro každý druh: formát, pravidlo front-matteru, pole identity, názvu a popisu, pole verze a její podporované hodnoty, schéma, které musí splňovat) a schemas/<name>.schema.json, jedno JSON Schema na kontrakt, validované validátorem JSON Schema. Repozitář přidává druhy v .ai/repo/knowledge/kinds.yaml a schémata v .ai/repo/knowledge/schemas/, deklaruje pro ně třídu v sources.yaml a objekty se začnou poskytovat; druh nebo schéma, které distribuce již deklaruje, nelze předefinovat.

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

share/kinds.yaml a share/schemas/*.schema.json patří distribuci; .ai/repo/knowledge/kinds.yaml a schemas/ patří repozitáři; název deklarovaný oběma je chyba jmenující oba soubory. Allow-listy shellového nástroje se generují z týchž schémat.

Co to znamená

Spustitelný soubor v Rustu nekompiluje nic o druzích ani klíčích. Při každém startu najde sdílený adresář distribuce nástroje a přečte kinds.yaml (pro každý druh: formát, pravidlo front-matteru, identitu, pole titulku a popisu, pole verze a jeho podporované hodnoty, schéma, které musí splnit) a schemas/<name>.schema.json, jedno JSON Schema na kontrakt, validované validátorem JSON Schema. Repozitář přidává druhy pod .ai/repo/knowledge/kinds.yaml a schémata pod .ai/repo/knowledge/schemas/, deklaruje pro ně třídu v sources.yaml a objekty jsou poskytovány; druh nebo schéma, které distribuce už deklaruje, nelze předefinovat.

Princip

share.rs najde adresář (--share, MAJORDOMUS_SHARE, share/ repozitáře, instalace spustitelného souboru); metadata/mod.rs parsuje soubory druhů v pořadí, odmítne druh deklarovaný dvakrát se jmenováním obou souborů, zkompiluje každé schéma a index.rs validuje metadata každého souboru proti schématu jeho druhu dřív, než se stane objektem: klíč, který schéma nepovoluje, je unknown_key, jakékoli jiné porušené omezení je schema_violation. Seznamy povolených shellového nástroje pod share/allow/ se generují ze stejných schémat.

Jak to vidět

mkdir -p .ai/repo/knowledge/schemas .ai/repo/notes
printf 'schema: majordomus-kinds/v1\nkinds:\n  note:\n    format: markdown\n    front_matter: required\n    schema: note\n    identity: [id]\n    title: title\n' > .ai/repo/knowledge/kinds.yaml
printf '{ "type": "object", "additionalProperties": false, "required": ["id", "title"], "properties": { "id": { "type": "string" }, "title": { "type": "string" } } }\n' > .ai/repo/knowledge/schemas/note.schema.json
# add to sources.yaml:  - id: note / kind: note / discovery: vcs / pathspec: ':(glob).ai/repo/notes/*.md' / required: false
printf -- '---\nid: first\ntitle: The first note\n---\n' > .ai/repo/notes/first.md
git add -A
apps/majordomus-cli/target/debug/majordomus capabilities describe note.first

Co nepokrývá

Druh, který potřebuje formát, jejž čtečka nemá (něco jiného než Markdown s front matter, YAML, kolekce YAML nebo prostý text), nebo pravidlo identity jiné než pojmenovaná pole či cesta, je změna v index.rs; data popisují objekty, nedefinují, jak se formát čte. Shellový nástroj čte své seznamy povolených hodnot, ne schémata, takže druh definovaný repozitářem vidí jen spustitelný soubor v Rustu.

Proč existuje

Požadavek provozovatele, aby bylo rozšiřování za běhu řízené daty, s typovaným a standardním kontraktem místo seznamů regulárních výrazů. apps/majordomus-cli/tests/external_extension.rs přidá do testovacího repozitáře druh se schématem, přečte objekt zpět, uvidí vynucení schématu na chybném objektu a uvidí odmítnutí předefinování; test/cases/76_capabilities_projections.sh dokazuje, že druhy distribuce obsluhují vrstvu, kterou init zapisuje se stavem ok.

Detail vykreslený z docs/claims/schema-driven-kinds.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Jak se čte každý deklarativní druh a jaké klíče smí nést, jsou data čtená za běhu a repozitář přidá druh s jeho JSON Schema bez změny kódu

    Žádná funkce ani odpovědnost v README ji nepojmenovává; tato stránka je místo, kde je uvedena.

  2. 2 · kanonické tvrzení

    schema-driven-kindsdeklarovaný 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/metadata/mod.rs

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

    Test: test/cases/76_capabilities_projections.sh

    Provedeno v Řekněte jednou, k čemu je vaše práce, a ať to říká 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 76_capabilities_projections

Kde se toto tvrzení používá

Okamžiky, na které to odpovídá

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