Grand Diomande Research · Full HTML Reader

LUME Creative Engine Maturation — Divergent Rail Plan

- Total phases: **5** (Phase 0 setup + Phase 1-4 reel/push/stabilize) - Total tracks: **22** (Σ across phases; mean ≈ 4.4 / phase, peak 5 in Phase 1+2) - Machines: **Mac1** (dev/CAD/spawn), **Mac4** (Unity host + Mac mini sled prototype), **Mac5** (ML, rate-limited; SAN inference only), **K11** (production publisher pod), **iPhone** (MotionMixApp capture + LUMF/LUMM source), **iPad** (LUMM fallback) - Wall time: **7 days** (phases sequential by gate; tracks parallel within phase) - Invariant config: `epsilon = 0.01

Embodied Trajectory Systems technical note experiment writeup candidate score 28 .md

Full Public Reader

# LUME Creative Engine Maturation — Divergent Rail Plan
> Stage 4 of `/chain:genesis`. EW-governed. 7-day reel-ship + non-blocking parallel work.
> Inputs: `stage3-expand-master-plan.md` (5-pane plan), `creative-forge-output.md` (Q1 audio threading + Q2 director schema sub-rail + Q3 USB-dominant CAD).
> Output binding: this file is what each Codex pane reads to know its role and its bounds.
> Deadline: Reel-001 posted 2026-05-09 EOD. Wave 8 push lands the same day.

---

Plan metadata

  • Total phases: 5 (Phase 0 setup + Phase 1-4 reel/push/stabilize)
  • Total tracks: 22 (Σ across phases; mean ≈ 4.4 / phase, peak 5 in Phase 1+2)
  • Machines: Mac1 (dev/CAD/spawn), Mac4 (Unity host + Mac mini sled prototype), Mac5 (ML, rate-limited; SAN inference only), K11 (production publisher pod), iPhone (MotionMixApp capture + LUMF/LUMM source), iPad (LUMM fallback)
  • Wall time: 7 days (phases sequential by gate; tracks parallel within phase)
  • Invariant config: `epsilon = 0.01 deliverables/hour`, `max_div = 4` (Phase 0 hits 5 — flagged in Risk Register), `stall_threshold = 2 sessions with no track-level commit`, `min_viable_transitions = 2 next-step branches per gate`
  • Agents: 5 Codex panes (P1-P5) + Claude (Mac1 Sonnet 4.7 1M, this session) + Mohamed (judgment + destructive ops + photoshoot)
  • Repos in scope: `lume-commerce` (software/demo, hardware/cad, launchagents), `MotionMixApp` (iOS Swift), `MotionMix` (macOS director + REEL-001 plan), `MotionMixDirector` (Swift Package — director schema target), `multicam-server` (Rust — director Rust impl deferred to Wave 9)

---

## Phase 0: Setup (Day 0 = 2026-05-02 evening)
> Gate: 5 Codex pane prompts in `evo-cube-output/`, K11 health-check green, Mac4 reachable via Tailscale, FirstDate PAT rotation status confirmed (rotated OR sentinel `WAVE8_PUSH_BLOCKED_PAT_ROTATION` written), `[home-path]` directory created with empty per-pane files, pre-commit hook target paths surveyed.
> EW Check: Bounded Divergence at risk — 5 panes brushes the cap of 4 + 1 critical. Resolved by collapsing the "Mac4 verifier handoff prompt" sub-track into the P3 pane prompt (P3 owns Mac4 anyway), and treating "K11 health check" as a 10-minute gate ritual (not a parallel track at this phase).
> Min viable transitions: 2 (→ Phase 1 if all panes online; → Phase 0.5 stall-recovery if K11 unreachable for >30min)

TrackTaskMachineBlocksEW RoleEffort
CriticalOpen 5 Codex panes with paste-ready prompts (one prompt per pane), set `feature/wave9-creative-engine` branch on `MotionMixApp` repo, set `chore/wave8-push-readiness` branch on `lume-commerce`Mac1All phasesRail spine60 min
AFirstDate PAT rotation — `git -C Desktop/FirstDate remote -v`, regenerate token via GitHub Settings → Tokens, rewrite remote to use `gh`-cached cred or env-var, write status to `[home-path]`Mac1Phase 3 G2 pushDivergent (security)20 min
BK11 health-check.ps1 confirmed green — `ssh k11 "powershell -File C:\lume\health-check.ps1"`, captures NSSM 3-service status + LUME-Audio/Mocopi/Depth pkt rates, output → `[home-path]` (used as comparator on Day 7)Mac1 → K11Phase 1 P1, Phase 3 G2Divergent15 min
CInitialize coordination state — create `[home-path]`, write empty `paneN.txt` × 5; create `[home-path]`; write `WAVE8_NOT_PUSHED` sentinel file at `Desktop/lume-commerce/.WAVE8_NOT_PUSHED`; write `[home-path]` skeleton (5 rows, status=PENDING)Mac1All phases (coordination)Divergent15 min

Deliverables:
- 5 pane prompts saved to `Desktop/evo-cube-output/lume-creative-engine-2026-05-02/pane-prompt-P{1..5}.md`
- K11 baseline health JSON
- PAT rotation status (rotated OR explicit blocker doc)
- `[home-path]` populated, `[home-path]` empty-but-present
- `WAVE8_NOT_PUSHED` sentinel + pane registry skeleton

EW Risks (this phase):
- Bounded Divergence: 4 sub-tracks here (1 critical + 3 divergent) is at cap. Adding any 5th task at this phase → defer to Phase 1.
- No Absorbing States: if FirstDate PAT can't rotate today, Phase 3 G2 push is blocked but reel ship (Phase 3 G1) continues. Two viable next-step branches preserved.

---

## Phase 1: Bridges + Reel asset capture (Day 1-2 = 2026-05-03..04)
> Gate: P1's `LumfPublisher.swift` shipped + Swift golden-bytes test green + K11 verifies ≥58 LUMF pkt/s for 60s; AudioEngine `[MixerBufferConsumer]` array refactor merged on Day 1 (single commit) and available for P2 to consume on Day 2; P3 mocopi_synth flake fixed and CHANGELOG drafted; P5 lume-config.scad MAC_MINI constants committed; P4 OSC :9050 listener bound (no SAN bridge yet — that's Phase 2).
> EW Check: Cross-Layer Forcing most at risk — P1's consumer-array refactor is the single shared file across P1/P2/P4. If P1 doesn't land Day 1 morning, P2's AudioCaptureWriter can't compile. Mitigation: P1 declares the consumer-array commit as Track Critical's first deliverable; P2 + P4 wait on a `paneN.txt` claim release before opening AudioEngine.swift.
> Min viable transitions: 3 (→ Phase 2 if P1+P2 capture path green; → Phase 1.5 audio-fallback if LumfPublisher fails on K11 (use Strudel-render path for reel audio); → Phase 1.5 photoshoot-prep if Mac1 work outpaces Mohamed's prep)

TrackTaskMachineBlocksEW RoleEffort
Critical (P1)(a) Day 1 AM: refactor `AudioEngine.swift` `onMixerBuffer` → `[MixerBufferConsumer]` protocol + array (single commit, P1 first deliverable, declares claim on AudioEngine.swift). (b) Ship `MotionMixApp/Services/LumfPublisher.swift` ~210 lines per forge V2 (ring-buffer + 60Hz publisher thread, NOT V1 mainMixer dispatch_async — see forge Q1). (c) `LumfPublisherTests.swift` golden-bytes + `testNoAllocationInHotPath` (mach_vm_allocated_size delta ≤ 0). (d) Day 2: K11 verify ≥58 pkt/s. (e) K11 NSSM `LUME-Audio` Args gain `--prefer-device --heartbeat-file C:\lume\heartbeat\device.txt` (Args ONLY, NOT service registration block).Mac1 → iPhone (TestFlight or USB run) → K11Phase 2 P2 photoshoot, Phase 2 OSC echo loopRail spine8-10h
A (P2)(a) Day 1: `Desktop/MotionMix/REEL-001-PRODUCTION-PLAN.md` (~150 lines: concept, 3 looks, 3 motion concepts, shotlist, audio capture method, composite spec, brand voice). (b) Day 1 PM (after P1's consumer-array refactor): `MotionMixApp/Services/AudioCaptureWriter.swift` (~120 lines, registers as 3rd consumer on `[MixerBufferConsumer]`, writes 30s rolling WAV 48k/16-bit stereo). (c) Day 2: `software/demo/scripts/record-unity-reel.sh` (~80 lines, Darwin avfoundation OR Windows gdigrab+NVENC).Mac1 (scripts), iPhone (AudioCaptureWriter ride-along)Phase 2 photoshoot dayDivergent6h
B (P3)(a) Day 1: investigate `test_mocopi_synth.py::test_beat_phase_clock_wraps_at_one_beat` flake — read failure mode, determine isolation-bug vs real-timing-bug. (b) Day 1: write `software/demo/unity/lume_pcloud/CHANGELOG.md` (~80 lines, Waves 1-8 commit anchors from ARCHITECTURE.md). (c) Day 2: apply mocopi fix (isolation refactor; if real timing bug → escalate to Mohamed, do NOT silently widen tolerance). (d) Day 2: write `software/demo/unity/lume_pcloud/MAC4-VERIFICATION-RUNBOOK.md` (~120 lines, 10-point smoke test).Mac1Phase 3 push readinessDivergent5h
C (P4)Day 2: bind UDP `:9050` listener in `MotionMixApp/Services/OSCService.swift` (extension or revision, mirror LiveStreamServer.swift Network.framework pattern). Decode 7 OSC paths from Wave 8 (`/lume/right-hand-vel` etc.). Add to `ParamMapper.Extras` as additive `Float?` fields (`unityRightHandVel`, etc.). No SAN bridge yet — pattern bridge ships in Phase 2.Mac1Phase 2 SAN-bridge follow-onDivergent5h
D (P5)Day 1: `hardware/cad/lume-config.scad` — add MAC_MINI constants (W=127, D=127, H=50, FOOT_PITCH=110) + forge Q3 USB-topology constants (RACEWAY_USB_A_W/H, RACEWAY_USB_C_W/H, RACEWAY_HDMI_W/H, SLED_DECK_VESA=100). Day 2: refactor `lume-pod.scad` `pod_compute_sled()` (NO box parameter — universal per forge Q3) + add `pod_rear_raceways()` carving K11+MacMini raceways into rear face + `pod_vents_universal()`. Render `exports/pod_compute_sled_universal.stl`.Mac1 (OpenSCAD)Phase 2 sled printDivergent6h

Deliverables:
- `LumfPublisher.swift` + `LumfPublisherTests.swift` (golden-bytes + no-allocation tests pass)
- AudioEngine `[MixerBufferConsumer]` array refactor (single Day 1 commit)
- `AudioCaptureWriter.swift` (rides on consumer-array)
- `record-unity-reel.sh` smoke-tested on K11 (≥5s capture)
- K11 NSSM Args updated (prefer-device flag) — service registration UNTOUCHED
- `REEL-001-PRODUCTION-PLAN.md`, `CHANGELOG.md`, `MAC4-VERIFICATION-RUNBOOK.md`, mocopi flake fixed
- OSC :9050 listener live + 7 channels in ParamMapper.Extras (verifiable)
- `lume-config.scad` + `lume-pod.scad` updated, universal sled STL renders

EW Risks:
- Cross-Layer Forcing: P1's consumer-array commit is on the critical path AND blocks P2 + P4. If P1 stalls Day 1, the rule fires: P2 + P4 force-redirect to spec-only work (read forge §Q1, draft test cases) until P1 lands. Critical's stall ≠ everyone idle.
- Min Entropy: P3's mocopi flake is judgment-call — if root cause is hidden, P3 risks producing zero novelty. Forge counter: P3's CHANGELOG + MAC4-VERIFICATION-RUNBOOK are independent of the flake; ship those first, return to flake.

---

## Phase 2: Reel music + Unity capture + sled print + bridges-b/c (Day 3-4 = 2026-05-05..06)
> Gate: Photoshoot Look 1 (Day 3) + Looks 2-3 (Day 4) shot with stills + motion clips + AudioCaptureWriter recording; pre-commit don't-touch hook installed in 3 repos and blocks a deliberate test violation; pane registry JSON populated + daily `/sync-panes` runs once; P4 SAN bridge debounced + dwell-gated; P5 sled STL + 2 adapter STLs render and slice.
> EW Check: Min Entropy at risk — Day 3 photoshoot is real-world (location, lighting, model, charging). If shoot fails, the entire reel-critical track produces zero artifacts on Day 3, and Day 4's Looks 2-3 attempt absorbs the missed look. Forge counter: pre-shoot dry run on Day 2 EOD (test 1 still + 1 motion clip). Solo-self-shot is the default plan; model coordination is the stretch.
> Min viable transitions: 3 (→ Phase 3 composite if all 3 looks shot; → Phase 2.5 reshoot-Day-5 fallback if Day 3+4 shoot quality insufficient; → Phase 2.5 strudel-only-audio fallback if SAN audition fails)

TrackTaskMachineBlocksEW RoleEffort
Critical (P2 + Mohamed)Day 3: Photoshoot Look 1 (stills via ShootView + 10-15s motion clip + AudioCaptureWriter recording during motion + iPad LUMM as skeleton fallback if iPhone is being used as stills cam). Day 4: Photoshoot Looks 2 + 3. Each look: 24-36 stills + 10-15s motion + 30s audio capture.iPhone + iPad + Mac1Phase 3 reel compositeRail spine6h shoot + 1h staging
A (P3)Day 3: write `Desktop/MotionMix/director-protocol.md` (~120 lines, doc only — cite `1ea8da7 Phase 5a proof token model`, do NOT redefine). Day 3: NEW SUB-RAIL per forge Q2 — write `MotionMixDirector/Sources/MotionMixDirector/Models+Director.swift` (Codable structs: `DirectorState`, `SessionState`, `CueState`, `LookState`, `PerformerState`, `ConsentState`, `TelemetryState`, `DirectorCommand` enum, `DirectorRole`). Schema-without-impl ships even though Rust `multicam-server/src/director_bus.rs` defers to Wave 9. This is the artifact that prevents director drift. Day 3: write `software/demo/PRE-COMMIT-DONT-TOUCH.sh` (~100 lines) and install in `lume-commerce`, `MotionMix`, `MotionMixApp` git hooks. Day 4: write `software/demo/scripts/sync-panes.py` (reads pane registry + NUMU stream + git logs → emits `Desktop/lume-fleet-state-YYYY-MM-DD.md`); Mohamed runs once Day 4 evening.Mac1Phase 3 push readinessDivergent8h
B (P4)Day 4: ship `MotionMixApp/Services/SANPipelineBridge.swift` (~80 lines) — hook SAN 30Hz output, debounce 750ms + confidence > 0.6 + 16-bar minimum dwell, call new additive `StrudelWebEngine.setSANPattern(_:confidence:)`. Day 4: round-trip integration test — Unity 30s motion → OSC → ParamMapper.Extras shows non-zero variance + Strudel webView shows ≥2 pattern replacements over 120s. Forge Q1 schema decision: SAN pattern_id/confidence/cluster ride OSC `/san/pattern_id` etc., NOT a new LUMF schema field — additive 3 OSC paths on K11's `LumeMotionToAudio.cs`.Mac1 + iPhone (Echelon SAN runtime) + K11 (Unity OSC)Phase 3 closes audio→visual loopDivergent6h
C (P5)Day 3: render `adapter_k11_vesa75.scad` + `adapter_macmini_clamp.scad` (forge Q3 add-ons), write `software/demo/launchagents/mac4/{com.lume.audio.plist, com.lume.mocopi.plist, com.lume.depth.plist, install-mac4.sh}`. Day 4: verify `pyorbbecsdk2` macOS arm64 wheel (`pip download --platform macosx_14_0_arm64`); document source-build fallback in UNIVERSAL-SLED.md. Day 4: write `hardware/cad/UNIVERSAL-SLED.md` (~120 lines, swap-test runbook, required cables per box, fit-test pre-flight). Day 4: queue Plate 1 print on Elegoo Max — universal sled (5h ASA) + 2 adapters (30 min addenda parallel-print on same plate, per forge Q3 §3).Mac1 (CAD) → Mohamed (slicer + printer + TCC)Phase 3 fit-testDivergent5h CAD/plist + 5h unattended print
D (P3 ↔ shared)Day 3 evening: install pane-registry update hook (every commit appends row to `[home-path]` via `evo3_hooks.py` already wired). Day 4 evening: first `/sync-panes` synth → `Desktop/lume-fleet-state-2026-05-06.md`. Cross-layer forcing in action: this track exists to detect P1↔P2↔P4 conflicts on AudioEngine.swift before they merge-break the audio path mid-shoot.Mac1All remaining phasesDivergent (coordination meta-track)1h

Deliverables:
- 3 looks shot (stills + motion + audio)
- `director-protocol.md` doc + `Models+Director.swift` Codable schema
- Pre-commit don't-touch hook live in 3 repos (deliberate-violation test passes)
- `SANPipelineBridge.swift` + `setSANPattern` extension live, integration test green
- 3 STLs + 3 plist files + `install-mac4.sh` + `UNIVERSAL-SLED.md`
- Plate 1 print queued (5h unattended)
- First `/sync-panes` daily synth file

EW Risks:
- Min Entropy: photoshoot day produces 0 novelty if Mohamed is blocked (location, weather, model). Mitigation: Day 2 EOD pre-shoot dry run (1 still + 1 motion clip) catches setup failures. Fallback: if Day 3 fully blown, compress Looks 1+2 into Day 4 with shorter shotlist; Look 3 deferred to Day 5 morning, accepting reel-quality cost.
- Bounded Divergence: Phase has 5 tracks (Critical + A/B/C/D). At cap. Track D is intentionally lightweight (1h coordination meta-task, not a new code track), so this stays within EW spirit.
- Cross-Layer Forcing: if SAN audition (Phase 3 prep) reveals SAN audio sounds bad, P4's Phase 2 work needs redirect — Strudel-render fallback becomes default reel audio, P4's SAN-bridge becomes "shipped but disabled by default" (still a delivered artifact, doesn't gate reel).

---

## Phase 3: Reel post + Mac4 verify + Push (Day 5-6 = 2026-05-07..08)
> Gate: Reel-001 final composite at `Desktop/MotionMix/reel-001-final.mp4` 1080×1920 ≤30s ≤30MB; caption drafted + brand-voice reviewed; Mac4 10-point runbook all green; `WAVE8_NOT_PUSHED` sentinel file STILL PRESENT (push lands in Phase 4 Day 7); P5 sled fit-tested (or fit-test deferred to Wave 9 with explicit doc); audio audition winner picked (SAN OR Strudel-render OR licensed fallback flagged).
> EW Check: No Absorbing States most at risk — Mac4 verification could fail in 10 different ways (TCC, Tailscale, NSSM publisher rate <58 Hz, F12 panel won't open, etc.). Each failure must have ≥2 viable next-step branches. Forge mitigation: every runbook check has a paired remediation script; failures defer push by ≤24h, do not block reel.
> Min viable transitions: 3 (→ Phase 4 ship if all green; → Phase 3.5 patch-and-retest if Mac4 verification fails on a fixable point; → Phase 3.5 reel-only-ship-defer-push if push reveals real bug — reel still ships Day 7, Wave 8 push slips to Wave 9 day 1)

TrackTaskMachineBlocksEW RoleEffort
Critical (Mohamed + P2)Day 5: Unity recording session at K11 — `record-unity-reel.sh × 3 looks`, 30s each, drops to `Desktop/lume-reel-recordings/reel-001/`. Day 5 evening: audio audition — A/B SAN-driven (3 motion clips through Echelon SAN at iPhone) vs Strudel-render fallback (recorded via AudioCaptureWriter), Mohamed picks. Day 6: composite via ShootView's ReelBuilderView — stills + motion clips + Unity LUME visual + audio = 30s 9:16 1080×1920 ≤30MB. Day 6: caption draft + brand-voice review (no em dashes, no AI-isms, terse — see master plan §5 caption template).Mac1 + K11 + MohamedPhase 4 shipRail spine4h record + 4h composite + 1h caption
A (P3 + Mohamed)Day 6: Mac4 10-point verification runbook. Mohamed walks through each gate (Tailscale up, F12 calibration panel opens, F2 panel shows depth + audio reactivity, LUMD ≥28 Hz, LUMF ≥58 Hz, LUMM ≥58 Hz, auto-wire menu, Procedural Tunnel ≥30 fps, F12 JSON persists across restart, OSC :9050 emits 7 channels). P3 awaits results, fixes any failures. Day 6: confirm Wave 8 commits visible on `origin/main` … STILL HAS `WAVE8_NOT_PUSHED` sentinel — push lands Day 7. P3 readies the post-push cleanup script (`rm .WAVE8_NOT_PUSHED`).Mac4 + Mac1Phase 4 push G2Divergent3h Mac4 + 1h fixes
B (P5 + Mohamed)Day 5 evening: print finishes, P5 inspects fit on physical box (whichever is bench-accessible — K11 default; if Mac mini M4 is on bench, fit-test that path instead, document which). Day 6: caliper-verify + write fit-test result to `UNIVERSAL-SLED.md`. If fit fails on Mac mini foot recess (forge failure-mode C: 14mm vs 13.5mm rumor) → reprint with adjusted recess; Mac mini sled completion can slip to Wave 9 closeout, K11 path unchanged.Mac1 (caliper) + Mohamed (physical fit)Phase 4 closeout (non-blocking for reel)Divergent1h fit-test
C (P3)Day 5: write `software/demo/scripts/post-push-cleanup.sh` (Day 7 helper that removes `WAVE8_NOT_PUSHED` sentinel + posts NUMU event "wave8 pushed"). Day 6: pre-flight push checklist — `gh repo view`, confirm origin/main HEAD vs Mac1 main HEAD, draft commit-by-commit cherry-pick fallback if a single commit needs to be split (none expected, but contingency exists).Mac1Phase 4 push G2Divergent1h

Deliverables:
- Reel-001 final composite MP4 + caption draft
- Mac4 10-point runbook green-checked (or explicit blockers documented + push deferred)
- Sled fit-test result (or reprint scheduled)
- Post-push cleanup script ready

EW Risks:
- No Absorbing States: Mac4 verification fails on point 4 (LUMD <28 Hz). Branch 1: K11 publisher restart fixes it (transient). Branch 2: real bug, defer push to Wave 9. Both branches preserve reel ship (Phase 4 G1).
- Min Entropy: Day 6 composite stalls if ShootView's ReelBuilderView has a bug surfaced for the first time. Forge counter: P2's task #5 (Day 5) explicitly drives ReelBuilderView with realistic inputs (3 looks of stills + 3 motion clips) — bugs surface on Day 5 not Day 6.
- Cross-Layer Forcing: if Mac4 fails verification, P5's sled fit-test (Track B) does NOT block — forces ahead. Track B's fit-test result feeds the post-mortem regardless.

---

## Phase 4: Ship + Push + Stabilize (Day 7 = 2026-05-09)
> Gate: Reel posted to Instagram + TikTok. `WAVE8_NOT_PUSHED` sentinel removed via post-push-cleanup.sh. Pre-commit don't-touch hook surveys clean (no violations on push-then-cleanup commit). 24h monitoring loop active for ≥1 viewer comment on music or visual.
> EW Check: No Absorbing States — final phase must NOT terminate the rail. Wave 9 backlog is the explicit continuation: HD1 mount + SAN V6 retrain (music-gen Phase C), director Rust impl (forge Q2 sub-rail's pending half), Mocopi-pro activation, FirstDate hygiene closeout, bar display caliper-verify. Phase 4 hands the baton, doesn't drop it.
> Min viable transitions: 2 (→ Wave 9 plan if Phase 4 closes clean; → Phase 4.5 hot-fix loop if reel post breaks platform terms or push reveals immediate prod bug)

TrackTaskMachineBlocksEW RoleEffort
Critical (Mohamed)Day 7 morning: POST REEL to Instagram Reels + TikTok (manual). Day 7 evening: PUSH WAVE 8. Mac1 → `git push origin main`. Pre-commit hook validates (sentinel still present blocks; Mohamed manually removes sentinel via `rm .WAVE8_NOT_PUSHED` AS PART OF the same commit-then-push flow, OR runs `post-push-cleanup.sh` after push lands). 7 Wave 8 commits land: `da8d1478, c5194f92, 2a6e6b25, 95387a02, 8139a931, 8fb6fe75, e21ad971` (and any Wave 9 work-in-progress branches if Mohamed elects to merge them).Mac1 + IG + TikTokWave 9Rail spine1h post + 30 min push
A (Codex P3)Day 7 evening (post-push): write retrospective `[home-path]` (≤200 lines, what shipped, what slipped, what we learned about the 5-pane coordination protocol).Mac1Wave 9 planDivergent1h
B (Mohamed)Day 7+ (ongoing 48h): monitor reel for ≥1 viewer comment about music or visual (success criterion R-001). Capture screenshots of comments → `Desktop/MotionMix/reel-001-comments-log.md`.IG + TikTokWave 9 (audience signal)Divergent30 min/day × 2 days
C (Codex P5 — optional)Day 7+ if sled didn't fit on Day 6: reprint adjusted clamp adapter, fit-test, update UNIVERSAL-SLED.md. Optional — non-blocking for reel ship; closes hardware loop.Mac1 + MohamedWave 9 hardware closeoutDivergent5h print + 30min fit

Deliverables:
- Reel posted (URL captured to memory)
- Wave 8 visible on `origin/main`
- Retrospective in memory
- 48h comment-log seeded

EW Risks:
- No Absorbing States: even if reel posts and Wave 8 pushes, Phase 4 must NOT be terminal. Wave 9 plan is queued (HD1 + SAN V6 + director Rust impl + bar display + Mocopi-pro). Track A's retrospective explicitly seeds Wave 9.

---

## Phase 5 (Wave 9 backlog handoff — out of scope this rail; documented for No Absorbing States)
> Not executed in this 7-day rail. Listed so Phase 4's gate has a real continuation path:
> - HD1 mount + SAN V6 retrain (forge Q1 schema-extension if needed; music-gen Phase C)
> - `multicam-server/src/director_bus.rs` Rust impl (forge Q2 sub-rail second half — Codable schema already shipped Phase 2)
> - Mocopi-pro activation (mail-arrival dependent)
> - FirstDate token rotation closeout if Phase 0 Track A only documented blocker
> - Bar display caliper-verify (#177)
> - `pyorbbecsdk2` macOS arm64 source-build if pip wheel missing
> - Diffusion / training-pipeline triage (memory §4 pane 7, optional)

---

Coordination protocol (the don't-collide doc)

Wave 8 lesson recorded in memory (2026-05-02): 2 agents touched `LumeWaveAutoWire.cs` in parallel; later writer won, earlier wasted edits. Pre-compact summary was stale — git HEAD vs summary text disagreed, and a parallel agent finished Steps 4-6 while my session was redoing them.

The 5 rules below close that loop. They are NOT optional. Every pane prompt MUST include them.

  • Rule 1 — Claim before touch: Each pane DECLARES its file claim at session start by writing absolute paths (one per line) to `[home-path]`. The claim file is the ground truth for "what files this pane will edit."
  • Rule 2 — Read before write: Before any `Edit` or `Write` operation, the pane runs `cat [home-path] | grep -F <target-path>` to check overlap with other panes' claims.
  • Rule 3 — Newer claim defers: If overlap detected, the newer (later-timestamped) claim defers and writes a coordination note to `[home-path]` with the path + both pane IDs + proposed resolution. Mohamed resolves via direct prompt to one pane.
  • Rule 4 — Commit prefix: Every git commit message starts with `[paneN]` (e.g. `[P1] feat: LumfPublisher.swift V2 ring-buffer + 60Hz publisher`). Pre-commit hook from P3 enforces this prefix on all 3 repos.
  • Rule 5 — Pane closure synthesis: When a pane finishes its scoped work, it writes a 5-line synthesis to `[home-path]` (what shipped, what's blocked, file list, last-commit-sha, status ∈ {COMPLETE, BLOCKED, DEFERRED}). The daily `/sync-panes` synth reads these.

Special case — AudioEngine.swift coordination (P1 ↔ P2 ↔ P4):
The `[MixerBufferConsumer]` array refactor lands in P1's first commit Day 1 AM (Phase 1 Critical, deliverable (a)). Until that commit lands on `feature/wave9-creative-engine`:
- P2's AudioCaptureWriter cannot compile.
- P4's OSC bridge does not need AudioEngine.swift, but waits anyway as a courtesy to keep the working tree clean.

P2 and P4 watch for the commit via `git log -1 --grep '\[P1\] refactor.*MixerBufferConsumer'` polling once per 30 min. When detected, both panes pull and proceed.

---

Pane assignment (final, ordered by dependency)

Pane #FocusPrimary machine(s)First taskSuccess criterionDon't-touch
P1Bridge (a) PCM → LUMF + AudioEngine consumer-array refactorMac1 (dev) + iPhone (TestFlight/USB run) + K11 (verification only)Day 1 AM: refactor `AudioEngine.swift onMixerBuffer → [MixerBufferConsumer]` (single commit). Then ship `LumfPublisher.swift` per forge V2 (ring-buffer + 60Hz publisher, NOT V1 dispatch_async).Swift golden-bytes test green + `testNoAllocationInHotPath` green + K11 LUMF pkt rate ≥58 Hz over 60s windowLUMF wire-format magic & byte order; LumeAudioFftReceiver public API; K11 NSSM service registration block (Args may be flagged); PRODUCTION SYSTEM — Mohamed runs all destructive ops
P2Reel-001 production scripting + photoshoot enablementMac1 (scripts) + iPhone + iPad (LUMM fallback) → Mac4/K11 (Unity recording)Day 1: write `REEL-001-PRODUCTION-PLAN.md`. Day 1 PM: AudioCaptureWriter.swift on top of P1's consumer-array.One Reel posted IG + TikTok by 2026-05-09 EOD with stills+motion+Unity-visual+engine-driven-audioWave 8 commits, Unity component public APIs, ShootView ReelBuilderView ffmpeg transition list (additive composites only); PRODUCTION SYSTEM
P3Wave 8 push readiness + director schema sub-rail (forge Q2) + coordination infraMac1 (dev) + Mac4 (verification, Mohamed-driven)Day 1: investigate mocopi flake; write CHANGELOG. Day 2: MAC4-VERIFICATION-RUNBOOK. Day 3: director-protocol.md doc + `Models+Director.swift` Codable structs (forge Q2 sub-rail) + pre-commit hook.`pytest tests/` 100/100 across 10 runs; CHANGELOG + RUNBOOK + director-protocol committed; Mac4 10-point green; pre-commit hook blocks deliberate violation; Wave 8 pushed Day 7 (Mohamed-driven)NSSM service registration; Unity public APIs; Wave 8 commit SHAs (push only, no rewrite); MotionMix Phase 5a proof token model (cite, don't redefine); PRODUCTION SYSTEM
P4Bridges (b) OSC :9050 + (c) SAN→StrudelMac1 (dev) + iPhone + K11 (Unity OSC publisher already shipped Wave 8)Day 2: bind OSC :9050, decode 7 channels into ParamMapper.Extras. Day 4: ship `SANPipelineBridge.swift` + `setSANPattern` + 750ms+16-bar+conf>0.6 gating.7 OSC channels in ParamMapper.Extras with non-zero variance; ≥2 pattern replacements over 120s separated by ≥16 bars; no regression in `play()/setTempo()` callsitesStrudelWebEngine `play()` / `setTempo()` API (additive only); ParamMapper's existing MappedValues struct (additive Extras only); forge Q1 decided SAN rides OSC NOT new LUMF field — do not extend LUMF schema; PRODUCTION SYSTEM
P5Universal sled CAD (forge Q3 USB-dominant) + Mac4 launchdMac1 (CAD/plists) + Elegoo Max (print) + Mohamed (TCC, fit-test)Day 1: lume-config.scad MAC_MINI + raceway constants. Day 2: `pod_compute_sled()` universal + `pod_rear_raceways()` + `pod_vents_universal()` per forge Q3.Universal sled STL + 2 adapter STLs render and slice; ≥1 sled prints + fit-tests successfully; Mac4 launchd plists install + 3 services live with packet rates within 5

Cross-pane don't-touch (universal):
- All wire format magic bytes: `LUME` (0x4C554D45), `LUMD` (0x4C554D44), `LUMF` (0x4C554D46), `LUMM` (0x4C554D4D), `LUMC` — pinned by `tests/test_wire_format_golden.py`.
- 21 Unity component public APIs — additive only, no field renames or signature changes.
- K11 NSSM service registration blocks in `software/demo/launchagents/k11/install-services.ps1` — runtime Args may be parameter-flagged; service registration block stays as-is.
- Wave 8 commits not-pushed: `da8d1478, c5194f92, 2a6e6b25, 95387a02, 8139a931, 8fb6fe75, e21ad971` — Mohamed pushes after Mac4 verification.
- LUMF byte order in `audio_pub.py:send_lumf` — pinned by golden-bytes test.
- MotionMix repo proof-token model (commit `1ea8da7 feat(director): Phase 5a proof token model`) — read it, don't redefine its schema.
- Production system constraint — Mohamed runs all destructive operations manually. No Codex pane may `git push`, `launchctl unload && load`, `nssm remove`, or post to social media on Mohamed's behalf.

---

Risk register (per phase)

RiskPhaseProbabilityImpactMitigationOwner
FirstDate PAT in repo (security finding stage0 §F.1)0 → 3Critical (already exists)CriticalROTATE TOKEN BEFORE ANY PUSH (Phase 0 Track A). If un-rotated by Day 7, Phase 4 push BLOCKED — sentinel `WAVE8_PUSH_BLOCKED_PAT_ROTATION` enforces this.Mohamed (Phase 0)
AudioEngine main-thread block / FFT in hot path1MedCatastrophicForge Q1 V2 selected: SPSC ring buffer (lock-free) + 60 Hz publisher thread + `testNoAllocationInHotPath` test gateP1
Two panes touch same file (AudioEngine.swift in particular)1 → 2Med-High (Wave 8 lesson)Wasted workPane claims protocol (Rules 1-5). P1's consumer-array commit lands Day 1 AM as exclusive claim; P2 + P4 wait via `git log` poll.All panes
LUMF wire-format collision (Swift produces packets that differ from Python golden by ≥1 byte)1MedHigh (silently degrades reel-defining feature)Swift golden-bytes test ports Python golden byte-for-byteP1
:9701 publisher collision (K11 NSSM vs MotionMixApp both publishing)1High if not gatedHigh (glitchy audio reactivity in reel)K11 NSSM Args gain `--prefer-device --heartbeat-file`; PowerShell side reads heartbeat mtime, yields if <2s old. NSSM service block UNTOUCHED.P1 + Mohamed
Mac4 TCC blocks Femto Bolt2Low (assumed unblocked from prior Wave)MedFall back to K11 only (already shipping). Mac4 sled work continues but can slip to Wave 9.P5
HD1 unmounted on Day 5 audio audition3HighMedReal drum stems unavailable; SAN V6 retrain deferred to Wave 9 (already in master plan music-gen Phase C). Fallback for reel: SAN V5 inference OR Strudel-render.Mohamed
Photoshoot logistical fail (location, lighting, model, charging)2MedHigh (no shoot, no reel)Day 0 pre-flight checklist. Day 2 EOD pre-shoot dry run. Solo-self-shot via ShootView RemoteControlView is the default; model coordination is stretch.Mohamed
iPad LUMM degrades in shoot lighting2MedHigh (skeleton fallback unusable)Pre-shoot test under shoot lights Day 2. If degraded, swap to MotionMixApp on iPhone for skeleton (with iPad as stills cam).Mohamed
Reel music sounds bad on listen (SAN V5 unproven for non-trained ear)3Med-LowMed-HighA/B audition Day 5: SAN-driven vs Strudel-render. Pick best. Last-resort licensed track from Rekordbox with explicit "stretch missed" flag.Mohamed
Wave 8 push reveals real Mac4 bug3Low-MedMedMac4 10-point runbook = verifier. Any failure → defer push to Wave 9 day 1. Reel still ships.P3 + Mohamed
ASA shrinkage on Mac mini foot recess (forge Q3 failure-mode C)3MedLow (sled non-blocking for reel)Caliper-verify before VHB. Reprint with adjusted recess if needed. Document in UNIVERSAL-SLED.md. K11 path always works.P5 + Mohamed
OpenSCAD render timeouts on universal pod_compute_sled1-2LowLowRender incrementally, validate each module independently. Forge already broke pod_rear_raceways into separate module.P5
pyorbbecsdk2 macOS arm64 wheel missing2LowMed (Mac4 sled deferral, not reel block)Source-build documented as fallback in UNIVERSAL-SLED.md.P5
Strudel pattern thrash (P4)2High without mitigationMed750ms debounce + confidence > 0.6 + 16-bar minimum dwell (P4 design). Test gate: 120s session shows ≤4 pattern replacements.P4
Director schema drift between 3 directors2 → Wave 9Med (every refactor risks it)High (split-brain mid-show)Forge Q2 sub-rail: Codable structs ship Phase 2 even though Rust impl defers. `Models+Director.swift` is the schema-of-record. Pre-commit hook (P3 task) refuses field RENAMES.P3
`WAVE8_NOT_PUSHED` sentinel accidentally removed mid-week1 → 4LowMedSentinel is `.WAVE8_NOT_PUSHED` in repo root, gitignored. Only `post-push-cleanup.sh` removes it. Pre-commit hook fails commit if sentinel removed AND `git push` not yet executed.P3
Coordination collapse across 5 panes (Wave 8 lesson)AllLow-Med given protocolMed-HighPane claims protocol + daily `/sync-panes` synth + commit prefix `[paneN]`. Recorded in protocol section above.All panes
Phase 4 becomes absorbing state (rail terminates at ship)4Low (explicit Wave 9 backlog exists)LowPhase 5 documented above as Wave 9 handoff. Retrospective Track A seeds it.Mohamed

---

Daily phase summary

DayDatePhaseCritical track gateParallel tracks activeRisk-of-the-day
02026-05-02 (PM)05 panes online + branches setA (PAT) / B (K11 baseline) / C (registry)PAT rotation status — gate to Day 7 push
12026-05-031P1 consumer-array refactor + LumfPublisher startedP2 plan + P3 mocopi/CHANGELOG + P4 OSC bind + P5 SCAD constantsCross-layer forcing if P1 stalls
22026-05-041LumfPublisher K11-verified ≥58 HzP2 record-script + P3 RUNBOOK + P4 OSC routing + P5 universal sled refactorPre-shoot dry run completes EOD
32026-05-052Photoshoot Look 1 + AudioCaptureWriter recordingP3 director-protocol.md + Models+Director.swift + pre-commit hook + P5 adapters/plistsPhotoshoot logistics
42026-05-062Photoshoot Looks 2-3P4 SAN-bridge + integration test + P5 UNIVERSAL-SLED.md + Plate 1 print queuedSled queued for unattended print
52026-05-073Unity recording × 3 looks + audio auditionP5 fit-test (if print done) + P3 push pre-flightAudio sounds bad — fallback decision
62026-05-083Composite + caption draft + Mac4 verificationP3 post-push-cleanup.sh + P5 caliper-verifyMac4 verification failure modes
72026-05-094Reel posted + Wave 8 pushedP3 retrospective + comment monitoringReel terms / push reveals real bug

---

Gate criteria (machine-checkable wherever possible)

### Phase 0 → Phase 1 gate
1. `ls Desktop/evo-cube-output/lume-creative-engine-2026-05-02/pane-prompt-P*.md | wc -l` returns 5
2. `ssh k11 "powershell -File C:\lume\health-check.ps1"` exit 0; output contains `LUME-Audio: Running`, `LUME-Mocopi: Running`, `LUME-Depth: Running`
3. PAT status: file `[home-path]` contains either `ROTATED <new-token-hash>` OR `BLOCKED <reason> — push deferred to Wave 9`
4. `ls [home-path]` all exist
5. `cat Desktop/lume-commerce/.WAVE8_NOT_PUSHED` exists

### Phase 1 → Phase 2 gate 1. `git -C Desktop/MotionMixApp log --oneline | grep -E '\[P1\] (refactor|feat).*MixerBufferConsumer'` returns 1+ commit 2. `xcodebuild test -scheme MotionMixApp -only-testing:MotionMixAppTests/LumfPublisherTests/testGoldenBytes` exits 0 3. `xcodebuild test -scheme MotionMixApp -only-testing:MotionMixAppTests/LumfPublisherTests/testNoAllocationInHotPath` exits 0 4. K11 lume_packet_inspector 60s window: `LUMF: pkt N/s avg N>=58` 5. `git -C Desktop/lume-commerce log --oneline | grep -E '\[P3\] (fix|test).*mocopi'` returns 1+ commit 6. `cat Desktop/lume-commerce/software/demo/unity/lume_pcloud/CHANGELOG.md | wc -l` ≥ 60 7. `openscad --hardwarnings -o /tmp/sled-test.stl Desktop/lume-commerce/hardware/cad/lume-pod.scad` exits 0 8. NEW (Phase 0 prerequisite): pre-shoot dry run produces 1 test still + 1 test motion clip without device/setup failures. Failure → branch to Phase 1.5 photoshoot-prep.

### Phase 2 → Phase 3 gate
1. `ls Desktop/MotionMixStills/reel-001/look-{1,2,3}/ | wc -l` ≥ 24 stills/look
2. `ls Desktop/MotionMix/captures/reel-001/look-{1,2,3}/*.mov | wc -l` ≥ 3 motion clips
3. `ls [home-path] Support/MotionMixApp/audio-captures/reel-001/*.wav | wc -l` ≥ 3 WAV captures
4. `ls Desktop/MotionMixDirector/Sources/MotionMixDirector/Models+Director.swift` exists; `swift build` exits 0
5. `cat Desktop/MotionMix/director-protocol.md | wc -l` ≥ 100
6. Pre-commit hook deliberate-violation test: `cd Desktop/lume-commerce && echo 'magic break' >> software/demo/unity/lume_pcloud/Assets/Scripts/LumeUdpReceiver.cs && git add -A && git commit -m '[P3] test: deliberate violation' returns NONZERO exit`
7. Pane registry JSON populated: `jq '.panes | length' [home-path]` returns 5
8. P4 SAN-bridge integration test: 120s session shows ≥2 pattern replacements separated by ≥16 bars (programmatic check via Strudel webView log)
9. `ls Desktop/lume-commerce/hardware/cad/exports/pod_compute_sled_universal.stl Desktop/lume-commerce/hardware/cad/exports/adapter_k11_vesa75.stl Desktop/lume-commerce/hardware/cad/exports/adapter_macmini_clamp.stl` all exist

### Phase 3 → Phase 4 gate
1. `ls Desktop/MotionMix/reel-001-final.mp4` exists; `ffprobe` shows 1080×1920, ≤30s, `du -h` ≤30MB
2. Caption draft exists at `Desktop/MotionMix/reel-001-caption.md`; brand-voice review checklist passed (no em-dashes, no AI-isms, see master plan §5)
3. Mac4 10-point runbook: `cat Desktop/MotionMix/mac4-verification-day6.md` shows 10 ✓ marks (or explicit blocker doc with sentinel `WAVE8_PUSH_DEFERRED`)
4. `ls Desktop/lume-commerce/.WAVE8_NOT_PUSHED` STILL EXISTS (push happens Phase 4, not Phase 3)

### Phase 4 → Wave 9 gate (No Absorbing States)
1. Reel URL captured at `Desktop/MotionMix/reel-001-post-url.txt`
2. `git -C Desktop/lume-commerce log origin/main --oneline | head -10` shows 7 Wave 8 commit SHAs
3. `! ls Desktop/lume-commerce/.WAVE8_NOT_PUSHED 2>/dev/null` (sentinel removed)
4. Retrospective at `[home-path]` exists ≥100 lines
5. Wave 9 backlog written to `[home-path]` (≥6 backlog items appended, NOT replacing existing content per Memory Guardian)

---

Pulse auto-spawn analysis (carried from master plan §9)

For tasks with high deterministic structure, Pulse can spawn dedicated Codex sessions. Mapped to phases:

  • Phase 1 critical (P1): parts (a)+(b)+(c) Pulse-eligible if forge V2 spec is the prompt. Part (d) verification needs human — NOT Pulse.
  • Phase 1 parallel A (P2): REEL-001-PRODUCTION-PLAN.md + AudioCaptureWriter.swift Pulse-eligible.
  • Phase 1 parallel B (P3): CHANGELOG + RUNBOOK Pulse-eligible. Mocopi flake fix is judgment-call → NOT Pulse (read failure mode first).
  • Phase 1 parallel C (P4): OSC :9050 binding Pulse-eligible.
  • Phase 1 parallel D (P5): SCAD constants + module refactor Pulse-eligible.
  • Phase 2 critical: photoshoot — NOT Pulse (Mohamed-driven).
  • Phase 2 A (P3): director-protocol.md + Models+Director.swift + pre-commit hook all Pulse-eligible.
  • Phase 2 B (P4): SANPipelineBridge.swift + setSANPattern Pulse-eligible.
  • Phase 2 C (P5): 2 adapter SCAD + plists + UNIVERSAL-SLED.md Pulse-eligible. Print is unattended.
  • Phase 3: critical = Mohamed; A = Mohamed-driven Mac4 walk + P3 patches (judgment); B = Mohamed (physical fit); C = Pulse-eligible (post-push-cleanup.sh).
  • Phase 4: ALL Mohamed-driven. Retrospective is the only Pulse-eligible piece, post-ship.
bash
# Suggested first Pulse run (DRY-RUN; do NOT actually spawn until pane prompts paste-ready):
python3 [home-path] pulse-spawn \
  --checklist [home]/Desktop/evo-cube-output/lume-creative-engine-2026-05-02/divergent-rail.md \
  --slug lume-creative-engine-2026-05-02 \
  --dry-run true

---

Closing — what changes vs master plan + forge

Stage 4 net additions on top of master plan §3 + forge §Q1-Q3:

1. Phase 0 explicitly added (master plan implied Day 0; rail makes it a real EW-governed phase with its own gate). Bounds the 5-pane spin-up.
2. Phase 5 / Wave 9 handoff is explicit — closes the No Absorbing States invariant. Master plan listed Wave H backlog; rail makes it a phase-equivalent continuation.
3. AudioEngine.swift coordination protocol — formalized. P1's consumer-array commit Day 1 AM is exclusive-claim; P2 + P4 poll for it. Closes the Wave 8 lesson on parallel-edit collisions.
4. Director schema sub-rail (forge Q2) — `Models+Director.swift` Codable structs ship Phase 2 Day 3 even though Rust impl defers to Wave 9. Phase 2 Track A explicitly carries this.
5. Pre-shoot dry run gate — added as Phase 1 → Phase 2 gate criterion #8. Catches photoshoot failures before they kill Day 3.
6. PAT rotation as Phase 0 → Phase 4 hard prerequisite — explicit sentinel `WAVE8_PUSH_BLOCKED_PAT_ROTATION` if not done by Day 0. Reel still ships.
7. Plate 1 parallel-print — forge Q3's "0 net print overhead" claim materialized: universal sled (5h) + 2 adapters (30 min addenda) on the same Elegoo Max plate.
8. Phase gates are machine-checkable — every gate above has a concrete shell command or file existence check. Pre-Codex-paste validation is now a 2-minute script run.

---

Cross-machine concurrency map (who runs what when)

This map answers "if all 5 panes are firing on Day 2, which machine is the bottleneck?" The answer drives whether we can actually run 5 panes in parallel or need to serialize.

DayMac1 (dev)Mac4 (Unity host)Mac5 (ML rate-limited)K11 (production)iPhone (capture)iPad (LUMM fallback)Elegoo Max (print)
0Open panes, registry, sentinelsreachability ping onlyidlehealth check (read-only)idleidleidle
1P1 LumfPublisher, P2 plan, P3 mocopi+CHANGELOG, P4 OSC bind, P5 SCADidleidle (SAN inference path stays on iPhone via Echelon)LUMF verify (read-only inspector)P1 dev iteration (TestFlight or USB run)idleidle
2P1 K11-NSSM args, P2 record-script, P3 RUNBOOK, P4 OSC routing, P5 universal-sled refactorTCC pre-flight (Mohamed)idleLUMF rate verification + NSSM Args swapP1 LumfPublisher under load testLUMM pre-shoot test under shoot lightsidle
3P3 director-protocol + Models+Director.swift + pre-commit hook, P5 adapters/plistsidleidleOSC :9050 publisher running for P4 round-tripphotoshoot Look 1 stills + motion captureLUMM skeleton ride-along during motion clipsidle
4P4 SAN-bridge + integration test, P5 UNIVERSAL-SLED.mdidleSAN V5 inference (Phase 2 audio audition prep — no retraining, just inference)OSC publisher continuesphotoshoot Looks 2-3LUMM continuesPlate 1 print starts (5h + 30min adapters parallel)
5P3 post-push-cleanup.sh + P5 caliper-verifyidleSAN audition compute (3 motion clips through V5)Unity recording session × 3 looksaudio audition sourceidleprint finishes (Plate 1)
6P3 Mac4 fix patches10-point verification runbook (Mohamed-driven)idlecontinuesaudio playbackidlefit-test (Mohamed, physical)
7P3 retrospectiveidleidlecontinuesaudio idleidleidle

Bottleneck analysis:
- Mac1 = busiest, hosts 5 concurrent Codex panes Day 1-4. Codex pane resource cost is small (each pane is a separate process + LSP), but file-level conflicts are the real risk → coordination protocol Rules 1-5 above.
- K11 is the only production publisher Day 1-7. NSSM Args edit (Day 2) is a 1-line PowerShell change — does not require service restart; the publisher process picks up new flags on next loop iteration. No K11 service downtime any day this week.
- Mac4 only matters Day 6 for the verification runbook. Days 1-5 it's idle. P5's launchd plists install on Mac4 Day 4-5 but services start lazily.
- Elegoo Max is fully unattended Day 4-5. Print queue Stage 7 from prior memory work continues in parallel; universal sled is a NEW print stage on the same machine but does not collide with prior queue.
- Mac5 stays rate-limited per CLAUDE.md / memory rules. Used Day 4-5 for SAN inference only. No retraining.

---

EW invariant trace (per-phase audit)

Each phase below explicitly evaluates the 4 non-halting invariants. The audit lives in this file so the next reader (or `meta-review` Stage 5) can challenge any line.

Invariant 1 — Min Entropy Production (every phase produces measurable progress):

PhaseMeasurable deliverablesepsilon checkIf zero novelty → corrective
05 prompt files + K11 baseline JSON + PAT status + registry skeleton≥4 file artifacts in 60 mininject auto-prompt-generator from prior pane
11 Swift refactor commit + LumfPublisher.swift + 2 tests + 4 docs + 2 SCAD edits≥6 commits over 2 daysswitch P1 critical to V3 (sample-and-hold) per forge if V2 stalls
23 looks shot (≥72 stills + 3 motion clips + 3 WAV) + Models+Director.swift + 3 STLs≥10 binary assets + 3 commitspre-shoot dry-run failure → branch to Phase 1.5
3reel-001-final.mp4 + caption + 10-point Mac4 result1 video + 1 caption + 1 verification docMac4 fail → branch to Phase 3.5 (defer push, ship reel)
4reel URL + Wave 8 SHAs on origin/main + retrospective3 artifactsreel rejected by platform → reshoot in Wave 9

Invariant 2 — Bounded Divergence (max 4 tracks per phase, 1 critical + 3 parallel):

PhaseTrack countStatusWhy it's OK / how mitigated
04 (Critical + A + B + C)At capTracks A/B/C are each <60 min; phase is short
15 (Critical + A + B + C + D)Over capMitigation: Track D (P5) is independent SCAD work that touches NO file in Tracks Critical/A/B/C. Lives on different repo (`lume-commerce/hardware/cad/` vs `MotionMixApp/`). Concurrency is genuine, not contended. EW spirit honored.
25 (Critical + A + B + C + D)Over capMitigation: Track D is 1-hour coordination meta-task (registry update + sync-panes), not a code track. Functionally <1 track of effort. EW spirit honored.
34 (Critical + A + B + C)At capC is helper-script prep only (1h); structurally fine
44 (Critical + A + B + C)At capTrack C is optional

Two phases breach the strict 4-track cap. Both breaches are documented and structurally justified — Phase 1 because Track D operates on a fully disjoint repo+toolchain; Phase 2 because Track D is operational meta-work. If either breach causes coordination friction in the daily `/sync-panes` synth, the rail demands compaction back to 4 tracks (deferring P5 a day, or rolling Track D into Critical's overhead).

Invariant 3 — Cross-Layer Forcing (critical stall ↔ parallel rescue):

PhaseCritical stall scenarioParallel-rescue pathParallel stall scenarioCritical-redirect path
0Codex panes won't openMohamed manually opens; rail proceedsPAT rotation blockedCritical proceeds, Phase 4 push deferred only
1LumfPublisher V2 fails K11 verifyP4's OSC routing reveals audio path is fine; pivot to V3 sample-and-hold (forge backup)P5 SCAD render failsCritical proceeds; sled deferral to Wave 9
2Photoshoot failure Day 3P3's director-protocol writing continues; recompose Day 4 with reduced scopeP4 SAN bridge failsCritical proceeds; reel uses Strudel-render fallback
3Composite breaks in ReelBuilderViewP3's Mac4 verify can run independently; reel falls back to ffmpeg CLI compositeMac4 fails verificationCritical proceeds; push deferred to Wave 9
4Reel rejected by platform termsPush still lands; Wave 9 reshoots reel(no parallel critical here)n/a

Invariant 4 — No Absorbing States (every phase has 2+ viable next steps):

Verified above in each phase's "Min viable transitions" line. Phase 4 explicitly hands to Wave 9; Phase 5 documents Wave 9 work. Rail does not terminate.

---

Pane prompt skeleton (paste-ready scaffold)

Each pane gets a prompt with these 7 sections. Skeleton below — final prompts saved Day 0 to `Desktop/evo-cube-output/lume-creative-engine-2026-05-02/pane-prompt-P{1..5}.md`.

# PANE P{N} — {focus name}

## 0. PRODUCTION SYSTEM HEADER (verbatim)
THIS IS A PRODUCTION SYSTEM. Don't break what ships.
Don't-touch:
  - Wave 8 wire format magics (LUME/LUMD/LUMF/LUMM/LUMC) — pinned by golden-bytes tests.
  - 21 Unity component public APIs — additive only.
  - K11 NSSM service registration blocks — runtime Args may be flagged, registration stays.
  - Wave 8 commits not-pushed — Mohamed pushes manually after Mac4 verification.
  - MotionMix repo's Phase 5a proof token model — read it, don't redefine it.
Mohamed runs all destructive ops: git push, launchctl unload && load, nssm remove,
social posts. Codex panes propose; Mohamed disposes.
Verification before declaration. A pane that says "done" includes runtime evidence.

## 1. Reading order
1. Desktop/evo-cube-output/lume-creative-engine-2026-05-02/divergent-rail.md (this rail) — your phase / track row
2. Desktop/evo-cube-output/lume-creative-engine-2026-05-02/stage3-expand-master-plan.md — your P{N} section
3. Desktop/evo-cube-output/lume-creative-engine-2026-05-02/creative-forge-output.md — relevant Q section ({Q1 for P1+P4, Q2 for P3, Q3 for P5})
4. (P-specific source files listed below)

## 2. Coordination protocol (verbatim)
Rule 1 — Claim before touch: write your file claims to [home-path]
Rule 2 — Read before write: cat [home-path] | grep -F <target> before any Edit/Write
Rule 3 — Newer claim defers; conflicts logged to [home-path]
Rule 4 — Commit prefix [P{N}] on every commit
Rule 5 — Pane closure: 5-line synthesis to [home-path]

## 3. File claim (write to [home-path] before first edit)
{exact paths from rail Pane assignment table}

## 4. Phase-by-phase task list
{copy from rail Phase tables, this pane's row only}

## 5. Success criterion (machine-checkable)
{copy from rail Pane assignment + gate criteria}

## 6. Don't-touch (universal + pane-specific)
{universal list + pane-specific list}

## 7. Escalation triggers (when to message Mohamed via inbox or sms)
- Production system constraint requires destructive op (git push, launchctl, nssm remove, social post)
- Mocopi flake reveals real timing bug (P3 only)
- LUMF golden-bytes test fails on byte ≥1 (P1 only)
- Photoshoot dry run fails at Day 2 EOD (P2 + Mohamed)
- ASA fit-test reveals tolerance breach (P5 only)
- Mac4 verification fails on point ≥1 (P3 + Mohamed)
- Pane registry shows file-claim conflict (any pane)

The Day 0 critical track produces 5 instances of this prompt with the bracketed sections filled in per pane. Pane P1's prompt is ~120 lines; P3's is the longest at ~180 lines (includes director-protocol sub-rail spec).

---

Decision log (Stage 4 specific — items resolved during rail-planning)

These are decisions made during this rail draft that the master plan + forge did not explicitly settle:

#DecisionWhyWhere it lives
1Phase 0 is its own EW-governed phase, not a "Day 0 prep step" implied by master planMaster plan §5 row "0" was 1 line. Rail formalizes it because PAT rotation + pane-claim init are gates that must hold before Phase 1 fires.This rail Phase 0
2P1's consumer-array refactor is a SEPARATE first commit, not bundled with LumfPublisherWave 8 lesson: parallel edits collide on the file with the most consumers. Solo refactor commit gives P2/P4 a clean integration point.Phase 1 Critical task description + Coordination protocol "Special case"
3Forge Q1 V2 (ring-buffer + 60Hz publisher) is the chosen audio-tap, not V1 (mainMixer dispatch_async)Forge Q1 §3-4 selected V2 explicitly. Master plan §7.1 sketch hand-waved this. Rail pins V2 as the contract.Phase 1 Critical (P1) task (b)
4SAN pattern decisions ride OSC, NOT a new LUMF schema fieldForge Q1 schema sub-question selected S3 (OSC routing). Avoids breaking 84-byte LUMF golden-bytes test.Phase 2 Track B (P4) note + Don't-touch
5Director Codable schema (`Models+Director.swift`) ships Phase 2 even though Rust impl defersForge Q2 closing note demanded this. Schema-without-impl is the artifact that prevents director drift.Phase 2 Track A (P3) + Stage 4 net additions §4
6Universal sled is ONE STL (no `box=` parameter), per forge Q3 D1+D6 hybridForge Q3 selected USB topology as dominant. Sled is universal; box-specific work moves to 2 small adapter STLs.Phase 1+2 Track D/C (P5) + Pane assignment Don't-touch
7PAT rotation status is tracked via sentinel file, not just memory noteIf un-rotated, push must explicitly fail loudly. Sentinel file is read by pre-commit hook.Phase 0 Track A + Risk Register row 1
8Daily `/sync-panes` synth is a Phase 2 deliverable, not a continuous background processBackground process risk: stale sync if it crashes silently. Daily run keeps Mohamed in the loop.Phase 2 Track D + Pane P3 ownership
9Wave 8 push lands Phase 4 Day 7, NOT Phase 3 Day 6Mac4 verification is Day 6; push needs Mohamed-judgment buffer of one night. Day 7 ship-day handles BOTH reel post AND push, intentionally.Phase 3 → Phase 4 gate criterion #4
10Phase 5 / Wave 9 backlog is itemized in this rail, not just `active-tasks.md`No Absorbing States invariant requires explicit continuation. Listing here gives Stage 5 (`meta-review`) a target to challenge.Phase 5 / Wave 9 backlog handoff

---

Forge V2 → V3 fallback decision tree (P1 audio path resilience)

Forge Q1 §2 enumerated 6 audio-tap variants V1-V6 and selected V2. Rail formalizes the fallback ladder so P1 doesn't get stuck if V2 underperforms on real device:

                          ┌─────────────────────────┐
                          │  V2 (chosen)            │
                          │  SPSC ring + 60 Hz      │
                          │  publisher thread       │
                          └────────┬────────────────┘
                                   │
                       Day 1 PM verify on iPhone
                                   │
                  ┌────────────────┴────────────────┐
                  │ K11 LUMF rate >= 58 pkt/s ?     │
                  │ no allocation in handlePCM ?    │
                  └────────────────┬────────────────┘
                                   │
                ┌──────────────────┴──────────────────┐
                │                                     │
              YES                                    NO
                │                                     │
        ┌───────▼────────┐                  ┌─────────▼──────────────────┐
        │  Phase 1 gate  │                  │  Day 1 EOD diagnose:       │
        │  passes        │                  │   - drop in ring? fail mode A │
        │                │                  │   - heartbeat starves?    │
        └────────────────┘                  │     fail mode B           │
                                            │   - alloc surfaces in     │
                                            │     publisher? mode C     │
                                            └─────────┬──────────────────┘
                                                      │
                                  ┌───────────────────┴──────────────────┐
                                  │   V3 (fallback)                       │
                                  │   sample-and-hold, 30 Hz publisher,   │
                                  │   accept LUMF rate ~30 pkt/s          │
                                  │   (Wave 8 receiver tolerates ≥28 Hz)  │
                                  └───────────────────┬──────────────────┘
                                                      │
                                          Day 2 verify again
                                                      │
                                  ┌───────────────────┴──────────────────┐
                                  │   pass → Phase 1 gate (degraded)     │
                                  │   fail → escalate to Mohamed,        │
                                  │           reel falls back to         │
                                  │           Strudel-render audio path  │
                                  │           (ships, just less          │
                                  │           "engine-driven" framing)   │
                                  └──────────────────────────────────────┘

V3 is documented in this rail (not the master plan or forge) because it's the rail-level contingency. P1 owns the V2→V3 pivot if needed and reports via inbox to Mohamed before pivoting.

---

Risk → Gate cross-reference (which risk fires which gate failure)

For Stage 5 meta-review's challenge surface — every risk should map to at least one gate failure mode:

Risk rowGate that fires on this riskRecovery branch
FirstDate PAT in repoPhase 0 → Phase 1 gate #3 (PAT status file)Sentinel `WAVE8_PUSH_BLOCKED_PAT_ROTATION` blocks Phase 4 push only
AudioEngine main-thread blockPhase 1 → Phase 2 gate #3 (no-allocation test)V2 → V3 fallback tree above
Two panes touch same filePane registry conflict log file > 0 linesNewer pane defers (Rule 3)
LUMF wire-format collisionPhase 1 → Phase 2 gate #2 (golden-bytes test)P1 fixes byte order; cite Python source-of-truth
:9701 publisher collisionPhase 1 → Phase 2 gate #4 (K11 packet inspector shows MotionMixApp packets only)NSSM Args + heartbeat file works; if not, K11 LUME-Audio temporarily disabled (Args, not service registration)
Mac4 TCC blocks BoltPhase 3 → Phase 4 gate #3 (Mac4 runbook 10/10)K11-only path stays; sled deferral to Wave 9
HD1 unmounted on Day 5(No gate — only audio audition quality affected)Strudel-render fallback, declared "stretch missed" if licensed track used
Photoshoot logistical failPhase 1 → Phase 2 gate #8 (pre-shoot dry run) + Phase 2 → Phase 3 gate #1-3 (asset counts)Branch to Phase 1.5 or Phase 2.5; Day 5 reshoot fallback
iPad LUMM degradesDay 2 EOD test result (pre-flight check)Use iPhone for skeleton, iPad as stills cam
Reel music sounds badPhase 3 audition Day 5 (Mohamed picks)A/B → SAN OR Strudel OR licensed
Wave 8 push reveals Mac4 bugPhase 3 → Phase 4 gate #3 failsDefer push only; reel ships
ASA shrinkage Mac miniPhase 3 → Phase 4 gate (P5 fit-test, optional, non-blocking)Reprint or Wave 9 closeout
OpenSCAD render timeoutsPhase 1 → Phase 2 gate #7 (`openscad --hardwarnings` exit 0)Render incrementally module-by-module
pyorbbecsdk2 wheel missingPhase 2 → Phase 3 gate (UNIVERSAL-SLED.md content)Source-build path documented as fallback
Strudel pattern thrashPhase 2 → Phase 3 gate #8 (≤4 replacements over 120s)750ms+16-bar+conf>0.6 gate; tune if needed
Director schema drift(Long-tail risk — Wave 9+)`Models+Director.swift` + pre-commit hook prevents field renames
WAVE8_NOT_PUSHED sentinel removed earlyPre-commit hook fails commitHook explicitly checks; revert sentinel
Coordination collapse 5 panesDaily `/sync-panes` synth shows conflict count > 0Mohamed-resolved via direct prompt
Phase 4 absorbing stateWave 9 backlog count = 0Phase 5 backlog mandates ≥6 items appended to active-tasks.md

---

Final fitness check (Stage 4 self-audit)

Before handing to Stage 5 `meta-review`, the rail self-audits against the original Stage 4 charter:

  • [x] Sequential phases × parallel tracks — 5 phases, 22 tracks, max 5 per phase (with structural justification for the 2 over-cap cases)
  • [x] EW invariants honored — explicit per-phase audit table above; breaches documented + mitigated
  • [x] Machine-mapped — Mac1, Mac4, Mac5, K11, iPhone, iPad, Elegoo Max all assigned with day-by-day load
  • [x] Coordination protocol — 5 rules + AudioEngine.swift special-case + commit-prefix enforcement
  • [x] Pane assignment with don't-touch — Production System constraint in every row
  • [x] Reel-ship deadline — 2026-05-09 EOD, Phase 4 Day 7 critical track
  • [x] Director schema sub-rail (forge Q2) — Phase 2 Track A, Codable structs ship even though Rust defers
  • [x] PAT rotation as hard prerequisite — Phase 0 Track A, sentinel-enforced
  • [x] Mac4 vs K11 distinction explicit — Mac4 = recording surface for Phase 3 reel-record (Day 5 falls back to K11 if Mac4 sled isn't ready), K11 = publisher/recording surface throughout
  • [x] Risk register per phase — 19 rows, every phase covered, security finding (FirstDate PAT) = top row
  • [x] Gate criteria machine-checkable — every phase has shell commands or file-existence checks
  • [x] Pane prompts not yet generated, but skeleton specified — so Day 0 critical track has a clear template
  • [x] Length 500-900 lines — see footer count

End of divergent rail.

Promotion Decision

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

Source Anchor

evo-cube-output/lume-creative-engine-2026-05-02/divergent-rail.md

Detected Structure

Method · Evaluation · Math · Code Anchors · Architecture · is Stage Research