pub fn parse_run_annotations(
annotations: Option<&BTreeMap<String, String>>,
) -> Result<Option<(DateTime<Utc>, ManualRunMode)>, String>Expand description
Parse the run-requested/run-mode annotations into a manual-run request.
Ok(None) = no request; Err = the annotations are present but malformed
(the messages say how to fix). Shared by the admission webhook and the
controller so validation cannot fork (SKILL “one validator, two callers”).
The timestamp half is crate::common::parse_run_requested_at — the one
parser every “run it now” surface shares (both replication kinds call it
directly); only the run-mode companion is maintenance-specific.