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 7291645524 Ch01: serial slo-mo timeline + beat-bound narration
Replaces the parallel-beats GossipScript with a strictly serial Ch01
timeline (~75 micro-beats over ~5.5 minutes at 1×). Pedagogical
principle: the learner's eye can only follow serial events, so even
though Crisis is parallel by design we serialize for teaching.

Every micro-event is its own beat with its own narration sentence:
think → select payload → select parents → grind PoW → seal → choose
recipient → fly (one at a time) → arrive → open → read body → read
parents → resolve each parent against the receiver's own local view →
verify hash → accept into view. The asymmetry beat (Carl writes γ
before β reaches him) is the centerpiece of the chapter.

Architecture:

  - `Ch01Timeline.state(at: t)` is a pure function — replaying every
    beat up to t produces the world state. This makes the chapter
    scrub-able and reverse-play-able cleanly later.
  - The 7 existing scenes become navigation labels — windows of the
    same continuous timeline. Arrow keys still let you jump between
    them. Scene durations are now per-scene overrides matching each
    scene's window in the timeline.
  - `Ch02_Graph.swift` rewritten end-to-end (1506 → ~470 lines): one
    timeline-driven render path, no per-scene switch, no dense graph
    rendering for scenes 4-6 (their content folds into the main
    timeline as resolveParent / verifyHash / acceptIntoView beats).
  - `ImmersiveView`'s narration overlay now wraps in its own
    TimelineView so the displayed text updates at frame rate to
    match the active beat. Ch01 reads from
    `Ch01Scenes.narrationAt(scene, localTime)`; other chapters fall
    back to the static per-scene SceneNarrations.
  - `GossipScript.swift` deleted. Old helpers in Ch02_Graph
    (renderStagedBeat, renderHashOneWayVignette,
    renderLocalDAGDeterminismVignette, renderAncestorConeWalk,
    drawCastBubble + view-bubble + composing box) are gone.
  - SceneEngine + SceneVideoCapture duration overrides updated for
    the 7 new scene windows.

Cast members fade onto the stage only when the timeline introduces
them — Ben isn't on screen during "Aaron writes α", Carl isn't on
screen until "Aaron decides to send α to Carl". No ghosted lanes.

Build clean, harness still 55/55 invariants, 0 audit errors,
281 PNGs, 36/36 MP4 written.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-06 22:45:38 +02:00
CrisisViz Ch01: serial slo-mo timeline + beat-bound narration 2026-05-06 22:45:38 +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