fix(cron): persist manual run ids in history (#76288)

Summary:
- The PR carries manual `cron.run` acknowledgement IDs into finished cron events and `cron.runs` history, upda ...  surfaces, adds regression coverage, refreshes the SDK baseline hash, and records the fix in the changelog.
- Reproducibility: yes. Current main can be reproduced by source inspection: `cron.run` returns a `manual:...` ... r path omits it; the PR adds targeted assertions for the missing correlation and the task-ledger invariant.

ClawSweeper fixups:
- Included follow-up commit: chore(protocol): update generated cron models
- Included follow-up commit: chore(cron): document manual run id protocol surface
- Included follow-up commit: Preserve cron task ledger run IDs

Validation:
- ClawSweeper review passed for head 04ce879858.
- Required merge gates passed before the squash merge.

Prepared head SHA: 04ce879858
Review: https://github.com/openclaw/openclaw/pull/76288#issuecomment-4364868383

Co-authored-by: Paul Frederiksen <paul@paulfrederiksen.com>
This commit is contained in:
Paul Frederiksen
2026-05-02 17:06:32 -07:00
committed by GitHub
parent cf46dc54ff
commit f30dc0aeb4
12 changed files with 63 additions and 5 deletions

View File

@@ -4324,6 +4324,7 @@ public struct CronRunLogEntry: Codable, Sendable {
public let deliveryerror: String?
public let sessionid: String?
public let sessionkey: String?
public let runid: String?
public let runatms: Int?
public let durationms: Int?
public let nextrunatms: Int?
@@ -4344,6 +4345,7 @@ public struct CronRunLogEntry: Codable, Sendable {
deliveryerror: String?,
sessionid: String?,
sessionkey: String?,
runid: String?,
runatms: Int?,
durationms: Int?,
nextrunatms: Int?,
@@ -4363,6 +4365,7 @@ public struct CronRunLogEntry: Codable, Sendable {
self.deliveryerror = deliveryerror
self.sessionid = sessionid
self.sessionkey = sessionkey
self.runid = runid
self.runatms = runatms
self.durationms = durationms
self.nextrunatms = nextrunatms
@@ -4384,6 +4387,7 @@ public struct CronRunLogEntry: Codable, Sendable {
case deliveryerror = "deliveryError"
case sessionid = "sessionId"
case sessionkey = "sessionKey"
case runid = "runId"
case runatms = "runAtMs"
case durationms = "durationMs"
case nextrunatms = "nextRunAtMs"