pub struct RecoverOrphansInput {
pub older_than_seconds: u64,
pub check: bool,
}Expand description
The input of recover.orphans: how old a stray must be, and whether to act.
use majordomus_cli::capability::builtin::recover::RecoverOrphansInput;
// The wire form the shell tool, an MCP client or an HTTP POST sends.
let act: RecoverOrphansInput =
serde_json::from_str(r#"{"older_than_seconds":43200,"check":false}"#).unwrap();
assert_eq!(act.older_than_seconds, 43_200);
assert!(!act.check);
// `check` defaults to true, and that direction is deliberate: this capability deletes
// files, and a caller that forgets the field gets a plan rather than a sweep.
let forgot: RecoverOrphansInput =
serde_json::from_str(r#"{"older_than_seconds":43200}"#).unwrap();
assert!(forgot.check, "the safe value is the default one");
// The threshold has no default at all. `session.stranded_after` is a policy value, and
// a reader that carried its own copy would be a second place the number lives.
assert!(serde_json::from_str::<RecoverOrphansInput>(r#"{"check":true}"#).is_err());
// Unknown fields are refused rather than ignored: a caller that misspells `check` is
// told so instead of having a sweep silently run.
assert!(serde_json::from_str::<RecoverOrphansInput>(
r#"{"older_than_seconds":1,"chek":true}"#).is_err());Fields§
§older_than_seconds: u64How long a stray file must have been untouched before it is a candidate at all, in
seconds. Required, and refused at zero: the shell tool resolves it from
session.stranded_after with mj_pol_req, which fails closed, and nothing here
invents one.
check: boolClassify and report, and write nothing. The default, because the alternative deletes files.
Trait Implementations§
Source§impl BenchmarkCases for RecoverOrphansInput
The benchmark cases of the capability that sweeps.
impl BenchmarkCases for RecoverOrphansInput
The benchmark cases of the capability that sweeps.
Every case is a check, and that is deliberate rather than a gap. A case is executed —
by majordomus bench against this repository, and by the HTTP and MCP suites against a
fixture — so a case that swept would delete this repository’s stray files every time the
suite ran, and a measurement whose cost is a changed store is not a measurement. The
check path is also the honest thing to time: it walks every store, stats every candidate
and reads every publish temp, which is everything the sweep does except the unlink at
the end.
Two cases rather than one because case 92 refuses a declared parameter that no case ever
sets, and because the two thresholds measure different work: the generous one classifies
every stray, the tight one classifies none of them as Live and so reads every file.
Source§fn benchmark_cases(_: &CaseContext<'_>) -> Vec<NamedCase<Self>>
fn benchmark_cases(_: &CaseContext<'_>) -> Vec<NamedCase<Self>>
Source§fn benchmark_cases_json(ctx: &CaseContext<'_>) -> Vec<NamedCase<Value>>
fn benchmark_cases_json(ctx: &CaseContext<'_>) -> Vec<NamedCase<Value>>
Source§impl Clone for RecoverOrphansInput
impl Clone for RecoverOrphansInput
Source§fn clone(&self) -> RecoverOrphansInput
fn clone(&self) -> RecoverOrphansInput
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RecoverOrphansInput
impl Debug for RecoverOrphansInput
Source§impl<'de> Deserialize<'de> for RecoverOrphansInput
impl<'de> Deserialize<'de> for RecoverOrphansInput
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for RecoverOrphansInput
impl JsonSchema for RecoverOrphansInput
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more