pub struct PlanTransitionResult {
pub issue: String,
pub transition: Transition,
pub from: String,
pub to: String,
pub field: String,
pub at: String,
pub event: String,
pub next_ready: Option<String>,
}Expand description
What one transition did.
from and to are both derived statuses, read before and after the write. They are
reported rather than assumed because the move does not determine the status on its own:
done on a record whose evidence is incomplete leaves it in VERIFY, and the caller is
told that rather than told it succeeded.
use majordomus_cli::capability::builtin::plan::PlanTransitionResult;
// What a `done` looks like when the record's required evidence is not all present: the
// call succeeded, the field was written, and the issue is still in VERIFY. A caller that
// read only the absence of an error would report this as finished; a caller that reads
// `to` knows better, which is why the field is here.
let held: PlanTransitionResult = serde_json::from_str(r#"{
"issue":"I0001","transition":"done","from":"VERIFY","to":"VERIFY",
"field":"completed_at","at":"2026-09-11T12:00:00Z","event":"plan_done"
}"#).unwrap();
assert_eq!(held.to, "VERIFY", "the status is derived from the record, not from the move");
// `next_ready` is absent when the plan has none left to hand out, which is ordinary
// rather than an error, so it is omitted rather than spelled as an empty string.
assert!(held.next_ready.is_none());Fields§
§issue: StringThe issue that moved.
transition: TransitionThe move that was performed.
from: StringThe status the issue was in before.
to: StringThe status it is in now, derived from the record as written.
field: StringThe field that was stamped.
at: StringThe timestamp written into it, and into updated_at.
event: StringThe ledger event appended.
next_ready: Option<String>The issue a worker should take next, derived after the move. Absent when the plan
has none — which after a start is the ordinary case, because the issue just taken
is no longer READY.
Trait Implementations§
Source§impl Debug for PlanTransitionResult
impl Debug for PlanTransitionResult
Source§impl<'de> Deserialize<'de> for PlanTransitionResult
impl<'de> Deserialize<'de> for PlanTransitionResult
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl JsonSchema for PlanTransitionResult
impl JsonSchema for PlanTransitionResult
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
Whether JSON Schemas generated for this type should be included directly in parent schemas,
rather than being re-used where possible using the
$ref keyword. Read moreAuto Trait Implementations§
impl Freeze for PlanTransitionResult
impl RefUnwindSafe for PlanTransitionResult
impl Send for PlanTransitionResult
impl Sync for PlanTransitionResult
impl Unpin for PlanTransitionResult
impl UnsafeUnpin for PlanTransitionResult
impl UnwindSafe for PlanTransitionResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more