Co to znamená
Cache se deklaruje na deskriptoru (CachePolicy::Process { max_entries, ttl }) a žije v jediném exekutoru, který používají všechny transporty, takže MCP, HTTP i příkazový řádek ji sdílejí a žádný nemá vlastní. Pro každou schopnost s cache a každý případ, který její vstupní typ poskytuje, je hodnota odpovězená s vypnutou cache, s prázdnou cache i s teplou cache táž; teplá odpověď nespouští žádný handler; chyba se počítá pokaždé; příkaz se nikdy necachuje a registr odmítne deskriptor, který o to žádá; cache je omezena na schopnost a vyřazuje nejstarší; tentýž vstup s klíči v jiném pořadí je tentýž klíč; a klíč nese otisk registru, hash obsahu každého objektu a každého deskriptoru, takže dva stavy repozitáře nikdy nesdílejí položku.
Princip
apps/majordomus-cli/src/capability/executor.rs: CapabilityExecutor::execute vyhledá schopnost, normalizuje vstup (canonical_json), konzultuje cache podle politiky deskriptoru, spustí handler přes registry.dispatch a uloží hodnotu; index.rs a registry.rs počítají otisky pomocí sha-256; perf.rs počítá zásahy, minutí a vyřazení.
Jak to vidět
apps/majordomus-cli/target/debug/majordomus capabilities describe objects.search --format json | jq .cache
apps/majordomus-cli/target/debug/majordomus bench objects.search --transport direct --profile quick # cold and warm rows, the direct one with handler invocationsCo nepokrývá
Nic se neukládá trvale: cache je paměť jednoho procesu a končí s ním. Cachuje se jen to, co měření ospravedlnilo (objects.search, capabilities.list); zbytek odpovídá z neměnného indexu v mikrosekundách a cache tam by byla druhou kopií ničeho. TTL politika podporuje a žádný vestavěný ho dnes nepoužívá.
Proč existuje
Cache, jejíž ekvivalence není prokázána, je lež čekající na vstup. project.rust-hot-path je pravidlo, ADR 0004 rozhodnutí. apps/majordomus-cli/tests/executor.rs projde každou cachovanou schopnost registru se všemi případy; tests/properties.rs totéž nad generovanými vstupy pomocí proptest, včetně zamíchaného pořadí klíčů; test/cases/91_canonical_architecture.sh vidí zásahy v čítačích po opakovaných hledáních přes sestavenou binárku.