From 1f3fe79abd89b0a2639115685c1b7284ea58e10c Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Sat, 30 May 2026 15:06:57 +0300 Subject: [PATCH] =?UTF-8?q?docs(lab-content-engine):=20=D0=A4=D0=B0=D0=B7?= =?UTF-8?q?=D0=B0=203=20=D1=84=D0=B8=D0=BA=D1=81=20=E2=80=94=20=D1=83?= =?UTF-8?q?=D1=80=D0=BE=D0=BA=20=D0=BF=D1=80=D0=BE=20=D0=BD=D0=B5=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?edit'=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- plans/lab-content-engine/CONTEXT.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plans/lab-content-engine/CONTEXT.md b/plans/lab-content-engine/CONTEXT.md index 9d4331a..5ee20fb 100644 --- a/plans/lab-content-engine/CONTEXT.md +++ b/plans/lab-content-engine/CONTEXT.md @@ -42,7 +42,12 @@ manifest: `{ id, cat, title, desc, preview(string|fn), theory?, bodyId?, mount?( - `loadTheory(id)` — если `get(base).theory` есть → рендерим из него; иначе `THEORY[base]`. - `closeSim()`/`_pauseAllSims()` — дополнительно `LabRegistry.stopActive()` / `destroyActive()`. -## RESUME STATE — Phase 3 done (2026-05-30, latest) +## RESUME STATE — Phase 3 done + FIXED (2026-05-30, latest) +- HEAD=9069d80 (Ф3 + критический фикс). ЗАПУШЕНО, remote синхронен (0 0). +- ВАЖНЫЙ УРОК: коммит fc1139f был СЛОМАН — 2 edit'а (_register-all open-обёртка + lab-init Promise-обработка) не применились (упали по отступу old_string), а я запушил, не заметив. Ревью-агент поймал: lab.html убрал eager-скрипты, но open остался синхронным → ReferenceError на клике. Фикс в 9069d80. ПРАВИЛО: после каждого edit проверять `grep -c` маркера; не пушить пакет без поштучной верификации. +- ТЕПЕРЬ КОРРЕКТНО: open → LabLoader.ensure(id).then(rawOpen); openSim обрабатывает Promise. E2E vm-harness (click→ensure→load→rawOpen, pendulum/stereo:cube/molphys/alias magnetic) ALL PASS. + +## RESUME STATE — Phase 3 done (исходный, до фикса) - HEAD=70762be (Ф3). Ленивая загрузка кода: старт /lab ~530KB вместо ~2.9MB+600KB three.js (~6×). - Новые файлы: `_loader.js`, `_sim_deps.js` (генерированный манифест). Правки: `_register-all.js`, `lab-init.js`, `lab.html` (eager сокращён до каркаса). - Манифест SIM_DEPS: каждый sim → {open, files[], three}. Инвариант (проверен): файл, определяющий open-функцию, ВСЕГДА в files[] (кроме graph — он eager). Self-heal = страховка.