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 dd185e70ae Extend testbed 10x; fix window resize regressions; @MainActor delegate
Testbed (Sources/CrisisViz/Testbed/SceneCapture.swift):
- Add convergenceFineOffsets (21 slices), textScaleLadder (6 scales),
  canvasSizeMatrix (7 sizes), and four extended capture functions
  (captureComparisonAtAllSizes/AllScales, captureConvergenceFineGrained,
  captureInspectorAtAllScales) — testbed now produces 279 PNGs across
  16 folders.
- pickConvergingPair(snap:) BFS helper picks two vertices whose depth-3
  cones share >=2 ancestors, so comparison sweeps always show a real
  convergence story instead of a degenerate pair.
- runSanityChecks() walks every PNG, flags tiny files (<8KB), and
  distinguishes real mid-animation freezes (3+ byte-identical frames
  surrounded by varying frames) from expected settled-tail plateaus
  by extracting numeric _t<value>s suffixes.
- runWindowResizeUnitTests() returns a 12-case ResizeUnitReport
  covering shrink-below-min, grow-past-screen (PREVENTS TILING),
  exact boundaries, ultrawide, and headless harness — currently 12/12.

Window resize (Sources/CrisisViz/App/CrisisApp.swift):
- Mark CrisisAppDelegate @MainActor and conform to NSWindowDelegate.
- Static clampResize(proposed:visibleSize:) extracted as pure helper
  so the testbed can unit-test the resize policy without an NSWindow.
- windowWillResize caps proposed sizes at the screen visibleFrame so
  drags never push past the menu bar — that push is what arms macOS
  15+/Tahoe automatic edge tiling and silently locks every handle
  except the left edge.
- Opt out of auto-tiling explicitly via .fullScreenDisallowsTiling and
  re-attach our delegate on didBecomeKey, because SwiftUI replaces it
  on key changes.
- Initial window is 80% of visibleFrame, centered (not flush against
  edges), so the very first drag cannot trip the tile gesture.

AppSettings (Sources/CrisisViz/Engine/AppSettings.swift):
- New @Observable @MainActor settings object injected via
  .environment(settings) at App scope; survives the entire process
  and feeds the inspector text-scale slider.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 00:07:29 +02:00
CrisisViz Extend testbed 10x; fix window resize regressions; @MainActor delegate 2026-05-04 00:07:29 +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