Goal
Finish Prosodic as a ClojureScript speech gesture planner that emits brow/head schedule, pulse, and fade plans through the Animation agency.
Current state
Polyester has src-cljs/latticework/prosodic.cljs, in-process and worker client methods, snippet loading, speaking/pulse/stop state, and fade plan output. The old TypeScript path still had XState, scheduler timers, localStorage, and direct host coupling.
This mirrors the Latticework research issue: meekmachine/Latticework#36.
Clojure-way direction
- CLJS owns serializable speaking state, loaded brow/head snippet metadata, pulse decisions, and fade planning.
- Main thread loads snippet JSON or profile-backed gestures and passes normalized data into the planner.
- Main thread applies schedule/remove/restart/fade outputs through Animation; planner never calls
window.anim or engine APIs.
- Prosodic gestures must compose with vocal/lipsync, gaze, blink, and emotion expression instead of competing through direct mutation.
Acceptance criteria
- Start/pulse/stop/fade behavior remains equivalent to current runtime behavior.
- Worker code has no
localStorage, window.anim, DOM, requestAnimationFrame, or Loom3 references.
- Conversation and TTS flows can start/stop prosody around agent speech using data commands.
- Add tests for snippet normalization, speaking start, word-index pulse decisions, fade-step output, immediate stop, and cleanup.
- Document priority/blend assumptions for prosody relative to vocal, gaze, blink, and emotion expression.
Goal
Finish Prosodic as a ClojureScript speech gesture planner that emits brow/head schedule, pulse, and fade plans through the Animation agency.
Current state
Polyester has
src-cljs/latticework/prosodic.cljs, in-process and worker client methods, snippet loading, speaking/pulse/stop state, and fade plan output. The old TypeScript path still had XState, scheduler timers,localStorage, and direct host coupling.This mirrors the Latticework research issue: meekmachine/Latticework#36.
Clojure-way direction
window.animor engine APIs.Acceptance criteria
localStorage,window.anim, DOM,requestAnimationFrame, or Loom3 references.