docs: archive gol-simulation change and sync specs

Archive completed change and add gol-simulation main spec.
This commit is contained in:
2026-11-08 15:52:38 +01:00
parent cb974854a3
commit b7120e67f2
6 changed files with 85 additions and 0 deletions
@@ -0,0 +1,43 @@
# Design
## Context
Input, placement, HiDPI, and grid are implemented. Simulation state (`sim_paused`, `ACTION_PAUSE`, `ACTION_STEP`, speed actions) exists but is unused. See proposal.md.
## Goals / Non-Goals
**Goals:**
- Conway tick loop with adjustable interval.
- Pause/resume, stepping, speed control.
- Paused-only cell editing via mouse, including drag painting.
**Non-Goals:**
- Pattern detection or statistics.
- Undo/redo.
- Multi-threading.
## Decisions
### D1: Tick timing
- Use monotonic clock in the frame loop; accumulate elapsed time; when >= interval, compute next generation and reset accumulator.
### D2: Next generation buffer
- Allocate a second grid buffer; compute into it, then swap pointers (or copy). Prefer swap of `cells` pointers with size unchanged.
### D3: Editing while paused
- Pointer button handler sets/clears cells if `sim_paused`; drag paints using motion events while button held.
### D4: Speed bounds
- Interval range 0.05s..1.0s (20 tps..1 tps), step factor 2.
### D5: Default bindings
- Add `p`, `n`, `+`/`-` to default config (merge).
## Risks / Trade-offs
- [Tick cost on large grids] -> grid is small (50x50), fine.
- [Editing during tick race] -> editing only while paused avoids races.
## Open Questions
None.