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
+85
View File
@@ -0,0 +1,85 @@
# gol-simulation Specification
## Purpose
Defines Conway's Game of Life simulation behavior, including ticking, pause/resume, stepping, speed control, and paused-only cell editing.
## Requirements
### Requirement: Simulation applies Conway's rules
The system SHALL advance the grid by one generation per tick using Conway's rules with wall boundaries.
#### Scenario: Tick advances grid
- **WHEN** a tick occurs
- **THEN** each cell's next state follows Conway's rules based on its eight neighbors
### Requirement: Simulation starts paused
The system SHALL start with the simulation paused.
#### Scenario: Initial state
- **WHEN** the application starts
- **THEN** the simulation is paused
### Requirement: Pause can be toggled
The system SHALL toggle between paused and running when the pause action is triggered.
#### Scenario: Toggle pause
- **WHEN** the user triggers the pause action
- **THEN** the simulation switches between paused and running
### Requirement: Single step advances one generation
The system SHALL advance exactly one generation when the step action is triggered while paused.
#### Scenario: Step while paused
- **WHEN** the simulation is paused and the user triggers step
- **THEN** the grid advances by one generation
- **AND** the simulation remains paused
### Requirement: Step is ignored while running
The system SHALL ignore the step action while the simulation is running.
#### Scenario: Step while running
- **WHEN** the simulation is running and the user triggers step
- **THEN** no extra generation is applied
### Requirement: Speed is adjustable
The system SHALL change the tick interval when speed_up or speed_down is triggered, within supported bounds.
#### Scenario: Speed up
- **WHEN** the user triggers speed_up
- **THEN** the tick interval decreases (simulation runs faster)
#### Scenario: Speed down
- **WHEN** the user triggers speed_down
- **THEN** the tick interval increases (simulation runs slower)
### Requirement: Cell editing only while paused
The system SHALL allow editing cells only while the simulation is paused.
#### Scenario: Edit while paused
- **WHEN** the simulation is paused and the user clicks a cell
- **THEN** the cell state changes according to the mouse button
#### Scenario: No edit while running
- **WHEN** the simulation is running and the user clicks a cell
- **THEN** the grid is not modified by the click
### Requirement: Left click sets cell alive
The system SHALL set the clicked cell to alive when the left mouse button is pressed while paused.
#### Scenario: Set alive
- **WHEN** the simulation is paused and the user left-clicks a cell
- **THEN** that cell becomes alive
### Requirement: Right click sets cell dead
The system SHALL set the clicked cell to dead when the right mouse button is pressed while paused.
#### Scenario: Set dead
- **WHEN** the simulation is paused and the user right-clicks a cell
- **THEN** that cell becomes dead
### Requirement: Drag paints cells
The system SHALL paint cells while dragging with the left button (alive) or right button (dead) while paused.
#### Scenario: Drag paint
- **WHEN** the simulation is paused and the user drags with left button held
- **THEN** cells under the cursor become alive