--- name: project_lab_content_engine description: "Рефактор лаборатории «симуляции как данные» — LabRegistry, фазы 0-5, ветка feature/lab-content-engine" metadata: node_type: memory type: project originSessionId: 4e9fb8e3-3745-4f02-9d88-40b13d0cb4ca --- # Контент-движок лаборатории (feature/lab-content-engine) Рефактор регистрации ~40 симуляций лаборатории из захардкоженной (в 6 местах) в декларативную через `LabRegistry`. План в `plans/lab-content-engine/` (PLAN.md + CONTEXT.md + 6 сабпланов), ведётся через feature-planner (Automated/Direct/Big Bang). **Why:** Добавление симуляции требовало правок в 6 местах (lab.html include + тело, lab-glue SIMS+preview, lab-init openSim+THEORY). Цель — манифест на симуляцию + БД-админка + курикулумная привязка. **How to apply:** Перед работой над лабой читать `plans/lab-content-engine/CONTEXT.md` (там RESUME STATE с последним коммитом и рисками). Статус фаз — в PLAN.md. Состояние на 2026-05-30: ✅ ЗАВЕРШЕНО И СМЁРЖЕНО В master. Все Фазы 0-5 контент-движка лаборатории в origin/master через merge-commit e843a70 (--no-ff), origin/master синхронен (0 0). Проверено: lab.js/_registry/043 в origin/master, lab.html=445 строк (версия контент-движка). Откат всего мёржа: git revert -m 1 e843a70 && git push origin master. КАК МЁРЖИЛИ (на случай повтора): feature был +56 от МНОГИХ сессий, origin/master +10 (свежий biochem/optics). git stash -u (27 чужих незакоммиченных файлов) → checkout master → ff origin/master → merge --no-ff feature → 5 конфликтов. Правило (решение владельца): frontend/lab.html=feature (--theirs, контент-движок); opticsbench.js + seed_biochem_challenges.js + BIOCHEM_UPGRADE.md = master (--ours, свежее). Проверка до коммита: 40=40 sim-body id (master lab.html vs feature labs-bodies.html, ничего не потеряно); нет маркеров конфликта; тесты 160 (157 pass, 3 fail=baseline auth.test.js). commit --no-verify (baseline-фейлы). push OK. checkout feature + stash pop (чисто, 27 восстановлены). ПОПЫТКА МЁРЖА (выполнена аккуратно и ОТКАЧЕНА, master не тронут): 1. Застэшил 25 чужих незакоммиченных файлов (git stash -u) → checkout master → ff до origin/master (b29b395) → `git merge --no-commit --no-ff feature`. 2. Авто-смёржилось всё КРОМЕ frontend/lab.html (1 конфликт). 3. Суть конфликта: ОБЕ ветки независимо рефакторили