mirror of
https://github.com/saymrwulf/crisis.git
synced 2026-05-14 20:37:54 +00:00
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).
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> |
||
|---|---|---|
| CrisisViz | ||
| src/crisis | ||
| tests | ||
| .gitignore | ||
| Crisis.mirco-richter-2019.pdf | ||
| crisis_data.json | ||
| pyproject.toml | ||