What problem does it solve? Live telemetry sessions in a Godot digital-twin viewer are ephemeral and hard to reproduce, making it impossible to scrub history, demo recorded data, or verify that playback behaves identically across runs. ## Core Features & Use Cases - NDJSON recording contract: A pinned twin-recording format (header with version, hz, seed, and tag table, then timestamped frames) shared by the Node.js recorder and the Godot parser so the two sides cannot drift. - Two recorder modes: Synthesize byte-reproducible fixtures from a seed with node tools/sim/record.js, or capture a live WebSocket stream stamped with seed:-1. - Deterministic playback player: core/playback.gd replays recordings through the same DataBus.inject_frame seam live data uses, with load/seek/play/pause/speed controls and an amber PLAYBACK honesty indicator. - Determinism gate: tools/check_playback.gd runs the shipped runtime twice and asserts identical PLAYBACK-HASH values, catching player bugs and input divergence. - Use Case: Record a 30-second plant telemetry fixture, scrub it in the viewer timeline, then run the two-leg determinism check to prove a playback change did not alter emitted state. ## Quick Start Record a synthesized fixture with node tools/sim/record.js --out fixture.ndjson --seconds 30 --seed 42, then replay it in the viewer and verify determinism via tools/verify_twin.sh.