DISCLOSURE: LLM-GENERATED TEXT
Native Unity 6000.4.6f1 controls reproduced periodic effects executing 32 ticks per pass at an unchanged large clock, including before their initial delay. This can apply repeated damage or healing without elapsed time. This is a follow-up to #932's duration deadline sweep.
Source: Runtime/Tags/PeriodicEffectRuntimeState.cs initializes NextTickTime with float startTime + initialDelay and advances it with float += interval. At 2^24 or float.MaxValue, an interval of 1 can round back to the same timestamp.
Reproduction through EffectHandler's existing deterministic clock hooks, with an Infinite owner, interval 1, and unlimited ticks:
- Clock 100, delay 0: first pass 1 tick, repeated same-clock pass 0.
- Clock 100, delay 1: both passes 0.
- Clock 2^24 or float.MaxValue, delay 0 or 1: first pass 32, repeated same-clock pass 32. Delay 1 should produce zero before any elapsed time.
Fix the scheduler using elapsed time and a retained cadence offset, without relying on an absolute float deadline. Preserve inclusive due boundaries, minimum interval, bounded catch-up, maxTicks and per-handle ownership. Duration refresh/reapplication must retain the existing periodic phase; removing and applying a fresh handle must reset it. Keep public and serialized authoring fields unchanged.
Acceptance:
- Add deterministic red-green runtime-state and actual-handler controls for ordinary and large clocks, backward clocks, exact boundaries, finite overflow, nonfinite values and repeated same-clock passes.
- Preserve maxTicks, initial delay, interval clamp, catch-up cap, refresh/reapplication and reentrant removal behavior; sweep timing consumers.
- Pass full native periodic/effect fixtures and default, SINGLE_THREADED, Odin and legacy typechecks; complete current-head CI on all supported versions/modes.
- Update XML/feature docs and CHANGELOG. No timing or allocation claim without calibrated controls.
Provenance: session 348 PeriodicDeadlineProbe actual-handler native results, following commit 1bb4e4e in PR #933.
DISCLOSURE: LLM-GENERATED TEXT
Native Unity 6000.4.6f1 controls reproduced periodic effects executing 32 ticks per pass at an unchanged large clock, including before their initial delay. This can apply repeated damage or healing without elapsed time. This is a follow-up to #932's duration deadline sweep.
Source: Runtime/Tags/PeriodicEffectRuntimeState.cs initializes NextTickTime with float startTime + initialDelay and advances it with float += interval. At 2^24 or float.MaxValue, an interval of 1 can round back to the same timestamp.
Reproduction through EffectHandler's existing deterministic clock hooks, with an Infinite owner, interval 1, and unlimited ticks:
Fix the scheduler using elapsed time and a retained cadence offset, without relying on an absolute float deadline. Preserve inclusive due boundaries, minimum interval, bounded catch-up, maxTicks and per-handle ownership. Duration refresh/reapplication must retain the existing periodic phase; removing and applying a fresh handle must reset it. Keep public and serialized authoring fields unchanged.
Acceptance:
Provenance: session 348 PeriodicDeadlineProbe actual-handler native results, following commit 1bb4e4e in PR #933.