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.

Schopnost Rust executable se deklaruje jednou a skládá se do svého modulu, kořen skládá moduly a registr odmítne schopnost mimo jmenný prostor jejího modulu

Přidání spustitelné schopnosti je jeden blok capability! v souboru modulu, do kterého patří, s jejím typovaným vstupem a výstupem a případy měření výkonu vstupu. module() modulu vypisuje jeho schopnosti; compose_modules! v kořeni vypisuje moduly a nic jiného. MCP, HTTP, OpenAPI, Swagger UI, příkazová řádka, cíle měření výkonu, chování cache, vygenerovaná reference a manifest registru z bloku vyplývají; žádný jiný soubor se nemění. Schopnost, jejíž jmenný prostor id není její modul, modul složený dvakrát, neplatné id modulu, politika cache, která nic nedrží, cachovaný příkaz nebo politika měření výkonu odporující druhu zastaví sestavení registru, s uvedeným id a původem.

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

capability!, module! a compose_modules! vytvářejí prosté hodnoty předávané builderu registru; přidání schopnosti do existujícího modulu se dotkne jen souboru onoho modulu a MCP, HTTP, OpenAPI, Swagger UI, CLI, cíle měření výkonu, cache i generovaná reference ho následují. Testy crate v tests/registry.rs drží invarianty, tests/projections.rs propagaci.

Co to znamená

Přidání spustitelné schopnosti je jeden blok capability! v souboru modulu, do něhož patří, s typovaným vstupem a výstupem a případy měření výkonu vstupu. module() modulu vypisuje jeho schopnosti; compose_modules! v kořeni vypisuje moduly a nic jiného. MCP, HTTP, OpenAPI, Swagger UI, příkazový řádek, cíle měření výkonu, chování cache, generovaná reference a manifest registru z bloku vyplývají; žádný jiný soubor se nemění. Schopnost, jejíž jmenný prostor id není její modul, modul složený dvakrát, neplatné id modulu, politika cache, která nic neuchovává, cachovaný příkaz nebo politika měření výkonu odporující druhu zastaví sestavení registru, s uvedeným id a původem.

Princip

apps/majordomus-cli/src/capability/handler.rs drží capability!, který sestaví deskriptor (id, druh, název, popis, schémata z typů, původ, vystavení, stabilitu, tagy, politiku měření výkonu a cache) s jeho handlerem a poskytovatelem případů vstupního typu; capability/module.rs drží module! a compose_modules!, prosté macro_rules!, které sestavují hodnoty; capability/builtin/mod.rs je jediná kořenová kompozice; capability/registry.rs drží moduly (složené, odvozené z namespace nebo jeden na deklarativní druh) a vynucuje invarianty při buildu, než cokoli začne sloužit.

Jak to vidět

apps/majordomus-cli/target/debug/majordomus capabilities validate      # OK   modules … every executable composed in the module its namespace names
apps/majordomus-cli/target/debug/majordomus capabilities describe objects.search --format json | jq '{module, kind, cache, benchmark}'
sed -n '/compose_modules!/p' apps/majordomus-cli/src/capability/builtin/mod.rs

Co nepokrývá

Příkazy shellového nástroje nejsou schopnosti programu v Rustu a mají svůj vlastní registr (share/commands.yaml). Deklarativní objekty skládá repozitář prostřednictvím sources.yaml, ne modul v Rustu; jejich modulem je jejich druh. Nový modul stále potřebuje jedno jméno v compose_modules!: to je jediné ruční složení a je to modul, nikdy schopnost.

Proč existuje

Invariantou operátora: jedna kanonická deklarace, moduly skládají schopnosti, kořen skládá moduly, projekce odvozují vše ostatní. ADR 0004 ji zaznamenává; project.rust-canonical-declaration je pravidlo. apps/majordomus-cli/tests/registry.rs prokazuje invarianty modulů, tests/projections.rs že změna jednoho deskriptoru dosáhne každé projekce, tests/bench.rs že dosáhne cílů benchmarků a test/cases/91_canonical_architecture.sh čte registr, generované soubory a živý spustitelný soubor zpět proti sobě v repozitáři, který napsal init.

Detail vykreslený z docs/claims/capability-modules.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Schopnost Rust executable se deklaruje jednou a skládá se do svého modulu, kořen skládá moduly a registr odmítne schopnost mimo jmenný prostor jejího modulu

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

  2. 2 · kanonické tvrzení

    capability-modulesdeklarovaný 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/capability/module.rs

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

    Test: apps/majordomus-cli/tests/registry.rs

    Provedeno v Rozšiřujte, co program poskytuje, přidáním souboru, nikdy jeho přestavbou.

  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 apps/majordomus-cli/tests/registry.rs

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