RFC 0007: Pluggable scheduler seam in gateway#5
Conversation
|
Codex review: found issues before merge. Reviewed June 14, 2026, 12:44 AM ET / 04:44 UTC. Summary Reproducibility: not applicable. this is a design RFC rather than a bug report. The relevant check is source and lifecycle review, and current main does not already contain the proposed scheduler seam. Review metrics: 3 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Keep this as a draft discussion until maintainers settle the scheduler ownership, fallback, cancel/list, and run-state trust contract; then update visible 0008 metadata and accepted-RFC fields before merge if approved. Do we have a high-confidence way to reproduce the issue? Not applicable; this is a design RFC rather than a bug report. The relevant check is source and lifecycle review, and current main does not already contain the proposed scheduler seam. Is this the best way to solve the issue? Unclear as a final solution; the RFC is a useful discussion path, but merge should wait until maintainers settle the plugin API, compatibility, and security boundary decisions. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning high; reviewed against 3aa7d727383f. Label changesLabel justifications:
Evidence reviewedSecurity concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
a19ebba to
445b1f8
Compare
|
@clawsweeper re-review The previous review at 2026-06-01T02:55Z failed before completion ('Review failed before ClawSweeper could summarize the requested change'). Asking for a fresh attempt. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
ClawSweeper P1 review finding: rfcs/0006-feeds.md already exists on main, so this proposal's id collides. Rename to rfcs/0007-pluggable-scheduler.md and update the in-document rfcs/0007/ asset reference. PR title separately updated via gh pr edit.
|
@clawsweeper re-review Addressed P1: renumbered to P2 (plugin contract / maintainer signoff) is by-design — that's the RFC purpose, not a code issue. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
On the "claimed external scheduler deployment" P1 proof gap: Captured live deployment evidence from both gateways the RFC references. Both hosts are launchd-supervised; openclaw-scheduler runs as a separate service under a separate Observed:
This is the consumer-side artifact the RFC's "existence proof" claim refers to. The RFC's purpose is to give that already-shipping out-of-process scheduler a first-class plugin-SDK seam so its scheduled runs surface in On P1 #1 ("blesses new plugin kind / future migration concern"): that's the explicit RFC purpose. The proposal is intentionally additive — built-in cron stays the default; the plugin kind only engages when an external scheduler plugin registers itself. On P1 #3 ("API-design questions intentionally open"): all four open questions in the RFC are flagged in an "Unresolved questions" section so a maintainer decision can land before any implementation follows. That's the correct shape for an RFC discussion vehicle, not a blocker on the proposal itself. |
|
@clawsweeper re-review The requested redacted live deployment proof was added in #5 (comment). Please re-review against the current PR head and the added proof. |
|
🦞👀 Command router queued. I will update this comment with the next step. Re-review progress:
|
ClawSweeper P2 rank-up move on openclaw#5. Aligns frontmatter with the lifecycle metadata expectation called out in the review; also bumps last_updated to match the change date.
|
Status update (2026-06-09): pushed
status: draft
issue:per the 2026-06-07 review. The maintainer questions on the plugin contract (ownership token, fallback semantics, runtime API shape) are still open by design for an RFC; will respond inline as soon as a maintainer indicates a direction. @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
Heartbeats-in-core and the direct-HTTP migration path were already decided by the doc body; move them out of Unresolved questions so the remaining maintainer ask is just the cancelScheduledJob contract and the listScheduledJobs exposure question.
|
Status update (2026-06-12): pushed Two of the four unresolved questions were already answered by the doc body, so they are now decided text instead of open questions:
What's left for maintainers is exactly two contract questions: (1) may |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
89d32fb to
82c24c6
Compare
0007 is already taken on main (0007-e2e-qa-lab-scorecard-consolidation.md plus the 0007/ sidecar dir) and is contested by another open PR, so this RFC moves to the next free id 0008. Renames the file and updates the sidecar diagram path reference.
The renumber commit moved the file but the in-body sidecar diagram path reference was missed (staged-rename vs unstaged-edit), leaving a stale rfcs/0007/ pointer into another RFC's sidecar area. Point it at this RFC's own rfcs/0008/.
This RFC proposes a narrow plugin-SDK seam that lets an external scheduler plugin own scheduled-job dispatch while the gateway keeps owning heartbeats and run-state ingestion. The built-in cron stays the default; when a
schedulerplugin declaresowns: "scheduled-jobs", the gateway disables its in-process cron at startup and routes job registration through the plugin runtime.Why this RFC
Operators with workflows that need durability, retries, approvals, multi-step chains, or full run history reach for external schedulers (notably
openclaw-scheduler, a SQLite-backed sibling service). Today those tools can only talk to the gateway through the public HTTP surface and cannot register scheduled work that the gateway considers first-class. The seam proposed here would let the same external runtime become the canonical scheduler so its runs surface ingateway status, hooks, and transcript mirroring.Scope
registerScheduledJob,cancelScheduledJob,listScheduledJobs.owns: "scheduled-jobs"onkind: schedulermanifests.onStart,onComplete,onError.Existence proof
The consumer side is already running.
openclaw-schedulerhas been deployed on two gateways (mac-mini.lanandrh-bot.lan) for several weeks, talking to OpenClaw only through the public HTTP surface. The skill is listed on ClawHub asdurable-scheduler@1.0.0. What's missing is the seam.If the shape proposed here is accepted, I'll carry the reference implementation as a follow-up PR against
openclaw/openclaw. Drafting it now without an accepted seam shape would mean rewriting it against whatever the final contract looks like, which is why I'm leading with the RFC.Notes
rfcs/0007/in a follow-up revision once the seam shape is settled.cancelScheduledJobmay be optional, and whether docs/tools consumelistScheduledJobsdirectly or stay behindcron.list/cron.status) are explicit requests for maintainer input; the heartbeat-ownership and direct-HTTP-migration questions are now folded into decided text.