docs(adr): goal-driven cronjob (disable_on_success)#816
Conversation
|
Reviewed #816. This ADR captures the agreed direction well: Phase 1 is One small clarification I recommend before/while merging: specify the state file location, not just the filename. For consistency with usercron, I would make it No blocking issues from me. Since #816 supersedes #815, #815 can be closed once this ADR is accepted. |
|
This usercron-only simplification is reasonable, but the ADR now conflicts with the existing usercron contract in Blocking inconsistencies:
Once these are aligned, the usercron-only approach can be clean. |
|
Latest #816 is closer: path is now Still not LGTM because the ADR now has internal contradictions:
These are doc-only fixes, but they matter because this ADR is the contract for implementation. |
|
Checked latest head
Since this ADR now says |
|
ADR file is now consistent on latest head One stale PR-body line remains:
Please remove that from the PR body so the summary matches the ADR. After that, LGTM from me. |
OpenAB PR ScreeningThis is auto-generated by the OpenAB project-screening flow for context collection and reviewer handoff.
Screening report## IntentPR #816 proposes an ADR for extending The operator-visible problem: recurring cron prompts keep firing even after the task’s goal is complete. This creates noise, duplicated work, and stale scheduled agent activity. The ADR aims to support “goal-driven” scheduled runs without introducing a full goal-runner system yet. FeatThis is a docs / architecture decision PR. Behavior described by the ADR:
Who It ServesPrimary beneficiaries:
Secondary beneficiary:
Rewritten PromptImplement the ADR for goal-driven usercron jobs by adding Before each scheduled run, if Do not introduce a separate goal-runner system or model-based judging in this phase. Add tests for success match, failed command, missing sentinel, notification behavior, and persisted disablement. Merge PitchThis is worth advancing because it documents a small, practical step toward goal-driven scheduled agents without committing OpenAB to a larger orchestration system too early. Risk profile: moderate for future implementation, low for this ADR. The main reviewer concern will be whether mutating Best-Practice ComparisonRelevant OpenClaw principles:
Relevant Hermes Agent principles:
Not relevant yet:
Those belong to the ADR’s stated Phase 2. Implementation OptionsOption 1: Conservative ADR-only merge Merge the ADR as design documentation, but require a follow-up implementation issue before code changes. Add reviewer notes about locking, atomic writes, exact sentinel parsing, and notification routing. Option 2: Balanced usercron implementation Implement Option 3: Ambitious goal-runner foundation Introduce a goal-runner abstraction behind usercron with structured state, run logs, disable conditions, retry metadata, and future hooks for stuck detection or LLM judging. Expose Comparison Table
RecommendationAdvance the ADR, but steer follow-up toward Option 2: balanced usercron implementation. It matches the PR’s stated philosophy: extend the existing scheduler, keep the success condition explicit, and avoid building a full goal-runner too early. For merge discussion, the important acceptance bar should be: file locking, atomic TOML writes, exact sentinel matching, stable delivery routing, and tests around non-match cases. Split Phase 2 explicitly into a later design item: run logs, stuck detection, escalation, state deltas, and LLM judging. |
Summary
ADR for extending usercron
[[jobs]]withdisable_on_success— enabling goal-driven "escape room" mode.Key Decisions
disable_on_success— command evaluates the goal before sending the regular promptdisable_on_success_matchbefore OpenAB treats the goal as achievedenabled = falsedirectly to$HOME/.openab/cronjob.toml, no separate state file✅ Goal achievedbefore disablingPhase 1 vs Phase 2
Context
Design discussion: https://discord.com/channels/1491295327620169908/1504239931940409587
cc @pahud