mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
Collapse `Reschedule<T>` from `(task, previous, signal) => ...` to `(task) => PromiseLike<boolean>`. One `delayedReschedule` instance is shared across the video + audio runners, so per-recurrence state can't live in its closure — the task is the only per-recurrence carrier, so both dropped params move onto it: - `task.signal` exposes the task's composed signal. RecurringRunner drops its separate `#abort` AbortController: the task is now the sole cancellation channel and loop ownership is task-identity, not an AbortController token. - `task.previous` is carried by `clone()` as lineage (`#previous = this.#value ?? this.#previous`), reproducing the last-*successful* value semantics (an errored cycle inherits the prior good value) with no bookkeeping in the runner — `#loop` no longer threads previous/result. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>