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.

Co adaptér providera umí, je deklarováno, nikdy ne zjišťováno ze souborového systému

Co adaptér providera umí, je deklarováno, nikdy ne zjišťováno ze souborového systému

majordomus://rule/project.provider-support-is-declared@1aktivní providersrelacecontinuitycapabilities

odkazuje na něj

Nic ve vrstvě to nejmenuje. Zpětné odkazy se odvozují, takže prázdný seznam je odpověď, ne opomenutí.

Zdůvodnění

„Spouští Claude Code PreCompact?“ má jednu správnou odpověď a dvě svůdné špatné.

Čtení adresáře hooků poskytovatele odpovídá na jinou otázku — spustil někdo majordomus capture install v tomto checkoutu? — a odpověď vydává za výrok o poskytovateli. Čistému klonu by se řeklo, že poskytovatel nemá žádný životní cyklus; checkoutu, kde někdo ručně napsal shim, že má takový, který nástroj neumí řídit. Obojí je sebejistě špatně, což je způsob selhání, který tento repozitář kouše nejčastěji.

Zapsat seznam do stránky, tabulky nebo konstanty v Rustu je druhý zdroj pravdy, který zastará v den, kdy se adaptér změní. project.providers-are-data už to vyřešilo pro to, čím provider je; toto pravidlo to rozšiřuje na to, co adaptér nástroje pro něj umí, tedy na polovinu, kterou se povrch mimo shell nemá jak jinak dozvědět.

Požadované chování

share/providers.yaml deklaruje pro každého providera lifecycle: — události, které adaptér řídí, ve vlastním slovníku providera — a prompt_capture:. Provider bez lifecycle je takový, pro který nástroj nedodává lifecycle adaptér; to je fakt, ne opomenutí, a hlásí se jako takový.

Každý povrch ho čte odtud. lifecycle.providers v apps/majordomus-cli je schopnost a stránka Continuity v Cockpitu, GET /api/v1/lifecycle/providers a nástroj MCP jsou její projekce. Žádná stránka, dokument ani generátor nenese vlastní seznam a žádný čtenář nezjišťuje cestu hooku, aby rozhodl o odpovědi.

Tabulka adaptérů, kterou řídí shell — MJ_CAPTURE_LIFECYCLE a MJ_CAPTURE_ADAPTERS v lib/capture.sh — drží sloupce, které potřebuje jen shell: cesty shimů, konfigurační soubor, klíče payloadu, proměnnou prostředí pojmenovávající relaci providera. Není druhou odpovědí na tuto otázku; je zapojením za deklarovanou, a obě se musí shodovat.

Chování při selhání

test/cases/170_provider_lifecycle_declared.sh čte obě poloviny a selže, když se neshodují: poskytovatel, jehož shell adaptér řídí událost, kterou YAML nedeklaruje, poskytovatel, který deklaruje životní cyklus, jejž žádný shell adaptér neřídí, nebo zachycení promptů deklarované tam, kde se neadaptuje. Běží v kontrole shell-suite se všemi ostatními případy a bylo ukázáno, že selže proti záměrně odebrané události, nikoli že prochází bez ohledu na vše.

Ověření

bash test/run.sh 170_provider_lifecycle_declared a curl -s $URL/api/v1/lifecycle/providers | jq '[.providers[] | {id, lifecycle, prompt_capture}]' proti checkoutu bez nainstalovaných hooků providera, které musí stále hlásit deklarované události. test/cases/171_session_observability.sh tvrdí přesně to, ve fixture, která nenese žádný adresář hooků providera.

Duplikace je záměrná a dočasná. ADR 0052 určuje směr — jedna kanonická služba domény relací ve spustitelném souboru, shell jako adaptér nad ní — a až lib/capture.sh bude číst share/providers.yaml místo vlastní tabulky, kontrola tohoto pravidla se stane tautologií a lze ji vyřadit. Do té doby je tím, co dělá duplikaci bezpečnou místo tiché.

Odkud to pochází

kanonický soubor
.ai/repo/rules/project/provider-support-is-declared.v1.md
identity
project.provider-support-is-declared@1
dostupné také jako
Zdroj MCP majordomus://rule/project.provider-support-is-declared@1 · majordomus entity show rule/project-provider-support-is-declared-1 · GET /api/v1/entity?uri=majordomus://rule/project.provider-support-is-declared@1
v Cockpitu
/cockpit/objects/rule/project-provider-support-is-declared-1

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

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