Files
Learn_System/.claude/memory/project_concurrent_sessions_branch.md
T
Maxim Dolgolyov 8a7091ddec chore(memory): снимок файлов памяти Claude в репозиторий для переноса
Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в
.claude/memory/, чтобы переносить между машинами через git.
README.md — как восстановить в пользовательскую папку на другой машине.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 08:32:16 +03:00

4.2 KiB

name, description, metadata
name description metadata
project_concurrent_sessions_branch По ветке feature/lab-content-engine параллельно коммитят другие сессии — fetch перед работой, не force-push вслепую
node_type type originSessionId
memory project 4e9fb8e3-3745-4f02-9d88-40b13d0cb4ca

Параллельные сессии пишут в ту же ветку

На 2026-05-30 по ветке feature/lab-content-engine одновременно работали несколько сессий Claude: помимо контент-движка лаборатории (project_lab_content_engine) туда же коммитили biochem (Фазы 2/3/5/6), opticsbench-конструктор, учебники (chemistry-8). Это вызвало реальные проблемы: расхождение local/remote, откат моих правок lab.html (include-теги дважды), потребность в --force-with-lease.

Why: Несколько агентов/сессий делят одну git-ветку и рабочее дерево — типичная причина «пропавших» правок и non-fast-forward при push.

How to apply:

  • Перед началом и перед push: git fetch + git rev-list --left-right --count HEAD...origin/<branch>.
  • Если remote ушёл вперёд — НЕ force-push вслепую: сначала понять, что за коммиты (часто чужая сессия), и что local — content-superset.
  • В рабочем дереве почти всегда лежат чужие незакоммиченные правки (api.js, *.html) — коммитить только СВОИ файлы поимённо, не git add -A.
  • Правки в часто-редактируемых файлах (lab.html) перечитывать прямо перед Edit — линтер/чужая сессия перенумеровывают строки.
  • Push на git.dolgolyov-family.by иногда даёт транзиентный «Failed to authenticate» — повторить.

Реальный инцидент (2026-05-30): браузерные баги после Фаз 3-4 контент-движка.

  1. cirSim is not defined в _pauseAllSims()/closeSim() (lab-init.js): Фаза 3 (ленивая загрузка) обнажила latent-баг — эти «дробовик»-функции ссылаются на глобалы экземпляров симуляций (cirSim/reacSim/newtonSim/…) по голому имени; раньше их объявляли sim-файлы (eager), теперь до открытия симуляции → ReferenceError. Фикс: предсоздать имена как window-свойства (null) в начале lab-init.js. (Изначально я ошибочно подумал, что проблема в theory-data.js/_pilots.js — их НЕ существует, THEORY остаётся inline в lab-init.js; те правки lab.html были no-op.)
  2. /api/lab/sims 500 = no such table: lab_sims: миграция 042 применялась к ТЕСТОВЫМ temp-БД, но не к ЖИВОЙ (backend/data/learnspace.db). Сервер НЕ авто-мигрирует (только fail-fast проверка). Фикс: node src/db/migrations-runner.js на живой БД (применил, 40 строк) + graceful-degradation в lab.js (пустой каталог вместо 500). SQLite: таблица, созданная миграцией, видна работающему серверу без рестарта (DDL закоммичен в файл; prepare происходит на запрос). Уроки: (а) после рефактора с ленивой загрузкой проверять, что глобал-ссылки в «дробовик»-функциях не указывают на now-lazy переменные; (б) НОВАЯ миграция требует прогона на ЖИВОЙ БД (npm run migrate в backend), а не только в тестах; (в) не выдумывать причину — сверять с error_log и фактическим наличием файлов.