Back to corpus
proposalexperiment writeup candidatescore 40

Phase 2 Implementation Plan – Scheduler & Safety

**Timeline:** Weeks 7-12 (6 weeks) **Status:** Foundation complete (BeatClock trait, Quantizer, SafetyPolicy) **Next:** Action queue, executor, MIDI/OSC integration

Full HTML reader

Read the full artifact

Open in new tab

Extracted abstract or opening context

## Overview Phase 2 focuses on integrating Ableton Link synchronization, implementing quantized action execution with safety policies, and adding MIDI/OSC control interfaces. The scheduler coordinates deck operations with beat-synchronized timing while enforcing safety constraints. **Timeline:** Weeks 7-12 (6 weeks) **Status:** Foundation complete (BeatClock trait, Quantizer, SafetyPolicy) **Next:** Action queue, executor, MIDI/OSC integration ### Completed ✅ - [x] BeatClock trait with `current_beat()`, `phase()`, `tempo_bpm()`, `is_synchronized()`, `num_peers()` - [x] LocalBeatClock implementation for offline use - [x] Helper methods: `time_to_next_beat()`, `time_to_next_bar()` - [x] Unit tests for beat clock functionality ### Remaining Tasks - [ ] **7.1 Link SDK FFI Integration** (Requires Ableton Link SDK) - [ ] Add Link SDK C++ bindings to `link-clock/src/ffi.rs` - [ ] Create `LinkSession` wrapper struct - [ ] Implement `LinkClock` struct implementing `BeatClock` trait - [ ] Expose `beat_time()`, `phase()`, `is_connected()`, `num_peers()` methods - [ ] Handle Link session lifecycle (create, enable, close) - **Dependencies:** Ableton Link SDK license and C++ bindings - **Deliverable:** `LinkClock` compiles and can query Link state - [ ] **7.2 Link Thread** - [ ] Create `LinkThread` struct in `link-clock` crate - [ ] Poll Link state at configurable interval (e.g., 10ms) - [ ] Publish beat clock updates via SPSC ring (`BeatClockUpdate` message) - [ ] Handle Link tempo changes and peer connections/disconnections - [ ] Graceful shutdown on thread join - **Dependencies:** Link SDK integration (7.1) - **Deliverable:** `cargo run -p link-test` demonstrates Link sync with multiple instances

Promotion decision

What has to happen next

Attach run IDs, datasets, metrics, and reproduction commands.

Why this is not always a full paper yet

Corpus pages are public-safe readers for discovered workspace artifacts. They are not automatically final papers. A corpus item becomes a polished paper only after the editable source, evidence checkpoints, references, figures, render path, and release status are attached through the paper schema.