feat: durable bounded task waits with safe automatic rechecks #105
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/durable-task-waits"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Self-reported waiting retained no executable next step or wakeup schedule. External dependency resolution therefore did not restart the authorized task; operator had to ask again.
Implementation
Explicit continuation.wait {reason,retryAfterMs,deadline} + waiting/next registers durable timed recheck, 60s–24h interval, max7day absolute deadline. Persist original scope/next/condition/due/deadline. Scheduler claims one idle recheck via ordinary durable inbox acceptance barrier. Timer means verify condition, never assume it fulfilled or replay effects. Inherited deadline cannot extend, existing20-followup limit applies. Stop/pause/new queued work/externally managed sessions/API/nightly/persistence unavailable suppress wakeups. Expired/exhausted waits become blocked with visible notice. Registered waits excluded from semantic immediate continuation override. Plain waiting tool response explicitly says no wakeup. Own plugin adapter, immutable pin, no generated edits.
Validation
Final581/581 full tests, typecheck/build/diffcheck PASS. Five new tests cover serialized restart, original mandate, same due-time concurrent ticks, persisted-before-execution, no duplicate on next tick, pause/stop/queued work/no persistence, deadline/depth visible escalation, failed disk checkpoint held/retried exactly once, working-turn validation/persisted wait and completion-assessor nonoverride. Existing recovery/completion suites included.
Review / limitations
Author inspected changes, persistent review status blockers0, no independent review round/reset, originals preserved. Timer fallback, not release webhook integration; checks run only when idle and ticked. Need explicit re-registration if condition remains pending, within same inherited deadline. No infinite loop. No formal natural-language authority proof. No previously waiting task silently migrated. Merge/build is not deployment; verify release/image/own GitOps and installed revision separately.