Crisis BFT consensus protocol — Go PoC, Python recorder, and CrisisViz: a native macOS scrubbable curriculum visualizer (10 chapters, ~18 minutes at 1×, signed-speed slider with reverse playback).
Find a file
saymrwulf 463d77f072 SceneEngine: real pause + launch paused
The pause button was just a no-op for animation: localTime was always
(now − sceneStart) × speed, so anything inside the scene kept moving
even when isPlaying=false. The auto-advance task was the only thing
the toggle actually controlled. Worse: every fresh launch from the
Dock immediately started ticking, so the user opened the app and saw
the title scene already several seconds in.

Replace the "wall-clock anchor" with a two-state timer:

  - accumulatedLocal: time already watched in this scene
  - playSessionStart: wall-clock anchor for the live delta (nil when
    paused)

  localTime = accumulatedLocal + (now − sessionStart) × speed   if playing
            = accumulatedLocal                                  if paused

Pause now folds the live delta into accumulatedLocal and clears the
session anchor. Resume re-anchors. Scene navigation (next/previous/
goTo) zeros the accumulator and only opens a fresh session if the
engine was already in the playing state. Speed changes capture the
current localTime at the OLD speed so they don't retroactively rescale
already-elapsed time. Auto-advance fires after the REMAINING duration
(not the full duration) so a pause halfway through Ch1.3 doesn't
restart its 24s clock when the user resumes.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-06 20:46:36 +02:00
CrisisViz SceneEngine: real pause + launch paused 2026-05-06 20:46:36 +02:00
src/crisis Masterclass redesign: cast lifelines, narrative invariants, video harness 2026-05-06 19:11:36 +02:00
tests Initial implementation of the Crisis protocol (Richter, 2019) 2026-04-23 13:20:30 +02:00
.gitignore Add macOS .app bundle with native Dock icon and activation policy 2026-04-30 20:21:18 +02:00
Crisis.mirco-richter-2019.pdf Initial implementation of the Crisis protocol (Richter, 2019) 2026-04-23 13:20:30 +02:00
crisis_data.json Add JSON export pipeline + event recorder for visualization 2026-04-30 20:06:21 +02:00
pyproject.toml Initial implementation of the Crisis protocol (Richter, 2019) 2026-04-23 13:20:30 +02:00