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 35d1b54248 Ch00 cast intro; Ch04 ten-step convergence collapse
Two chapters rewritten to match the redesign's pedagogical pacing:

Ch00 "Four friends, one ledger, no boss." (Sources/CrisisViz/Chapters/Ch01_Problem.swift):
- Scene 0 is now a slow cast intro. Aaron, Ben, Carl, then Dave fade in
  one at a time at ~1.5 s intervals, each with their portrait, name,
  personality cue, and (for Dave) a BYZ badge — so the viewer has met
  the cast and knows who the trouble-maker is before any consensus
  protocol shows up.
- Scene 1 reuses the four cast portraits but each character now writes
  a DIFFERENT ordering of three transactions (tx-A/tx-B/tx-C). "No
  shared truth yet" is concrete instead of abstract.
- Scene 2 dims that backdrop instead of cutting to a new view, so the
  question ("HOW DO WE ALL AGREE?") emerges from the same scene rather
  than replacing it. Subtitle calls out "ONE OF US (DAVE) MIGHT BE
  LYING" so the Byzantine threat is foreshadowed up front.

Ch04 "Did you see what I saw?" (Sources/CrisisViz/Chapters/Ch05_Voting.swift):
- Replaces the old 3-scene "single static SVP highlight per scene" with
  a 10-step narrated collapse spread across the chapter's 3 scenes
  (3 + 3 + 4 steps, ~2.7 s per step). Each step adds ONE new visual
  layer — vertices stay drawn, cones stack on top, the overlap pulses,
  ancestor tags surface, badges appear, then the pair physically
  migrates together and a CONSENSUS frame snaps around them.
- A persistent step legend on the bottom-left tells the viewer exactly
  what the current step is doing and what's coming next, so the lesson
  is "explicit unfolding" rather than "trust the highlight".
- Uses Aaron (coral) and Carl (amber) as the convergence pair so the
  cast colors carry the meaning. Ancestor cones use the same colors at
  reduced alpha; the overlap pulses white.
- pickPairVertex picks each character's heaviest vertex one round below
  the frontier so the depth-2 ancestor cones have meaningful overlap.

Tasks #34 and #36 in the redesign task list.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 11:22:47 +02:00
CrisisViz Ch00 cast intro; Ch04 ten-step convergence collapse 2026-05-04 11:22:47 +02:00
src/crisis Extend testbed 10x; fix window resize regressions; @MainActor delegate 2026-05-04 00:07:29 +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