pub fn module() -> ModuleDescriptorExpand description
The economics module: four read-only capabilities, each a thin call into
crate::economics, so no surface computes a metric of its own. The summary, the
explanation and the run list are cached per process for five seconds; the claim check is
never cached, because a gate that answered from memory could pass prose edited a moment ago.
use majordomus_cli::capability::builtin::economics::module;
use majordomus_cli::capability::{CachePolicy, Effect};
let m = module();
let ids: Vec<&str> = m.capabilities.iter().map(|e| e.capability.id.as_str()).collect();
assert_eq!(
ids,
["economics.summary", "economics.explain", "economics.runs", "economics.check"]
);
// every capability reads; none of them changes the repository
assert!(m.capabilities.iter().all(|e| e.capability.kind.is_read_only()));
assert!(m.capabilities.iter().all(|e| e.capability.execution.effect == Effect::Read));
assert_eq!(m.capabilities[3].capability.cache, CachePolicy::Disabled);