Skip to content

fix(cron): preserve enabled-with-defaults failure alert through store roundtrip (fixes #96589) (AI-assisted)#96615

Merged
clawsweeper[bot] merged 1 commit into
mainfrom
clawsweeper/automerge-openclaw-openclaw-96601
Jun 25, 2026
Merged

fix(cron): preserve enabled-with-defaults failure alert through store roundtrip (fixes #96589) (AI-assisted)#96615
clawsweeper[bot] merged 1 commit into
mainfrom
clawsweeper/automerge-openclaw-openclaw-96601

Conversation

@clawsweeper

@clawsweeper clawsweeper Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Makes #96601 merge-ready for the ClawSweeper automerge loop.
The edit pass should inspect the live PR diff, review comments, and failing checks; rebase if needed; keep the contributor branch credited; and stop only when validation is green or an external blocker is proven.
Known failing checks:

Source

Replacement for #96601 because the source branch could not be updated.

Original contributor: @liuhao1024.

… roundtrip (fixes #96589) (AI-assisted)

Co-authored-by: liuhao1024 <[email protected]>
@clawsweeper clawsweeper Bot added clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper Tracked by ClawSweeper automation labels Jun 25, 2026
@clawsweeper

clawsweeper Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

Codex review: passed. Reviewed June 24, 2026, 9:14 PM ET / 01:14 UTC.

Summary
The PR preserves failure_alert_disabled === 0 as the enabled-with-defaults failure-alert state and adds focused codec roundtrip tests.

PR surface: Source +2, Tests +54. Total +56 across 2 files.

Reproducibility: yes. At source level, current main encodes failureAlert: {} with failure_alert_disabled = 0, then decodes it as undefined when all explicit alert option columns are null.

Review metrics: none identified.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #96589
Summary: This PR is the replacement candidate fix for the defaults-only cron failure-alert reload bug tracked by the canonical issue.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🐚 platinum hermit
Patch quality: 🦞 diamond lobster
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Risk before merge

  • [P1] No full gateway restart proof was run for this replacement PR; confidence comes from the exact SQLite codec/reload source path, focused tests, and copied after-fix terminal proof from the source PR.

Maintainer options:

  1. Decide the mitigation before merge
    Land the narrow codec/test fix through the automerge and CI gates, then close cron: failure alerts enabled with defaults (--failure-alert) silently stop firing after gateway restart #96589 as fixed.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P2] No repair lane is needed; the PR already implements the narrow fix and should be handled by exact-head review, CI, and automerge gates.

Security
Cleared: The diff only changes cron TypeScript codec logic and adds a Vitest test file; no security or supply-chain concern was found.

Review details

Best possible solution:

Land the narrow codec/test fix through the automerge and CI gates, then close #96589 as fixed.

Do we have a high-confidence way to reproduce the issue?

Yes. At source level, current main encodes failureAlert: {} with failure_alert_disabled = 0, then decodes it as undefined when all explicit alert option columns are null.

Is this the best way to solve the issue?

Yes. The writer already uses failure_alert_disabled === 0 as the enabled sentinel, so preserving that sentinel in the decoder is the narrowest maintainable fix without adding runtime fallback logic or config surface.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 8a5cb85c31e5.

Label changes

Label changes:

  • add P1: The PR fixes a user-enabled cron alert path that can silently stop notifying after gateway restart, breaking an operator-facing notification workflow.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The source PR body includes after-fix terminal output showing the codec roundtrip now returns {} for enabled-with-defaults, and this replacement PR carries the same fix.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🦞 diamond lobster.
  • add status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (terminal): The source PR body includes after-fix terminal output showing the codec roundtrip now returns {} for enabled-with-defaults, and this replacement PR carries the same fix.

Label justifications:

  • P1: The PR fixes a user-enabled cron alert path that can silently stop notifying after gateway restart, breaking an operator-facing notification workflow.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🦞 diamond lobster.
  • status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (terminal): The source PR body includes after-fix terminal output showing the codec roundtrip now returns {} for enabled-with-defaults, and this replacement PR carries the same fix.
  • proof: sufficient: Contributor real behavior proof is sufficient. The source PR body includes after-fix terminal output showing the codec roundtrip now returns {} for enabled-with-defaults, and this replacement PR carries the same fix.
Evidence reviewed

PR surface:

Source +2, Tests +54. Total +56 across 2 files.

View PR surface stats
Area Files Added Removed Net
Source 1 3 1 +2
Tests 1 54 0 +54
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 2 57 1 +56

What I checked:

Likely related people:

  • Shakker: Current blame for failure-alert-codec.ts, row-codec.ts, and failure-alerts.ts points to commit c81fec0, which introduced the split cron store codec path in this checkout. (role: current codec line author; confidence: high; commits: c81fec0370c4; files: src/cron/store/failure-alert-codec.ts, src/cron/store/row-codec.ts, src/cron/service/failure-alerts.ts)
  • 0xbrak: Authored the original configurable cron failure-alert feature in merged PR 24789, including per-job failureAlert, CLI flags, and service tests. (role: introduced behavior; confidence: medium; commits: e6fbcccae808, 4637b90c070f; files: src/cli/cron-cli/register.cron-edit.ts, src/cron/service.failure-alert.test.ts, src/cron/types.ts)
  • Takhoffman: Merged PR 24789 and authored follow-up failure-alert semantics commits in that branch; also requested automerge on the source PR that this PR replaces. (role: feature merger and adjacent contributor; confidence: medium; commits: f99ba28d4b81, 4637b90c070f; files: src/cli/cron-cli/register.cron-edit.ts, src/cron/service.failure-alert.test.ts, src/cron/types.ts)
  • kesor: Authored merged PR 31059, which expanded cron failure-alert and failure-destination behavior around the same alert contract. (role: recent adjacent contributor; confidence: medium; commits: b03645b480e6, f538c16eb9a0; files: src/cron/service.failure-alert.test.ts, src/cron/service/jobs.ts, src/cron/types.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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 keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. P1 High-priority user-facing bug, regression, or broken workflow. labels Jun 25, 2026
@clawsweeper
clawsweeper Bot merged commit a21144d into main Jun 25, 2026
146 of 158 checks passed
@clawsweeper

clawsweeper Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

🦞✅
ClawSweeper merged this PR after the passing review.

Source: clawsweeper[bot]
Feedback: structured ClawSweeper verdict: pass (sha=bd9b2a179853641432ad284b87658b77437c216a)
Merge status: merged by ClawSweeper automerge
Merged at: 2026-06-25T01:17:31Z
Merge commit: a21144d8a606

What merged:

  • The PR preserves failure_alert_disabled === 0 as the enabled-with-defaults failure-alert state and adds focused codec roundtrip tests.
  • PR surface: Source +2, Tests +54. Total +56 across 2 files.
  • Reproducibility: yes. At source level, current main encodes failureAlert: {} with failure_alert_disabled = 0, then decodes it as undefined when all explicit alert option columns are null.

Automerge notes:

  • No ClawSweeper repair was needed after automerge opt-in.

The automerge loop is complete.

Automerge progress:

  • 2026-06-25 01:15:09 UTC review passed bd9b2a179853 (structured ClawSweeper verdict: pass (sha=bd9b2a179853641432ad284b87658b77437c2...)
  • 2026-06-25 01:17:34 UTC merged bd9b2a179853 (merged by ClawSweeper automerge)

@clawsweeper
clawsweeper Bot deleted the clawsweeper/automerge-openclaw-openclaw-96601 branch June 25, 2026 01:17
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 25, 2026
… roundtrip (fixes openclaw#96589) (AI-assisted) (openclaw#96615)

Summary:
- The PR preserves `failure_alert_disabled === 0` as the enabled-with-defaults failure-alert state and adds focused codec roundtrip tests.
- PR surface: Source +2, Tests +54. Total +56 across 2 files.
- Reproducibility: yes. At source level, current main encodes `failureAlert: {}` with `failure_alert_disabled = 0`, then decodes it as `undefined` when all explicit alert option columns are null.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: bd9b2a1
Review: openclaw#96615 (comment)

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: liuhao1024 <[email protected]>
Approved-by: takhoffman
QiuYuang pushed a commit to QiuYuang/openclaw that referenced this pull request Jul 1, 2026
… roundtrip (fixes openclaw#96589) (AI-assisted) (openclaw#96615)

Summary:
- The PR preserves `failure_alert_disabled === 0` as the enabled-with-defaults failure-alert state and adds focused codec roundtrip tests.
- PR surface: Source +2, Tests +54. Total +56 across 2 files.
- Reproducibility: yes. At source level, current main encodes `failureAlert: {}` with `failure_alert_disabled = 0`, then decodes it as `undefined` when all explicit alert option columns are null.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: bd9b2a1
Review: openclaw#96615 (comment)

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: liuhao1024 <[email protected]>
Approved-by: takhoffman
wheakerd pushed a commit to wheakerd/clawdbot that referenced this pull request Jul 15, 2026
… roundtrip (fixes openclaw#96589) (AI-assisted) (openclaw#96615)

Summary:
- The PR preserves `failure_alert_disabled === 0` as the enabled-with-defaults failure-alert state and adds focused codec roundtrip tests.
- PR surface: Source +2, Tests +54. Total +56 across 2 files.
- Reproducibility: yes. At source level, current main encodes `failureAlert: {}` with `failure_alert_disabled = 0`, then decodes it as `undefined` when all explicit alert option columns are null.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: bd9b2a1
Review: openclaw#96615 (comment)

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: liuhao1024 <[email protected]>
Approved-by: takhoffman
(cherry picked from commit a21144d)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper Tracked by ClawSweeper automation P1 High-priority user-facing bug, regression, or broken workflow. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: S status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants