4 Commits
Author SHA1 Message Date
andrey 36f0fa2623 R2-3: полное покрытие новых фич, паритет torus, полировка
- tests/test.js: 148 -> 206 проверок (разделы 23 wrap/torus, 24 зоны, 25 бюджет,
  26 размеры, 27 сейв v2/миграция, 28 рендер/resize 300x300, 29 HUD 381-400px);
  resetGlobals сбрасывает tool/reason/winner; sleep заменён на waitCond/settleViewport.
- tools/old-ref/: независимый torus-эталон (nextStepCleanWrap, CLI --torus,
  gen-torus.js, reference-torus.json); diff-our.js сверяет stepN при setWrap(true).
- index.html: медиазапрос HUD 380->400px (убрана микро-обрезка 381-388px);
  инлайн-комментарий про согласованность useWrap/setWrap.
- AGENTS.md: полный список контракта дополнен; useWrap-заметка уточнена; покрытие
  приведено в соответствие. README: скорость — константа в коде, не UI.
- .gitignore: tools/old-ref/.tmp-*.txt.
- Прогоны: check: OK; суита 206/206 (3 повтора); паритет clean 273/273 + torus 273/273.
- Ревью-гейт R2-3 (Oracle): PASS; minor/nit закрыты.
2026-10-11 11:02:23 +03:00
andrey 7d788404f8 Фаза 4: персистентность, полная суита и полировка
- index.html: реальная персистентность (loadSave/applySave/persist/freshSave,
  SAVE_VERSION=1, форма сейва v1, base64-поле, миграции), резюм незавершённой
  партии после reload, авто-пауза при visibilitychange без перезаписи сейва;
  полировка: modeForState вместо мёртвого mode, валидация FIELD_SIZES,
  setFieldSize игнорирует чужие значения, согласованный дефолт fieldH,
  сброс hoverCell на pointerup/cancel, актуализирован комментарий mode.
- tests/test.js: расширена 65 -> 123 проверок (резюм R1/R2/R3, миграция/битый
  сейв, настройки, resize, клики DOM-кнопок, applyIntent, паритет сохранён).
- tools/old-ref/: harness паритета перенесён в репозиторий (old_ref.cpp,
  reference*.json, генераторы, diff-our.js, ref-*.txt, ce1.txt, README).
- AGENTS.md/README.md: форма сейва, миграции, резюм, harness, структура.
- .gitignore: секрет .gitea_token и бинарники/логи harness.
- Прогоны: check: OK; npm test — ИТОГ 123/123; паритет clean 273/273.
- Ревью-гейт 4 (Oracle): PASS; minor/mit закрыты.
2026-10-11 09:29:20 +03:00
andrey 2705c757f8 Фаза 3: ядро игры (модель поля, симуляция, FSM, скрытие, UI)
- 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.
2026-10-11 09:10:26 +03:00
andrey c76f0d95f4 Фаза 1: документация — AGENTS.md (правила разработки/тестирования) и README.md
- AGENTS.md как конфиг проекта: стек (один index.html, vanilla JS, Canvas 2D + DOM),
  структура, правила игры (B3/S23, большинство из 3), FSM и правила скрытия,
  инструменты/настройки, команды проверки, тестовая инфраструктура и покрытие,
  подводные камни, 'где крутить', стабильные глобалы.
- README.md: описание игры, управление, запуск, тесты.
- .gitignore/.ignore: deepwork-состояние git-local + доступ для поиска.
- Ревью-гейт 1 (Oracle): PASS; закрыты M1/M2 и мелкие замечания.
2026-10-11 08:43:41 +03:00