kozan-scheduler — Task scheduler and async executor for Kozan.
Like Chrome's base/task/ + blink/platform/scheduler/.
Standalone crate — zero dependency on kozan-core.
Architecture
Scheduler (MainThreadScheduler — the event loop)
├── TaskQueueManager (SequenceManager — priority picker)
│ └── TaskQueue × 6 (one per priority level)
├── MicrotaskQueue (drain after each macrotask)
├── LocalExecutor (!Send async runtime)
├── FrameScheduler (vsync-driven frame timing)
└── WakeReceiver (cross-thread task delivery)
Event loop algorithm (HTML spec)
loop {
1. Receive cross-thread tasks
2. Promote delayed tasks
3. Poll async executor
4. Pick ONE macrotask → run
5. Drain ALL microtasks
6. If frame due → callbacks → style → layout → paint
7. Park until next event
}