Shared
This folder owns Remotion-only helpers that are reused by episode compositions.
Owns
- relative cursor scheduling for blocking and nonblocking episode actions
- validation and compilation of declarative episode action scripts
- separate, self-contained Episode JSON authoring and Episode TypeScript authoring guides for human and AI script authors
- generic Remotion playback for planner-backed declarative episodes
- fade wrappers that expose visible Remotion
Sequenceranges - graph animation orchestration through
GraphView,GraphEvents, andCameraMove - transparent canvas and fixed camera layers for declarative episode visuals
- explicit scene-camera actions that frame canvas-anchored graphs or stable claim keys
- planner-frame playback through the shared
DebateGraphReact/SVG renderer - episode frame, template, and brand sequence wrappers
Boundaries
- Keep reusable non-Remotion render primitives in
@reasontracker/components. - Keep domain state changes and layout calculation in app debate-core.
- Keep episode-specific content, timing, graph events, and camera actions in episode scripts.
- Keep both Episode JSON authoring and Episode TypeScript authoring synchronized whenever the script schema, supported options, defaults, or compiler behavior changes. Each guide must remain usable without the other.
- Keep executable special behavior in an explicit typed extension rather than encoding code in JSON.
- Do not invent alternate layout, scale, or graph-bound decisions in this folder; Remotion helpers should only select planner-produced frames.
- Do not pre-apply later operation results to earlier frames. Camera helpers may frame a future graph state, but graph rendering helpers must keep operation-derived frames pure.
- Do not recreate lower-level path-geometry behavior in this folder; ordered connector reveal and connector-width sweeps must be expressed through
@reasontracker/componentspath-geometry instructions rather than host-side clipping or visibility-window props.