Repository navigation
feat(solar): compose and control retained motion timelines - #79
Conversation
Agent-Role: eleven Agent-Thread: 01a116c8-c342-7e62-b783-59953e085982 Work-Unit: local-20261007-vision-integration Issue: none Evidence: qualified source-delivery candidate; local validation renewed 2026-10-07
Agent-Role: eleven Agent-Thread: 01a116c8-c342-7e62-b783-59953e085982 Work-Unit: local-20261007-vision-integration Issue: none
Agent-Role: Eleven Agent-Thread: 01a116c8-c342-7e62-b783-59953e085982 Work-Unit: local-20261007-vision-integration Issue: user-request Evidence: evidence/local-20261007-vision-integration/eleven/20261007T201000Z-authoring-report.json
Agent-Role: Eleven Agent-Thread: 01a116c8-c342-7e62-b783-59953e085982 Work-Unit: local-20261007-vision-integration Issue: user-request
Agent-Role: Eleven Agent-Thread: 01a116c8-c342-7e62-b783-59953e085982 Work-Unit: local-20261007-vision-integration Issue: user-request
Agent-Role: Eleven Agent-Thread: 01a116c8-c342-7e62-b783-59953e085982 Work-Unit: local-20261007-vision-integration Issue: user-request Evidence: Solar typecheck lint build layout and 197 tests passed
Apply LSDP mutations independently of Orion, preload installation fonts, and transfer canonical LSML with addressed assets to one persistent engine. Agent-Role: eleven Agent-Thread: 01a11a8b-8f4f-7fc2-abc4-7983042e4f63 Work-Unit: local-20261008-solar-merge Issue: #78 Evidence: evidence/local-20261008-solar-merge/eleven/20261008T123900Z-candidate.md
Adopt the current isolated dev baseline and play sponsor image transitions through native LSDP, Solar and Vision. Bind translation to active scene coordinates instead of reloading for each sample. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T080849Z-capture.json
Reuse retained image translations and source crops for a sampled wave fixture, with native playback and actual-canvas endpoint/replay evidence. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T091139Z-wave-checkpoint.md
Replace cropped image rows with two whole textures and retained Vision wave bindings. Pin the local continuous-mesh engine, validate animation ranges and shared start time, and retain actual-canvas quality and cadence evidence. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T093026Z-continuous-wave-checkpoint.md
Compile nested sequential and parallel tracks, property curves, cubic paths and bounded springs. Drive retained Vision transforms and effects without geometry reloads. Add native playback controls and primitive LSML keyframe replay, with compatibility documentation and actual-canvas proof. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T101407Z-composed-motion-checkpoint.md
Add validated SVG path morphing and retained stroke reveal channels. Reconstruct an OpenAI reference sequence from generated vector contours and LSML tracks, with native Solar/Vision playback, controls, pixel replay and cadence evidence. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T110229Z-vector-motion-checkpoint.md
Replace the rejected visual interpretation with measured vector contour motion. Keep recorded poses at topology changes and qualify aligned native timestamps and half-frame positions, separate from actual real-time canvas capture. Reuse accepted catalogue compilation for native clones and fix hold boundaries. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T114348Z-reference-motion-checkpoint.md
Upstream main and the original 421495a base have identical trees. Preserve the motion candidate across squash history and record its exact engine source contained in the verified Vision merge. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T125000Z-publication-manifest.json
Pinned upstream Git blobs use CRLF. Protect only those four immutable files from text normalization and verify their provenance in PR CI. Record acceptance of the final vector reference fixture. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T125000Z-publication-manifest.json
Keep whitespace diagnostics while recognizing the exact upstream CRLF endings for four vendored blobs. Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion
Agent-Role: Eleven Agent-Thread: 01a124c8-8595-7f01-92fd-bf0d24ba8bd1 Work-Unit: local-20261010-sponsor-motion Evidence: evidence/local-20261010-sponsor-motion/eleven/20261010T130100Z-publication-checkpoint.md
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
AGENT_REPORT / MERGE_ATTESTATION — Eleven Exact signed candidate: Local validation passed: 260 unit tests / 35 files, 5 tooling tests, lint, TypeScript, architecture/map/docs/file-size gates, exact native client provenance, actual Rust/native reference interoperability, full lib/host/HTML/server build and bundle/four Vision artifact pins. All seven actual-canvas controls passed on the rebuilt native host with one scene load and no reader errors. Canonical report: Final CI run 38054231072 passed ( Merge this exact head via squash; verify GitHub signature and exact origin/main tree equality afterward. Keep the active demo and clean worktree/branch. No release tag/deployment or unrelated cleanup. Rollback by checked revert of the squash commit. Agent-Role: Eleven |
|
CLOSURE_REPORT — Eleven PR #79 merged via the repository's permitted squash method at Final PR CI run 38054231072 passed. Full local checks and native/actual-canvas evidence are in Worktree is clean at candidate HEAD on Agent-Role: Eleven |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 94608bc4d3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const geometryBindings = prepareEditableBindings(variant); | ||
| const animationBindings = prepareAnimationBindings(variant); |
There was a problem hiding this comment.
Chain editable positions through animation aliases
When an animated node also uses bindAnimate["transform.translate"], this ordering first binds its coordinates to __solar.geometry.* and then replaces those bindings with __solar.animation.*, recording the geometry leaves as aliases. However, projectState resolves animation aliases against the original state rather than the geometry-projected result, so later updates to the authored position only patch the now-unbound geometry leaves and the animated node stays at its old coordinates. The projection must chain the generated geometry values into the animation aliases.
Useful? React with 👍 / 👎.
| if (item.animation !== undefined) { | ||
| const plan = compile(item.animation, depth + 1); | ||
| return { | ||
| duration: delay + plan.duration, | ||
| clips: plan.clips.map((c) => ({ ...c, start: c.start + delay })), |
There was a problem hiding this comment.
Enforce the composed-plan duration limit on wrappers
A reference wrapper can add up to 600,000 ms to a child plan that is already 600,000 ms, and nested wrappers can repeat this up to the depth limit without hitting the composition check below. Leaf delay_ms + duration_ms has the same gap. Such accepted plans exceed the documented ten-minute bound and keep the requestAnimationFrame playback loop active for hours, especially when iterations are requested; validate the resulting duration before returning every plan type.
Useful? React with 👍 / 👎.
| const url = new URL(base.href); | ||
| url.pathname += `/${encodeURIComponent(sceneId)}`; | ||
| url.searchParams.set("version", request.sceneVersion); |
There was a problem hiding this comment.
Normalize trailing slashes before appending the scene ID
If the configured local endpoint ends in /, which is otherwise accepted, this concatenation requests a path such as /solar-sources//scene-id. Servers with an exact /solar-sources/:id route will return 404, causing this provider to fall back to Canvas and making the local library unavailable when offline. Strip trailing slashes or resolve the scene segment relative to a normalized base.
Useful? React with 👍 / 👎.
Result
Solar can compose retained animations in sequences and parallel groups, interpolate independent property tracks with Bézier/hold/spring curves, travel along cubic motion paths and control playback through native LSDP. Pause, seek, speed, reverse, looping, alternate direction, stop and cancel use one bounded clock and one outstanding submission.
The motion channels include affine transforms, colors, blur/shadow/stroke parameters, continuous whole-image waves, corresponding SVG path morphs and vector stroke reveal. Plans compile once; unchanged native worker clones reuse one exact-content compilation. Ordinary state updates preserve the active scene. Experimental extension contracts, supported effects and limits are documented in
docs/development/motion-system.md.The branch includes the local immutable scene provider and sponsor/composed/vector reference development fixtures and proof scripts. The user accepted the final OpenAI reference rotoscope visually; the first interpretation remains explicitly rejected. Dense held poses preserve contour merge/split windows. This is a reference-specific vector reconstruction, not semantic animation rig recovery or arbitrary video-to-LSML conversion.
Integration and validation
9dc261ehas exactly the original421495abase tree. Integrated its squash history while retaining the motion changes.14658e3, now accurately recorded as contained in verified Vision mergebb6d57f(Lumencast/lumencast-vision#6).e695e14f. Existing PR CI also runs the native-client hash check.Canonical checkpoint:
evidence/local-20261010-sponsor-motion/eleven/20261010T130100Z-publication-checkpoint.md. Current control and native receipts are linked there. CI must pass on the final head before squash merge.Scope and rollback
No release tag or deployment. Blue playback synchronization, a visual timeline editor and full After Effects/Jitter parity remain separate. Preserve the clean active source worktree and live demo; unrelated worktrees and sessions remain untouched. Revert this squash merge through a checked PR for rollback.
Owner: Eleven; thread
01a124c8-8595-7f01-92fd-bf0d24ba8bd1; work unitlocal-20261010-sponsor-motion. User explicitly authorized push and merge.