ScheduleSpec
data class ScheduleSpec(val id: String, val kind: String, val fingerprint: String, val description: String, val fireAt: Instant?)
A recurring schedule's persisted identity and timing state, as the runtime registers it. The store never sees or evaluates a schedule expression: all schedule math (cron, DSL, misfire policy, payloads) lives in the runtime, and the store only keeps the fields below plus per-row lease state. fingerprint is an opaque string the runtime derives from the full definition; stores compare it for equality and never parse it.