Expose legacy cron store doctor lint findings#99211
Conversation
|
@clawsweeper review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Codex review: needs maintainer review before merge. Reviewed July 3, 2026, 5:18 PM ET / 21:18 UTC. Summary PR surface: Source +247, Tests +158, Other +1. Total +406 across 8 files. Reproducibility: not applicable. as a bug reproduction; this PR adds a new opt-in doctor lint diagnostic. The PR body provides source CLI real behavior proof for selected lint on isolated config/state, and focused tests cover the selection behavior. Review metrics: 3 noteworthy metrics.
Stored data model 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 detailsBest possible solution: Merge the lint-only, read-only diagnostic after maintainers explicitly accept the opt-in --all and --only behavior, while keeping all cron mutation in the existing doctor --fix path. Do we have a high-confidence way to reproduce the issue? Not applicable as a bug reproduction; this PR adds a new opt-in doctor lint diagnostic. The PR body provides source CLI real behavior proof for selected lint on isolated config/state, and focused tests cover the selection behavior. Is this the best way to solve the issue? Yes for the implementation shape: the read-only lint check uses the existing doctor lint path and leaves repair in the legacy cron doctor --fix contribution. Product acceptance of the new opt-in diagnostic output remains the maintainer decision. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 7d593bb9ae54. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +247, Tests +158, Other +1. Total +406 across 8 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
|
|
@clawsweeper review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Codex review finding: The structured dry-run repair effects for Best fix: either add a real core structured repair path for this check, or keep the cron-store work lint-only and remove the unreachable |
|
Addressed Omar's reachability finding by making this PR lint-only again. What changed:
Validation on
@clawsweeper review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper review final lint-only wording/body synced after Omar fix |
588fbc2 to
56a56af
Compare
|
Refreshed after #98406/main and addressed the remaining type-surface issue before asking for re-review. Current head: Changes since the prior review:
Validation:
Real behavior proof:
@clawsweeper review refreshed lint-only head with real behavior proof |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Maintainer note before marking ready: I accept the opt-in
|
56a56af to
9ca7491
Compare
|
Refreshed to Fixes:
Validation after fixes:
Local Windows @clawsweeper review refreshed after CI fixes |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Merged cleanly.
|
Adds a default-disabled Doctor lint check for legacy cron store state while keeping real repair in the existing doctor --fix path. Verification: - Focused cron/contribution Vitest passed (119 tests). - Changed-file oxfmt passed. - Changed-file oxlint with core tsconfig passed. - pnpm check:architecture passed. - SDK surface report passed. - git diff --check passed. - Source CLI proof on isolated config/state passed for doctor --lint --json --only core/doctor/legacy-cron-store. - Exact-head hosted checks are clean/skipped; only superseded auto-response/proof runs were cancelled. Maintainer notes: - ClawSweeper: proof sufficient, platinum hermit, exact-head reviewed. - No public SDK/plugin/config/CLI contract change; default doctor --lint remains unchanged.
Summary
core/doctor/legacy-cron-storefindings for legacy cron stores, legacy run logs, quarantined rows, SQLite projection backfills, legacy notify fallback, and stale dreaming payload shapedoctor --fixcontribution; this PR is lint-only and does not add a structured repair/dry-run hookContract / compatibility
doctor --lintis unchanged;--only core/doctor/legacy-cron-storeand--allcan select it.Validation on
9ca7491f8cnode scripts/run-vitest.mjs src/commands/doctor/cron/index.test.ts src/flows/doctor-health-contributions.test.ts(119 tests)oxfmt --checkoxlint --tsconfig config/tsconfig/oxlint.core.jsonpnpm check:architecturenode scripts/plugin-sdk-surface-report.mjs --checkgit diff --checkType-check note
check-test-typeson56a56afdc5failed on an untyped test mock; fixed on9ca7491f8cby typingcollectLegacyCronStoreHealthFindingsasPromise<readonly HealthFinding[]>.pnpm check:test-types/pnpm tsgo:core:testtimed out without diagnostics after the fix; hosted CI is the authoritative type-check proof for the refreshed head.Real behavior proof on
56a56afdc5(source behavior unchanged on9ca7491f8c)OPENCLAW_CONFIG_PATHandOPENCLAW_STATE_DIRagainst a temp legacy cron JSON array store:node scripts/run-node.mjs doctor --lint --json --only core/doctor/legacy-cron-storechecksRun: 1,checksSkipped: 44, fourcore/doctor/legacy-cron-storewarning findings for the temp legacy store.<state>/openclaw-state.sqlitewas not created and<state>/identity/device.jsonwas not created.Notes
The earlier structured dry-run preview text was removed after Omar's review because the core check repair hook was not reachable from a supported Doctor CLI path. Real mutation remains in the legacy cron
doctor --fixpath.