{"record":{"id":"1debd3e79cda2e1d","repo":"zeroclaw-labs/zeroclaw","slug":"invalid-schedule-at-must-be-in-the-future-now","errorCode":null,"errorMessage":"Invalid schedule: 'at' must be in the future (now_utc={}, now_local={}, at_utc={}, at_local={}, delta_seconds={})","messagePattern":"Invalid schedule: 'at' must be in the future \\(now_utc=(.+?), now_local=(.+?), at_utc=(.+?), at_local=(.+?), delta_seconds=(.+?)\\)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-runtime/src/cron/schedule.rs","lineNumber":76,"sourceCode":"                        .with_attrs(::serde_json::json!({\"every_ms\": *every_ms})),\n                    \"cron schedule: every_ms overflowed DateTime arithmetic\"\n                );\n                anyhow::Error::msg(\"every_ms overflowed DateTime\")\n            })\n        }\n    }\n}\n\npub fn validate_schedule(schedule: &Schedule, now: DateTime<Utc>) -> Result<()> {\n    match schedule {\n        Schedule::Cron { expr, .. } => {\n            let _ = normalize_expression(expr)?;\n            let _ = next_run_for_schedule(schedule, now)?;\n            Ok(())\n        }\n        Schedule::At { at } => {\n            if *at <= now {\n                anyhow::bail!(\n                    \"Invalid schedule: 'at' must be in the future \\\n                     (now_utc={}, now_local={}, at_utc={}, at_local={}, delta_seconds={})\",\n                    now.to_rfc3339(),\n                    now.with_timezone(&chrono::Local).to_rfc3339(),\n                    at.to_rfc3339(),\n                    at.with_timezone(&chrono::Local).to_rfc3339(),\n                    (*at - now).num_seconds()\n                );\n            }\n            Ok(())\n        }\n        Schedule::Every { every_ms } => {\n            if *every_ms == 0 {\n                anyhow::bail!(\"Invalid schedule: every_ms must be > 0\");\n            }\n            Ok(())\n        }\n    }","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/cron/schedule.rs#L58-L94","documentation":"Error \"Invalid schedule: 'at' must be in the future (now_utc={}, now_local={}, at_utc={}, at_local={}, delta_seconds={})\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-runtime/src/cron/schedule.rs:76 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Choose an 'at' time in the future; check the printed now/at timestamps and timezone."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}