- index.html: константы/данные, чистая модель поля (Uint8Array, liveNeighbors с жёсткими границами, majorityColor с tie-break, step/stepN без мутации src, applyBrush с клампом, countByPlayer, isExtinct, hashField), FSM из 11 состояний с переходами и reason/winner, visibleMask (скрытие только в PLACE_*), отрисовка по маске, Pointer Events с интерполяцией, цикл с клампом dt, HUD/тулбар/оверлеи, тест-форсы. - Паритет с прототипом old доказан дифференциально: наш step == clean-эталон 273/273; расхождения с proto только там, где proto != clean (баг parent[], не воспроизводим — решение пользователя: чистое большинство из 3). - tests/test.js: раздел 16 паритета; tests/parity-fixture.json — фикстура. - AGENTS.md: контракт глобалов дополнен (ctx/canvas/viewW/viewH/dpr/visibleMask/ applyIntent/reason/STEPS_PER_SEC, tests/package-lock.json). - .gitignore: исключён .gitea_token (гигиена секретов, finding M1 гейта 3). - Прогоны: check: OK; npm test — ИТОГ 65/65, exit 0. Ревью-гейт 3 (Oracle): PASS.
175 lines
7.4 KiB
JSON
175 lines
7.4 KiB
JSON
[
|
|
{
|
|
"name": "block2x2_5x5",
|
|
"w": 5,
|
|
"h": 5,
|
|
"clean": [
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n"
|
|
],
|
|
"proto": [
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n",
|
|
".....\n.11..\n.11..\n.....\n.....\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "blinker_h_5x5",
|
|
"w": 5,
|
|
"h": 5,
|
|
"clean": [
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n"
|
|
],
|
|
"proto": [
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n",
|
|
".....\n..1..\n..1..\n..1..\n.....\n",
|
|
".....\n.....\n.111.\n.....\n.....\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "glider_8x8",
|
|
"w": 8,
|
|
"h": 8,
|
|
"clean": [
|
|
"........\n..1.....\n...1....\n.111....\n........\n........\n........\n........\n",
|
|
"........\n........\n.1.1....\n..11....\n..1.....\n........\n........\n........\n",
|
|
"........\n........\n...1....\n.1.1....\n..11....\n........\n........\n........\n",
|
|
"........\n........\n..1.....\n...11...\n..11....\n........\n........\n........\n",
|
|
"........\n........\n...1....\n....1...\n..111...\n........\n........\n........\n",
|
|
"........\n........\n........\n..1.1...\n...11...\n...1....\n........\n........\n",
|
|
"........\n........\n........\n....1...\n..1.1...\n...11...\n........\n........\n",
|
|
"........\n........\n........\n...1....\n....11..\n...11...\n........\n........\n",
|
|
"........\n........\n........\n....1...\n.....1..\n...111..\n........\n........\n",
|
|
"........\n........\n........\n........\n...1.1..\n....11..\n....1...\n........\n",
|
|
"........\n........\n........\n........\n.....1..\n...1.1..\n....11..\n........\n"
|
|
],
|
|
"proto": [
|
|
"........\n..1.....\n...1....\n.111....\n........\n........\n........\n........\n",
|
|
"........\n........\n.1.1....\n..11....\n..1.....\n........\n........\n........\n",
|
|
"........\n........\n...1....\n.1.1....\n..11....\n........\n........\n........\n",
|
|
"........\n........\n..1.....\n...11...\n..11....\n........\n........\n........\n",
|
|
"........\n........\n...1....\n....1...\n..111...\n........\n........\n........\n",
|
|
"........\n........\n........\n..1.1...\n...11...\n...1....\n........\n........\n",
|
|
"........\n........\n........\n....1...\n..1.1...\n...11...\n........\n........\n",
|
|
"........\n........\n........\n...1....\n....11..\n...11...\n........\n........\n",
|
|
"........\n........\n........\n....1...\n.....1..\n...111..\n........\n........\n",
|
|
"........\n........\n........\n........\n...1.1..\n....11..\n....1...\n........\n",
|
|
"........\n........\n........\n........\n.....1..\n...1.1..\n....11..\n........\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "rnd_6x6_s1",
|
|
"w": 6,
|
|
"h": 6,
|
|
"clean": [
|
|
"112122\n...122\n2.11.2\n2..1..\n....2.\n1.1122\n",
|
|
".12..2\n1.....\n.21..2\n.211..\n.11..2\n...122\n",
|
|
".1....\n1.....\n2..1..\n2..12.\n.1...2\n..1122\n",
|
|
"......\n11....\n22.11.\n22112.\n.1...2\n..1122\n",
|
|
"......\n111...\n....1.\n.....2\n2....2\n..1122\n",
|
|
".1....\n.1....\n.1....\n....22\n...1.2\n...122\n",
|
|
"......\n111...\n......\n....22\n...1..\n...1.2\n",
|
|
".1....\n.1....\n.1....\n....2.\n...1.2\n....1.\n",
|
|
"......\n111...\n......\n....2.\n...1.2\n....1.\n",
|
|
".1....\n.1....\n.1....\n....2.\n...1.2\n....1.\n",
|
|
"......\n111...\n......\n....2.\n...1.2\n....1.\n"
|
|
],
|
|
"proto": [
|
|
"112122\n...122\n2.11.2\n2..1..\n....2.\n1.1122\n",
|
|
".12..2\n1.....\n.11..2\n.211..\n.11..2\n...122\n",
|
|
".1....\n1.....\n1..1..\n1..11.\n.1...2\n..1122\n",
|
|
"......\n11....\n11.11.\n11111.\n.1...2\n..1122\n",
|
|
"......\n111...\n....1.\n.....2\n1....2\n..1122\n",
|
|
".1....\n.1....\n.1....\n....22\n...1.2\n...122\n",
|
|
"......\n111...\n......\n....22\n...1..\n...1.2\n",
|
|
".1....\n.1....\n.1....\n....2.\n...1.2\n....2.\n",
|
|
"......\n111...\n......\n....2.\n...1.2\n....2.\n",
|
|
".1....\n.1....\n.1....\n....2.\n...1.2\n....2.\n",
|
|
"......\n111...\n......\n....2.\n...1.2\n....2.\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "rnd_8x8_s2",
|
|
"w": 8,
|
|
"h": 8,
|
|
"clean": [
|
|
"...22.21\n.11221..\n.1.122..\n2221.2..\n211..2..\n.21121.1\n.11.21..\n.121....\n",
|
|
"......2.\n.1......\n......2.\n.....22.\n.....2..\n........\n1....11.\n.1.11...\n",
|
|
"........\n........\n.....22.\n.....22.\n.....22.\n.....11.\n....11..\n....11..\n",
|
|
"........\n........\n.....22.\n....2..2\n....2..2\n........\n........\n....11..\n",
|
|
"........\n........\n.....22.\n....2..2\n........\n........\n........\n........\n",
|
|
"........\n........\n.....22.\n.....22.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....22.\n.....22.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....22.\n.....22.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....22.\n.....22.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....22.\n.....22.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....22.\n.....22.\n........\n........\n........\n........\n"
|
|
],
|
|
"proto": [
|
|
"...22.21\n.11221..\n.1.122..\n2221.2..\n211..2..\n.21121.1\n.11.21..\n.121....\n",
|
|
"......2.\n.1......\n......1.\n.....22.\n.....2..\n........\n1....11.\n.1.11...\n",
|
|
"........\n........\n.....21.\n.....22.\n.....22.\n.....11.\n....11..\n....11..\n",
|
|
"........\n........\n.....21.\n....2..1\n....2..2\n........\n........\n....11..\n",
|
|
"........\n........\n.....21.\n....2..1\n........\n........\n........\n........\n",
|
|
"........\n........\n.....21.\n.....21.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....21.\n.....21.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....21.\n.....21.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....21.\n.....21.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....21.\n.....21.\n........\n........\n........\n........\n",
|
|
"........\n........\n.....21.\n.....21.\n........\n........\n........\n........\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "cc_3x3_stale",
|
|
"w": 3,
|
|
"h": 3,
|
|
"clean": [
|
|
"..2\n2.1\n1..\n",
|
|
".2.\n...\n.1.\n",
|
|
"...\n...\n...\n",
|
|
"...\n...\n...\n"
|
|
],
|
|
"proto": [
|
|
"..2\n2.1\n1..\n",
|
|
".2.\n...\n.2.\n",
|
|
"...\n...\n...\n",
|
|
"...\n...\n...\n"
|
|
]
|
|
}
|
|
]
|