Repository navigation
automations: a finished reminder moved later wakes again; a late save is refused - #1837
Merged
Merged
Conversation
… is refused Moving a FINISHED one-time reminder later with `e` on /automations could leave the row finished. Two things combined: - CommandLine wrote a one-time `at` to the minute, so an `in 2m` reminder (seconds precision) came back earlier in the box, and "the next minute" could be seconds away. - Store.Update saved a new one-time moment that had already passed while the card was up as the next run; the clock took it at once and the reminder was finished again a beat after the save. Fixes: - The edit line keeps a moment's seconds (and fraction); parseMoment reads them. - Store.Update refuses a changed one-time moment that is not after now. - An edit is refused for a past moment only when it moves the moment, so a finished reminder can be renamed. - automation.NextAfterChange is the one rule both doors' cards use for the next run, so the typed edit no longer promises a run to a paused automation or a fresh slot to an unchanged rhythm. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A typed edit of a paused automation says "still paused — resume starts it again" instead of a next slot it does not run at. - The edit line writes a moment in a fall-back's repeated hour with its offset, so it reads back as the same instant. - A moment that passed in the current minute is refused to the second. - The Store.Update comment names errPassed, and that a zone-only change to a one-time schedule is refused too. - DESIGN.md narrowed: only a change is refused at save time; an add answered late still runs once. - Manual: a section on a change refused at save time and renaming a finished reminder, the refusal list, and three retrieval probes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes moving a finished one-time reminder later with
eon/automations, which could leave the rowfinished.What changed
atto the minute, so anin 2mreminder came back seconds earlier and "the next minute" could be seconds away.Store.Updatethen saved a new moment that had passed while the card was up; the clock said it at once and the row was finished again.Store.Updaterefuses a changed one-time moment that is not after now (… has already passed, to the second within the current minute).Store.Createis unchanged: an add answered late still runs once.at 2026-10-14T20:33:13), and writes a moment in a fall-back's repeated hour as RFC 3339 with its offset.automation.NextAfterChangeis the one next-run rule for both cards (typed edit and the conversation'schange).still paused — resume starts it again, not a next run.automations.mdgains a section on a change refused at save time and renaming a finished reminder, plus the refusal list; three retrieval probes. DESIGN.md and a change entry updated.How it was checked
gofmt -l internal/ cmd/printed nothing;go veton automation, tui3, session and manual was clean.go test -race ./internal/automation/→ ok.go test ./internal/tui3/ -run 'Automation|Typed|Edit'→ ok;-run Manual→ ok.go test ./internal/session/ -run 'Automation|Manual'→ ok.go test ./internal/manual/→ ok, with the three new probes reachingautomations.make changelog-check→ all entries well formed.in 2m, said,e, next minute, Save 5 seconds late) left the reminder due at once.next Mon 19 Oct at 09:00.saved weekly update renamed · next Mon 19 Oct at 09:00.14:30 has already passedat 14:30:05.make pr-readyor the full tui3/session suites. The PR's CI runs them.Checklist
docs/changes/unreleased/1837-edit-finished-reminder.md.internal/manual/chat/automations.md, with probes ininternal/manual/chat_test.go..github/known-red.txt.git add -Ain a clean worktree;git diff --stat origin/dev...HEADlists only the 11 files of this change.🤖 Generated with Claude Code