mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
Replace the inline completeness check (and the `state[reloadEpochKey].get()` ping read) in the loader's effect with an injected `shouldLoadTrack(track, params)` gate, mirroring track-switching's rule pattern. The core (`setupTrackResolution`) now knows nothing about reload epochs or completeness: its effect just runs `if (!track || !shouldLoadTrack(track, params)) return;`. - Default gate `loadIfUnresolved` (`!isResolvedTrack`) is the live-agnostic one-shot resolve. Each `resolve*` variant injects `shouldLoadLiveTrack`, which reloads incomplete windows and subscribes the effect to the scheduler's per-type reload-epoch ping (read for subscription only; value unused). - `ResolveTrackState`, the variants' `stateKeys`, and `TrackResolutionConfig` drop the epoch slots + `reloadEpochKey`. The live gate reads its slot defensively off an optional `ReloadEpochStateView` (the `bandwidthState?` pattern), with the per-type key closured in at the variant — so only the gate names the ping, never the core. The scheduler still materializes the slots. - `setupTrackResolution` takes `params` whole (destructured in the body, not the signature) and threads it through to the gate, so a future gate can reach `context` without changing the seam. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>