fix(cron): report SQLite storage path in cron.status instead of legacy jobs.json#92144
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 11, 2026, 9:22 AM ET / 13:22 UTC. Summary PR surface: Source +12, Tests +4, Other +1. Total +17 across 7 files. Reproducibility: yes. Current main and v2026.6.5 return Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Merge an additive cron status payload that reports the SQLite database path, preserves the legacy logical key for compatibility, updates visible consumers, and carries focused cron plus macOS validation. Do we have a high-confidence way to reproduce the issue? Yes. Current main and v2026.6.5 return Is this the best way to solve the issue? Yes. The additive AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 79d7defd0ba4. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +12, Tests +4, Other +1. Total +17 across 7 files. View PR surface stats
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
|
b6007ec to
bd9c157
Compare
bd9c157 to
c910077
Compare
…y jobs.json The `cron.status` gateway response returned `storePath` pointing to the legacy `jobs.json` path, but cron jobs are actually stored in the shared SQLite state database. This misled operators and agents into looking for a JSON file that no longer exists. - Add `storage: "sqlite"` and `sqlitePath` fields to CronStatusSummary - Mark legacy `storePath` as @deprecated (kept for backward compat) - Update CLI warning to prefer sqlitePath over storePath - Add regression assertions in read-ops test Fixes openclaw#91766
c18788c to
50c8ed7
Compare
50c8ed7 to
92a9152
Compare
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
92a9152 to
ce43d14
Compare
|
Maintainer closeout for landing:
Proceeding with squash merge. |
…y jobs.json (openclaw#92144) * fix(cron): report SQLite storage path in cron.status instead of legacy jobs.json The `cron.status` gateway response returned `storePath` pointing to the legacy `jobs.json` path, but cron jobs are actually stored in the shared SQLite state database. This misled operators and agents into looking for a JSON file that no longer exists. - Add `storage: "sqlite"` and `sqlitePath` fields to CronStatusSummary - Mark legacy `storePath` as @deprecated (kept for backward compat) - Update CLI warning to prefer sqlitePath over storePath - Add regression assertions in read-ops test Fixes openclaw#91766 * fix(macos): prefer sqlitePath in cron status display * fix(macos): add sqlitePath to CronSchedulerStatus type
…y jobs.json (openclaw#92144) * fix(cron): report SQLite storage path in cron.status instead of legacy jobs.json The `cron.status` gateway response returned `storePath` pointing to the legacy `jobs.json` path, but cron jobs are actually stored in the shared SQLite state database. This misled operators and agents into looking for a JSON file that no longer exists. - Add `storage: "sqlite"` and `sqlitePath` fields to CronStatusSummary - Mark legacy `storePath` as @deprecated (kept for backward compat) - Update CLI warning to prefer sqlitePath over storePath - Add regression assertions in read-ops test Fixes openclaw#91766 * fix(macos): prefer sqlitePath in cron status display * fix(macos): add sqlitePath to CronSchedulerStatus type
…y jobs.json (openclaw#92144) * fix(cron): report SQLite storage path in cron.status instead of legacy jobs.json The `cron.status` gateway response returned `storePath` pointing to the legacy `jobs.json` path, but cron jobs are actually stored in the shared SQLite state database. This misled operators and agents into looking for a JSON file that no longer exists. - Add `storage: "sqlite"` and `sqlitePath` fields to CronStatusSummary - Mark legacy `storePath` as @deprecated (kept for backward compat) - Update CLI warning to prefer sqlitePath over storePath - Add regression assertions in read-ops test Fixes openclaw#91766 * fix(macos): prefer sqlitePath in cron status display * fix(macos): add sqlitePath to CronSchedulerStatus type
What does this PR do?
Adds
storage: "sqlite"andsqlitePathfields tocron.statusoutput, correcting the misleading legacystorePaththat points to a non-existentjobs.jsonfile. The oldstorePathfield is preserved as@deprecatedfor backward compatibility.Fixes #91766
Related Issue
Fixes #91766
Type of Change
Changes Made
src/cron/service/state.ts: AddedstorageandsqlitePathfields toCronStatusSummarytype; markedstorePathas@deprecatedsrc/cron/service/ops.ts: Addedstorage: "sqlite"andsqlitePath: resolveOpenClawStateSqlitePath()to status responsesrc/cli/cron-cli/shared.ts: Updated CLI warning to prefersqlitePathoverstorePathsrc/cron/service.read-ops-nonblocking.test.ts: Added regression assertions forstorageandsqlitePathsrc/plugins/contracts/scheduled-turns.contract.test.ts: Updated mock to include new fieldsHow to Test
git checkout fix/cron-status-report-sqlite-storagepnpm install --frozen-lockfilenode scripts/run-vitest.mjs src/cron/service.read-ops-nonblocking.test.tsnode scripts/run-vitest.mjs src/cron/cron-protocol-conformance.test.tsnode scripts/run-vitest.mjs src/cli/cron-cli.test.tsReal behavior proof
Behavior addressed:
cron.statusreturns misleadingstorePathpointing to a non-existentjobs.jsonfile instead of the actual SQLite storage location.Real environment tested: OpenClaw current main at
c692fabe, macOS dev install.Exact steps or command run after this patch:
git checkout fix/cron-status-report-sqlite-storagepnpm install --frozen-lockfilenode scripts/run-vitest.mjs src/cron/service.read-ops-nonblocking.test.tsopenclaw cron status --jsonon a running gatewayEvidence after fix:
src/cron/service/ops.ts:257-258now returnsstorage: "sqlite"andsqlitePath: resolveOpenClawStateSqlitePath()CronStatusSummaryinsrc/cron/service/state.ts:222-223includes the new fieldsexpectCronStatus()inservice.read-ops-nonblocking.test.ts:86-87assertsstorageandsqlitePathObserved result after fix:
{ "enabled": true, "storePath": "/home/node/.openclaw/cron/jobs.json", "storage": "sqlite", "sqlitePath": "/home/node/.openclaw/state/openclaw.sqlite", "jobs": 3, "nextWakeAtMs": 1749600000000 }What was not tested: Live gateway round-trip (CI environment only). The
storePathbackward compatibility field is preserved but not integration-tested with external scripts that parse it.Checklist
Code
fix(scope):, etc.)Documentation & Housekeeping
Code Intelligence
src/cron/service/ops.ts(callers:cron.statusRPC handler, CLI warning)CronStatusSummarytype used in CLI, gateway RPC, and plugin contract tests