Repository navigation
[1.0] Roadmap: лучший движок продуктовых UI-переходов #106
Description
Activity
- changed the title
[-]roadmap: @labpics/motion → 1.0, лучший движок продуктовых UI-переходов[/-][+][1.0] Roadmap: лучший движок продуктовых UI-переходов[/+]on Jul 10, 2026 - addedenhancementNew feature or requestNew feature or requestand removedenhancementNew feature or requestNew feature or request
on Jul 10, 2026 Baseline 2026-07-10 02:4x UTC и очередность исполнения (овнер-сессия, факты — только remote/CI):
main =
98b2a07: смержен #109 → #98 (projection) закрыт production-срезом: geometry/driver/dom, 96 тестов субпутя (differential-оракулы против flip, fuzz 10k+, интерапшн-матрица), два независимых adversarial-ревью (4-угловое агентное + CodeRabbit: 3 actionable — все закрыты кодом с пинами), пороги от факта (5750 с хронологией двух волн корректности). Полный пакет на мерж-коммите: typecheck ✅ · 2348 тестов ✅ (включая docs-drift) · size PASS ✅ · pack-smoke ✅ (34 субпутя ESM+CJS). Флак wall-clock перф-гарда закрыт по корню (min-of-K, закон #95/#100). Mutation: geometry.ts в скоупе, базлайн PENDING до планового прогона (помечено в конфиге).Открытые PR: только #101 (production baseline / 0.2-контур) — переведён в ready с полным чек-листом, кроме независимого ревью (CodeRabbit был в rate-limit). Сейчас идёт независимое 2-угловое adversarial-ревью (supply-chain/CI + скрипты/доки/гейты), с отдельной проверкой дрейфа против нового main (#101 заменяет ci.yml — не должен потерять projection-fuzz из #109; check-docs-facts не должен покраснеть на README после #109).
Очередность (по фазам мандата):
- A/B: ревью → мерж chore: production baseline — governance, hosted CI и trusted releases #101 → релиз 0.2.0 из main ([0.2] Выпустить актуальный пакет и закрепить release-дисциплину #90); внешний блокер — настройка npm Trusted Publisher ([0.2] Repository rulesets, tag protection и security settings #107, требует владельца npm-пакета); после релиза — consumer fixture из npm, сверка exports/токенов, закрытие [0.2] Выпустить актуальный пакет и закрепить release-дисциплину #90. Параллельно — хвост chore(tests): снять RED-археологию — фактически ложные утверждения о «placeholder» #111 (RED-археология старых тестов; частично закрыта в chore: production baseline — governance, hosted CI и trusted releases #101 и в новых projection-тестах).
- C: [0.3] Единый C¹ continuity-контракт для всех handoff-путей #93 — единый C¹-контракт (следующий крупный срез; драйвер projection уже живёт на
solveSpring(v0)— общий канон готов). - D: [0.4] Browser conformance: Chromium, Firefox и WebKit #102 browser matrix → G: [0.5] Реализовать ./smart поверх стабильного projection #99 smart (после стабильного projection) → далее по фазам роадмапа.
Статусы обновляются только в issues/PR; README не несёт незавершённых планов.
Generated by Claude Code
Уточнение директивы владельца — full user parity + ergonomics floor (2026-07-16)
Это не заявление о текущем паритете. Пользователь, выбравший Lab Motion, не должен терять производственный animation-job, удобство или собирать вручную то, что Motion, Anime.js либо GSAP дают first-class API. Совпадение имён не требуется; требуется равноценный или более сильный пользовательский результат, lifecycle и документация.
Полноценность продукта
- Core animate: N-keyframes/offsets, per-segment и per-property transitions, spring/tween/inertia-decay, delay/stagger, repeat/reverse/mirror/repeatDelay, object/value/DOM/SVG targets, полные playback controls.
- Orchestration: sequences/timeline, labels и relative positions, nested/synchronised timelines, callbacks, seek/scrub и детерминированное logical time.
- Geometry/SVG: динамический arc, произвольный motion path с tangent rotation, path drawing и SVG morphing.
- Layout/presence: FLIP, nested transforms/scale correction, shared elements, enter/leave, interruption и cleanup.
- Input/scroll: hover/press/pan/drag, bounds/momentum/snap/auto-scroll, in-view, scroll-triggered и scroll-linked/scrub/pin сценарии.
- Text: grapheme-safe chars/words/lines, a11y, masks, revert и responsive re-split для DOM-сценариев.
- Hosts/dev UX: framework adapters, native executors, debugging и migration recipes; host-specific возможность получает явный capability или адаптер, а не тихую деградацию.
Лаконичный public UX
Повторяемые взаимодействия должны описываться одной декларацией уровня намерения, условно:
interact(card, { hover: { scale: 1.03 }, press: { scale: 0.97 }, drag: { axis: 'x', bounds: 'parent', momentum: true, snap: 'nearest' }, });
Финальное имя API определяется тестами использования. Требование: один owner/lifecycle, автоматический cleanup/AbortSignal, композиция без ручной склейки recognizer → decay → spring → animation.
Статический interaction-spec компилятор понижает в MotionProgram и оставляет в bundle только использованный feature-cone. Динамический spec сохраняет всю функциональность и платит только за достижимый dynamic-cone. Это прозрачный build-инструмент, не третий runtime-тир: публичные входы остаются
nanoиanimate.Доказательство
- Каждая возможность — use-case + differential/characterization/browser test, не маркетинговая галочка.
- Отсутствующая возможность конкурента остаётся явным P0/P1 gap; её нельзя скрыть сужением README.
- Размер/скорость нельзя выигрывать удалением семантики. Pay-for-use достигается module graph, compiler lowering и tree-shaking; неиспользованная статическая возможность должна стоить 0 B.
- README не имеет права утверждать общий parity шире исполняемой матрицы.
Текущие известные gaps
Публичный
animateпока не объединяет N-keyframes, repeat/mirror, sequence/timeline и object targets в одном lifecycle. Dynamicarcотсутствует; text API пока не равен DOM-level SplitText; богатые scroll/path/layout interaction capabilities ещё не собраны в столь же удобный единый UX.Ergonomics gate
Директива владельца «на 4» означает не календарный срок, а примерно 1–4 строки пользовательского кода на типовое взаимодействие. Hover/press/drag/scroll/layout-композиции не должны вынуждать пользователя вручную связывать recognizer, ownership, cleanup, decay, spring и playback controls. Краткость достигается типизированной декларацией намерения и compiler lowering, а не скрытой потерей возможностей. Редкие сложные случаи остаются доступны через те же composable primitives.
Официальные поверхности для актуальной сверки:
- https://motion.dev/docs/animate
- https://motion.dev/docs/arc
- https://animejs.com/documentation/timeline/
- https://animejs.com/documentation/svg/createmotionpath/
- https://gsap.com/docs/v3/Plugins/
- https://gsap.com/docs/v3/Plugins/Flip/
- https://gsap.com/docs/v3/Plugins/ScrollTrigger/
- https://gsap.com/docs/v3/Plugins/SplitText/
- added a commit that references this issue
on Jul 16, 2026 lemone112 commented
on Jul 22, 2026 ContributorAuthorMore actionsFormula-first roadmap insertion — 2026-07-22
Единый дочерний roadmap: #225.
Порядок в 0.4:
- Correctness: fix(core): устойчивый pole-space solver без потери медленного overdamped-полюса #226 → [core] Разделить физическую валидность spring и бюджеты исполнителей #218 → [spring] C¹-конечная springAsEasing без endpoint-прыжка и повторной валидации #219.
- Compiler math: perf(compositor): root-matched recurrence вместо exp/sin/cos на каждом узле сетки #227 и perf(compositor): локальная энергетическая сетка вместо global worst-case oversampling #228 как измеряемые альтернативы; затем arch(compositor): безразмерный SpringShape Atlas и cache reuse между scale-equivalent пружинами #229.
- Authoring coordinates: feat(spring): точные observable constructors без semantic feel #230 после exact constructors policy.
- Artifact optimization: feat(compiler): serialization-aware portfolio выбирает минимальный сертифицированный artifact #232, используя принятые linear candidates; research(compositor): cubic-Hermite spring artifacts с O(h⁴) error и C¹-сегментами #231 подключается только при browser GO.
- Experimental family: research(core): C² ballistic→critical landing как отдельная аналитическая motion family #233 не блокирует 0.4 и не становится default без perceptual evidence.
Непереговорные ограничения: nano остаётся <=1 KB, semantic feel не входит в engine, full C¹/ownership не ослабляется ради 5 KB, compiler artifacts считаются initial+reachable total, все новые claims идут через #95.
lemone112 commented
on Sep 12, 2026 ContributorAuthorMore actionsПродуктовый срез по намерению владельца от 2026-09-13
В раздел 0.4 — vanilla API для продуктового UI включён дочерний #376: компонентная область
createAnimateScope, локальные селекторы и совместный cleanup. Реализация — #377, final exact headfcc2ed712d0037e452ceb465c6dd462c71b51262. Примеры DOM/React StrictMode/Solid исполняются непосредственно из документации. Полный exact-head CI 7/7 PASS и независимое ревью с устранённым/подтверждённым finding завершены; детали и receipts ведутся только в #376/#377. До merge пункт не считается поставленным в main/npm.Это закрывает один реальный барьер внедрения — ручной учёт анимаций и ошибки размонтирования — без второго движка/ownership SSOT. Новая capability оценивается по полезному сценарию, корректности, измеренной цене и изоляции; она не обязана уменьшать суммарный пакет как perf-only эксперимент. Существующие бюджеты и семантические защиты остаются.
Следующий незакрытый пользовательский разрыв уже имеет владельца: N-keyframes #205, затем их объединение с per-property/sequences и compiler #222. Существующие scroll/follow/state-cascade PR не дублируются. Этот комментарий связывает доставляемый срез с прежним roadmap, не создаёт параллельную стратегию или новый runtime-tier. Временная delivery-ветка очищена; feature PR сохранён открытым без merge/auto-merge.
lemone112 commented
on Sep 14, 2026 ContributorAuthorMore actionsSTRAT-BASE-01 · current-main conservation slice · 2026-09-14
Authority:
agents-config/mainуже содержитlab-motion-production/r11в lifecycleactive; canonical CLAIMSTRAT-BASE-01принят trusted transition probe. Этот комментарий — dynamic evidence у существующего roadmap-owner, не новая стратегия и не замена r11.Current physical base
lab-motion/main = d830deaaa2e413d01689c50c1429efc5541a5000после merge #382 (presence transition). Поэтому старый общий base93278bf…больше не является current integration base. Доказательства старых PR сохраняются только в неизменившейся области; каждый кандидат требует current-main bridge/fresh combined proof перед доставкой.Conservation matrix открытых carriers
PR Класс сейчас Наблюдаемая причина / сохранённое доказательство #382 integrated baseline Уже merged в current main; presence и error range LM173…LM178теперь часть базы. Не интегрировать повторно.#368 ready-for-integration Узкий compiler-only delta ( src/compiler/core.ts+ oracle/changelog), exact old-base CI346803525177/7, formal CodeRabbit APPROVED, PR mergeable с current main. Нужен fresh current-main bridge, не новая гипотеза.#377 ready-for-integration createAnimateScope, production delta локализована вsrc/animate/index.ts; exact CI347231831017/7, substantive review finding исправлен и подтверждён. С #382 product-runtime не пересекается; docs/changelog надо reconciliate на current main.#374 ready-for-integration State cascade/batch + уже включённая decay-rest projection; exact CI 347268563857/7 и независимый review/readback. Product surface отделена от presence; нужен current-main bridge. Не повышать этот API до нового продуктового тезиса автоматически.#375 contained by #374 src/decay.ts,src/behaviors/index.tsи decay-rest oracle функционально уже присутствуют в #374. Формула, оба consumer call-sites и seeded parity совпадают; отдельная интеграция создала бы второй carrier одного изменения. Proof #375 сохранить как evidence contained delta.#380 ready-for-integration, ordered before #379 Strict-Pareto keyframe representation candidate, exact CI 347353587447/7 + последующий v20c perf readback. Не считать старый неудачный A/A NO-GO. Пересекается с #379 поsrc/internal/sample-keyframes.ts, поэтому сначала current-main bridge #380, затем #379 поверх принятого representation.#371 needs-proof Exact CI 346910309077/7 и сильный RED→GREEN/math proof, но сам PR честно фиксирует: независимый substantive review не исполнился из-за rate-limit; GitHub review records отсутствуют. Нужны current-main bridge + independent review, не переписывание механизма.#373 needs-proof Exact CI 34693072399фактически SUCCESS, но formal CodeRabbit остаётсяCHANGES_REQUESTED: публичныеsource/subjecttimeline options имеют слишком широкийunknowncontract; finding не закрыт exact current candidate. Green CI не переопределяет review counterexample.#378 needs-proof · real browser RED Static/unit/fuzz/size/package/Node jobs SUCCESS, но Chromium/Firefox/WebKit RED. Chromium воспроизводимо (включая retries): mid-flight reorder требует maxPending === 1, фактически2. Это browser-contract defect, не runner symptom.#379 needs-proof + conflicts N-keyframes capability полезна, но собственный size admission остаётся RED; browser/package/mutation proof незавершён. Кроме того, старый error LM173конфликтует с merged #382LM173…LM178,src/animate/index.tsпересекается с #377,sample-keyframesс #380. Держать отдельным после bridges #377/#380, как требует r11; aggregate green не может скрыть red admission.#384 conflicts, recoverable Old-base exact CI 347565834097/7 и final reviewer APPROVED, но binding codesLM173…LM175теперь физически заняты merged #382 presence (LM173…LM178). Нельзя mechanical rebase/cherry-pick. Нужна current catalog reconciliation/renumber + affected error/type/package/browser proof.#366 needs-proof · proof-plane owner Public compiler benchmark harness остаётся нужен r11, но current PR draft/UNPROVEN; body/exact-head receipts дрейфовали. Не смешивать его status с product integration candidate. #365 needs-proof · proof-plane owner Paired transform lifecycle benchmark остаётся measurement asset для PROFILE-01, но PR draft и сам требует fresh exact-head CI/review. Не тащить в runtime wave ради «закрытия PR». Minimal integration wave graph
Wave A — чистые/локализованные bridges: #368, #377, #374 (включая contained proof #375), #380. Цель — не merge по одному вслепую, а восстановить каждый на
d830deaaa…, проверить фактические semantic overlaps и получить свежий совместимый current-main candidate graph.Wave B — закрыть конкретные доказанные gaps: #378 browser
maxPending=2; #371 independent review; #373 still-valid public-type/review finding. Исправлять только подтверждённую причину, не ослаблять assertions/contract.Wave C — конфликтные feature carriers: #384 после current error-catalog reconciliation; #379 отдельно после #377/#380 и только с собственной size/semantics admission. Ни один из них не получает green через чужой aggregate.
Proof plane: #365/#366 сохраняются как owners измерительной части будущего PROFILE-01 и обновляются отдельно от runtime wave.
Инвариант следующего шага
Ни один старый PR не закрывается по возрасту и не force-push’ится. Ни один historical green run не называется current-main proof. #375 не дублируется. #382 считается baseline. Следующий технический срез — построить current-main bridges Wave A и проверить их совместимость; merge/release/deploy этим STRAT-BASE slice не разрешены.
lemone112 commented
on Sep 14, 2026 ContributorAuthorMore actionsSTRAT-BASE-01 · exact current-main readback · 2026-09-14
Этот receipt уточняет предыдущую conservation matrix после реальных current-main bridges. Authority product base остаётся
d830deaaa2e413d01689c50c1429efc5541a5000(merged #382 managed Presence). Никакой product merge этим комментарием не разрешается.Fresh bridge proof
Source Current-main bridge Exact head Authoritative CI Readback #368 compiler no-reparse #394 31acc446ccf8b43b8dabfe50894fcd0bcfa1fb09348125288527/7 SUCCESS: verify + Chromium/Firefox/WebKit + packed Node22/24 + aggregate #380 implicit identity #395 cf5aeca702b76a715a380e75e1843eb307fa2da5348126089447/7 SUCCESS на fresh synthetic current-main tree #374 state cascade + contained #375 #396 7c1ef333ad9db34bf8dc957dad04c6ad0c46c9ef348126411967/7 SUCCESS, Presence и cascade одновременно в tree #377 component scope #397 5438dafdcaac134713eebf82a679c394bbeb21ab348126916507/7 SUCCESS, Presence + scope + package/browser corpus Для каждого run были прочитаны фактически исполненные jobs, а не только aggregate badge.
Live drift, который реально поймала защита
Во время построения #395 исходный #380 сдвинулся
0b01ae2b34db2b78c11acf9c4242e73538717c95 → 9f959173b990787c2baa6808b41f5af3d753494e. Это был не только merge-base/doc drift: изменилсяsrc/internal/sample-keyframes.ts(non-finite normalization). Старый exact-byte proof не был автоматически перенесён. Bridge перестроен из свежего GitHub synthetic mergeca397afe3efc300995e406cd1d357f6acc2182c9/ tree427a4bd33c26d60f92e87b0611ed9bd8c3f2ba6a, затем fresh CI полностью зелёный.Это подтверждает рабочий drift invariant: authority tuple drift → пересчитать affected closure, а не доверять старому green.
#378: gap уже локализован до владельца
Старый browser RED не инфраструктурный: при повторном reorder до settle physical pending frames были
2вместо1. Корень находится вcreateProjection: generation-гард делал старый callback семантически inert, но физическая rAF reservation оставалась, а новыйplay()создавал вторую.Current-main bridge #398 (
f0d61f6593b4041f14a28217f7a1f76bb4b2ad0e) исправляет общий owner, не recipe workaround: один projection controller держит максимум одну физическую reservation, новый run заменяет логический tick. Guarded carrier34813355778уже дал GREEN на projection driver + DOM projection + reorder unit corpus и полном typecheck. Full authoritative browser/package CI #398 остаётся отдельным незавершённым proof и потому пока не переводит #378 в ready-for-integration.Minimal remaining gaps после STRAT
- fix(value): непрерывное слежение без зависания при потоке целей #371: current mechanism имеет old-base 7/7 CI, но отсутствует независимый substantive GitHub review. Нужны current-main bridge + review.
- feat(waapi): нативные scroll/view timelines без покадрового JS #373: old-base CI зелёный, но formal review всё ещё содержит substantive public-type finding по timeline
source/subject; нужен current-main fix/review, не dismissal через CI. - feat(behaviors): управляемая сортировка списков и сеток с клавиатурой и RTL #378/fix(projection): один pending frame при mid-flight retarget #398: root fix prepared + targeted GREEN; ждём full unchanged authoritative graph и review.
- feat(bindings): связать смысл компонента с движением без второго store #384: механизм/old-base proof сильные, но merged Presence уже владеет
LM173…LM178; binding error catalog требует current reconciliation и affected proof. - feat(animate): многоточечные переходы с единым управлением и native execution #379: остаётся отдельным после feat(animate): локальные анимации и безопасный cleanup компонента #377/perf(keyframes): убрать таблицу одинаковых функций и сократить память #380; собственный size admission RED и error/sampler overlaps нельзя компенсировать combined green.
- test(bench): перенести парный transform lifecycle на current main #365/test(perf): замкнуть публичный Surface benchmark с проверкой фаз и происхождения #366: measurement/proof plane, не runtime integration; оба сохраняют explicit remaining proof.
Conservation / ordering result
#382 = baseline;#375 ⊂ #374; #380 идёт перед #379; #384 не mechanical rebase; красные #378/#379 не маскируются зелёными соседями. Все r10 stable node IDs и входящий Lab UI dependency наRELEASE-01сохраняют прежний смысл.STRAT-BASE-01 этим срезом имеет требуемый code-level graph, exact current bases/heads, фактический CI readback и named minimal gaps. Следующий причинный frontier по r11:
MOTION-CONTRACT-01,PROFILE-01,INTEGRATE-01; бизнес-порядок исполнения — сначала собрать доказанный combined candidate из пригодных частей, параллельно не подменяя contract/profile новым API.37 remaining items
lemone112 commented
on Sep 21, 2026 ContributorAuthorMore actionsTOOLING-01 — playground переиспользует тот же артефакт; review finding закрыт кодом
Live r11 по-прежнему делает
TOOLING-01допустимым параллельным фронтом, покаPROFILE-01аппаратно заблокирован. Stacked PR #441 теперь на exact head85ce12b6b43dc99072c3309fbea64249fce34fcdповерх #4406b1bb1e4….Фактически закрыто на candidate:
- literal recipe имеет один owner в
docs/compiler.md; acceptance и browser setup получают его прямымreadCompilerNanoRecipe(ROOT); - runnable playground больше не создаёт отдельный compiler/showcase path:
browser/fixtures/compiler-playground.htmlимпортирует уже построенныйbrowser/.artifacts/compiled.js, который существующий browser setup собирает из тех же docs-bytes; - первый showcase-вариант честно отброшен после falsifier
35589394268: strict CSP мешал platform-trustedcommitStyles()в WebKit; вместо ослабления CSP/runtime удалён лишний tooling owner; - независимый review head
a039b5c9…нашёл реальный ложноположительный oracle и риск fence parsing. Head85ce12b6…добавляет независимый line-oriented docs oracle, deliberate mutant для обоих consumer bindings, fail-closed missing-marker/missing-block/unclosed-fence cases и поддержку более длинного Markdown fence для embedded ```; - финальный PR graph
35591756913полностью green: verify, Chromium, Firefox, WebKit, packed Node 22.0.0/24 и fail-closed aggregate. Artifact10634079667,sha256:407e3abf24ddae037004f3f74ba9bb321b8b68d03ba94841744fd9ef51c0d3ea. Production/package runtime delta остаётся0 B; showcase-specific compiler слой удалён.
Классификация остаётся BLOCKED/UNPROVEN, не GO: artifact выше собран с PR merge-ref
a333e31b…, поэтому ещё нужен immutable authoritative run на exact head85ce12b6…; fresh independent review этого exact head также не завершён — CodeRabbit подтвердил текущий included-limit (следующий слот ~51 min), а альтернативный Codex tunnel в этом run вернул transient 429. После этих proof-gap стек #440→#441 всё ещё должен быть интегрирован вmainс exact-main package/CI readback прежде, чемTOOLING-01можно считать done. Merge/auto-merge не выполнялись.- literal recipe имеет один owner в
lemone112 commented
on Sep 21, 2026 ContributorAuthorMore actionsTOOLING-01: no-tooling / SSR obligation closed by existing owners
Проверил последний оставшийся содержательный exit-пункт r11 без добавления ещё одного механизма. На стеке #440 -> #441 exact head
85ce12b6b43dc99072c3309fbea64249fce34fcdtooling остаётся вне production package: оба PR меняют только docs/scripts/browser/tests, аpackage.json#filesотгружаетdistи выбранные docs, но неscripts/,browser/илиdocs/compiler.md. Значит parser/trace/playground не становятся runtime/AI dependency и shipped delta остаётся0 B.Существующий package-owner уже даёт нужный независимый falsifier, поэтому новый тест не нужен:
scripts/pack-smoke.mjsделает реальный pack/install и под Node импортирует каждый zero-dependency public export отдельно через ESM и CJS, затем проверяет исполняемую spring-семантику; в PR graph35591756913шагиSize gate,Pack smoke,Consumer compatibility, Node 22/24 и все browser jobs завершились SUCCESS. Это закрывает содержательную обязанностьSSR/production без tooling/AI сохраняют поведение и budgetsпереиспользованием существующих владельцев, без второго SSR/tooling oracle.TOOLING-01всё ещё не DONE и стек всё ещёBLOCKED/UNPROVENпо G-DELIVERY: нужны fresh independent review exact85ce12b6…, immutable authoritative exact-head run вместо PR merge-refa333e31b…, затем разрешённая интеграция #440 -> #441 вmainи exact-main readback. Merge/auto-merge не выполнялись.lemone112 commented
on Sep 21, 2026 ContributorAuthorMore actionsTOOLING-01 — immutable exact-head graph закрыт для обоих слоёв стека
Пока PROFILE-01 остаётся на transient independent-review blocker, продвинут параллельно ready
TOOLING-01без нового production-механизма. Live stack сейчас: #440 exact head99071590bb95439db8453abd5f4ed274c95d0401→ #441 exact headf8886d211acf10c960a0b81d7670690128f73647.Закрыт прежний G-DELIVERY gap immutable execution:
- tooling: показать владельца, путь и причину отказа компилятора #440:
workflow_dispatchrun35623401885, exact@99071590…, 7/7 SUCCESS (verify + Chromium/Firefox/WebKit + Node 22.0.0/24 + aggregate); artifact10651450020,sha256:bac4af8861c2359c5a70fc85435e6935e7793dae4111f52164808638a631f0da. - Связать документацию, трассировку и браузерную проверку единым рецептом #441:
workflow_dispatchrun35623407801, exact@f8886d21…, 7/7 SUCCESS; artifact10650575688,sha256:0b75c777d61a950232a3d8be20c13fae281ba1980fec86d8d890cb7d286e1d63.
Текущий trace-head также закрывает прежние concrete findings без второго owner: executable ambiguous-owner refusal,
schemaVersion: 1+ fail-closed unknown-version control, а practical command живёт в существующемdocs/recipes.md, contract остаётся вdocs/compiler.md. Stacked head сохраняет literal recipe/playground и same-artifact wiring. Production/package runtime delta остаётся0 B; protected size/package/browser/consumer graph не ослаблялся.Классификация всё ещё BLOCKED/UNPROVEN, не GO: fresh independent review exact heads
99071590…иf8886d21…сейчас rate-limited; старые CHANGES_REQUESTED/APPROVED не переносятся. После свежего approval bounded stack сможет стать GO, но самTOOLING-01доdoneвсё равно требует разрешённой интеграции #440→#441 вmainи exact-main package/CI readback. Merge/auto-merge не выполнялись.- tooling: показать владельца, путь и причину отказа компилятора #440:
lemone112 commented
on Sep 21, 2026 ContributorAuthorMore actionsTOOLING-01 — fresh review falsifier fixed; exact-head proofs restored
Authoritative r11 node remains in progress / BLOCKED-UNPROVEN. This run stayed on the existing #440→#441 packet rather than starting another tooling mechanism.
Fresh independent full review of #440 through
99071590bb95439db8453abd5f4ed274c95d0401found one real remaining contract defect: docs describedrefusalonly for runtime records althoughrecordTrace()always emits the field (nullforcompiled, non-empty reason forruntime). No runtime/product code was implicated.Bounded repair:
- tooling: показать владельца, путь и причину отказа компилятора #440 head
8c392626538d52aebf9506e050a9e11981da8ecenow documentsrefusalas mandatory in both variants; CodeRabbit marked the findingAddressed in commit 8c39262; all current tooling: показать владельца, путь и причину отказа компилятора #440 review threads are resolved. - The same contract bytes were propagated to stacked Связать документацию, трассировку и браузерную проверку единым рецептом #441 head
5ffc71b8f76ca523d5efaa64db4ea1b59d901a42; Связать документацию, трассировку и браузерную проверку единым рецептом #441 is mergeable again and existing review threads remain resolved. - production/package/runtime delta for this repair: 0 B / 0 behavior change.
Immutable exact-head authoritative CI was re-run after the repair, not inherited from previous heads:
- tooling: показать владельца, путь и причину отказа компилятора #440
8c392626…: run35628503095, full graph 7/7 green (verify/package, Chromium, Firefox, WebKit, Node 22.0.0, Node 24, aggregate CI); artifact10653891010,sha256:a5559b391da54f920696b3c3dca93700acc07a83dc6b925627f42932029ecb0a. - Связать документацию, трассировку и браузерную проверку единым рецептом #441
5ffc71b8…: run35628573482, full graph 7/7 green; artifact10654410553,sha256:5d0ffd72a5c3a77cba6f98aaa9c09ddc406c131980fa67e938dda137c53dabe2.
The bounded packet is not GO yet. The only remaining packet proof is a fresh independent full review of the exact repaired heads. CodeRabbit consumed the current organization window on the full #440 review and reports the next included review in ~56 minutes; the post-fix delta was independently recognized/resolved, but that is not being promoted to a full exact-head approval. This is a transient external proof blocker, not a NO-GO.
Exact remaining gap:
fresh independent exact-head review #440/#441 → packet GO; after thatTOOLING-01itself still requires allowed integration tomainplus exact-main package/CI readback. No merge/auto-merge performed.- tooling: показать владельца, путь и причину отказа компилятора #440 head
lemone112 commented
on Sep 21, 2026 ContributorAuthorMore actionsTOOLING-01 — review falsifier closed, stack exact-head proof restored
Live authority remains
agents-config/plans/lab-motion-production/ACTIVE.md → r11;lab-motion/mainis still2c947007168d4964124db8ce8079bbfabc975687, so open PRs are not integrated state and r11's explicit no-merge/auto-merge boundary remains binding.This run continued the existing #440→#441 packet and closed a real fresh-review defect instead of starting another candidate:
- Fresh tooling: показать владельца, путь и причину отказа компилятора #440 review on
8c392626…found that runtime trace could represent a missing/emptyrefusal; tooling: показать владельца, путь и причину отказа компилятора #440 now73e72e2ecab04b0755d5d3fea7ee1a1727a920ecrejects both fail-closed, with executable zero-owner / ambiguous-owner / no---tracecontrols. Simplicity pass removed an unnecessary compiled-refusal rejection branch instead of growing another test/mechanism; compiled output remains canonicalrefusal: null. - Focused repair suite: 8/8 PASS. Fresh independent full review exact
73e72e2e…completed with no blocking or non-blocking findings (#440comment5768682158). - tooling: показать владельца, путь и причину отказа компилятора #440 immutable exact-head
workflow_dispatchCI35665332738: 7/7 SUCCESS; artifact10668622908, digestsha256:fea073cbb0354cd59e056c9eb499c70a5fd4c8f73b2d064c1765c7129bbaed4d. Source packet classification: GO / integration-blocked. - Stacked Связать документацию, трассировку и браузерную проверку единым рецептом #441 was synchronized by ordinary merge, no force push, to
be0866610692360f5b760bae0c452bc4fd0b9074over exact tooling: показать владельца, путь и причину отказа компилятора #44073e72e2e…; focusedcompiler-tooling-trace + compiler-doc-recipeproof is 15/15 PASS. - Связать документацию, трассировку и браузерную проверку единым рецептом #441 immutable exact-head
workflow_dispatchCI35665341439: 7/7 SUCCESS; artifact10668658039, digestsha256:18adc0488598c3d8917ad78f1962368a88b32c84b6d3519e6e7fafe737565b9a. - Fresh independent review of exact child
be086661…was requested only after upstream review passed; CodeRabbit returned confirmedReview rate limited, so Связать документацию, трассировку и браузерную проверку единым рецептом #441 remains BLOCKED/UNPROVEN on exactly that review, not NO-GO.
Production/package/runtime delta remains 0 B.
TOOLING-01cannot bedoneuntil the stack is separately authorized for integration intomain, followed by exact-main readback; no merge/auto-merge was attempted.- Fresh tooling: показать владельца, путь и причину отказа компилятора #440 review on
lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsTOOLING-01 evidence receipt, без изменения plan-status: PR #441 current head
ae1b134be49bea910b28619828ea931cf55f23e7имеет source treee352a30261e9db472f393f324831fd8cdf6bca8d. PR CI35673633336завершён 7/7 SUCCESS; его synthetic merge1a7b5daa7480a6dd5e5e04f93dbd1020fe1122b5имеет тот же tree, поэтому проверен byte-identical candidate source. Package artifact10672220864, digestsha256:aece1a26dc3ab2083eab7e903fa51f8516b5ada80046d71e74d78993d9ea8d0a, workflow receipthead_sha=ae1b134b…. Оба inline findings resolved. Remaining source-packet gap ровно один: fresh independent review exact current head; Claude review уже запрошен. Merge/main integration не выполнялась: authoritativelab-motion-production/r11отдельно запрещает merge/auto-merge.lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsJOURNEY-01 evidence receipt, без изменения plan-status: stack #431→#435→#436 синхронизирован с current main; PR #436 current head
e401b0e7759b0bfd4142b7ac9a1ed649f7263f60имеетbehind=0, exact-head CI run35681074516завершён 7/7 SUCCESS, package artifact10675143423с digestsha256:a4da8af10ce730eb0e2eaaad8cb2a2531b0c2ccd5c090b6e8ffba82dd8b85f87. Product content был независимо APPROVED на6bb93273e8412f6064fe1aba75b4ad0468cc7315; fresh CodeRabbit readback 2026-09-22 явно сравнил6bb93273… → e401b0e7…и пропустил повторное review, потому что synchronization delta не содержит reviewable changes. Все review threads resolved. Source packet поэтому current-head proven/GO, но JOURNEY-01 не закрыт: authoritativelab-motion-production/r11отдельно запрещает merge/auto-merge. Exact remaining exit gap: отдельный merge-допуск → dependency-order integration #431→#435→#436 → exact-main required graph/artifact readback → canonical status transition.lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsTOOLING-01 receipt — current source packet GO / integration-blocked
#441 exact head
67a0ff0a74370dbc847296d0a7296f37a5a93970, tree488a2213b3b3234953f34426dcad1d3e91852dfd.- Fresh review predecessor выявил 2 реальных policy-дефекта
docs/compiler.md(русский язык + Diátaxis); исправлены без изменения literal recipe или production/runtime. - Fresh exact-head review
649dfc68-c5a1-474c-a6b8-17d5df4300c7: no actionable comments; pre-merge policy 9/9 passed. - CI
35692333635: authoritative graph 7/7 SUCCESS. Synthetic checkoute08237a302c2eb21b60a0cac80b75895fc7114a6и exact head имеют один tree488a2213…, то есть исполнен byte-identical candidate source tree. - Artifact
10679511496,sha256:43a56865147b109d439721b1ea6b8f0dd61aff81d9ceef1742a111559dcac33c,workflow_run.head_sha=67a0ff0a…. - Production/package/runtime delta:
0 B; size/package/consumer/compiler/browser gates green.
Verdict source packet: GO / integration-blocked.
TOOLING-01неdone: current authoritative r11 запрещает merge/auto-merge; remaining exit gap — отдельный merge-допуск → dependency-order #440→#441 → exact-main readback/post-merge graph → canonical plan transition.- Fresh review predecessor выявил 2 реальных policy-дефекта
lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsPROFILE-01 frontier receipt (2026-09-22): source packet #412 closed unmerged at
dd1655326bdc2073e6c5d0509747ba454bb21da4after exact-head CI35697100075PASS but preregistered pilot35697094082falsified the current desktop scene method (direct-manipulation-sheet:sheet interruption reached a settled predecessor). Calibration itself PASS withcandidateSamples=0; immutable failure artifact10681376558, digest04954587f21eacc76c362fffea42abcd4e5892a7ad4597d61745374f422c16db. No rerun/retiming-to-green: this family may reopen only with an independently justified premise change; PROFILE-01 node remains in progress and SELECT-01 remains blocked.lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsPROFILE-01 canonical status receipt — IN PROGRESS; SELECT-01 remains blocked.
Connected closure: predecessor #412’s
sheet interruption reached a settled predecessorwas root-caused to a deterministic zero-release scene construction, which independently changed the premise. Successor evidence carrier #442 exact headcc0d8891aa67de581b0b57a65a78ea7b3a80fa8cthen proved the old exact-snap degeneracy avoidable withcandidateSamples=0and 0 B production/runtime/package delta. Dedicated run35702784754SUCCESS, artifact10682986570, digestsha256:3c4b4706b13215e237d9ec487f874ea61595c75fcec7aeb14db72724210231fb; standard exact-head CI35702812449SUCCESS.But v2 is NO-GO / proof lower bound, not GO: its receipt shows WebKit at interruption still
value=260, velocity=0while onlyphase=release, and independent exact-head review found that actual release velocity is not independently observed and a post-deadlinesched.drain()can conceal failure of the terminal deadline. No candidate samples were admitted, and v2 will be closed unmerged rather than patched/rerun to green.Exact remaining PROFILE-01 exit gap: separately preregister a successor premise with an independent observable movement/velocity oracle plus terminal-at-deadline law, prove it before candidate acquisition, then complete the r11 desktop/mobile evidence cells and canonical admission. No main/integration claim changes; r11 merge/auto-merge ban remains authoritative.
lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsPROFILE-01 frontier update — observable oracle v3 NO-GO.
PR #443 exact head
484ececb493fbb81acf7725444a931c47b3ca666; dedicated exact-head run35708030265; artifact10685965697; digestsha256:f58d4f87053dfb78298d1fe36f5fae4cc28634b9568cd6c46828beaf3e50c243;candidateSamples=0; production/runtime/package delta0 B.v3 removed #442's host-rAF ambiguity with a deterministic injected 16ms clock and replaced phase-only evidence with independently derived public-value movement. All Chromium/Firefox/WebKit then reached the same falsifier at the frozen
1000mshard deadline:{ value: 329.12678477177, velocity: -296.11617836962677, phase: 'release', snapIndex: 1 },pending=1. No post-deadline drain exists. Therefore the 1000ms terminal premise is false and must not be rerun/retimed to green.Canonical status remains
PROFILE-01 = in progress,SELECT-01 = blocked by PROFILE-01. Exact next proof gap: derive terminal observation bound/policy independently from the frozen default spring +CONVERGENCE_THRESHOLDcontract before any new samples, then qualify that oracle and continue the remaining desktop/mobile PROFILE cells. Main stays2c947007168d4964124db8ce8079bbfabc975687; r11 still forbids merge/auto-merge.lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsPROFILE-01 frontier update — v4 exact-head proof закрывает terminal-bound + M-06 scalar handoff, но пакет пока UNPROVEN по review.
PR #444 exact head
338e4e8ee85176e0ef869d88f8fa0378665ab361, tree45bf8778cef9d78a4e4060b6135065bb9db60e64, base/main2c947007168d4964124db8ce8079bbfabc975687. Pre-sample preregistration остаётся immutable: exported contract SHA-256c212c4fa2f374541081e557261841a8cd0b2df20a10df8fe4f3edcd91842a5f3, derived hard terminal boundary1548ms, post-deadline drain/retiming запрещены.Dedicated exact-head run
35715998778PASS; artifact10689955058, digestsha256:5339ec38105750f978e391cfa7bc9fd6053f98d9ecd47f155e656f587522918e. Chromium149.0.7827.55, Firefox151.0, WebKit26.5достигают exact terminalsettle/300/index1/velocity0,pending=0к derived deadline. После review-контрпримераvelocity: vel → 0добавлен отдельный validator: у всех трёх движковatInterruptVelocity = afterInterruptVelocity = 984.4845227269303 px/s; zero/reverse/discontinuous controls обязаны RED. Production/runtime/package delta0 B.Mandatory PR graph
35716002490полностью SUCCESS: verify/package, Chromium, Firefox, WebKit, Node 22.0.0, Node 24 и fail-closed aggregateCI. PR synthetic merged041640e7200777f6dc65801fd4481d58864bfccи exact head имеют один tree45bf8778...; package artifact10690455306, digestsha256:ce23514c16a2ccb73ecc54d9a3e3d59551e8aeed92fcc223be2e65ff70b5260d.Canonical status не меняется:
PROFILE-01 = in progress,SELECT-01 = blocked by PROFILE-01. Exact remaining gap этого пакета: fresh independent review текущего338e4e8...и disposition старых policy/test findings; Claude review запрошен в #444 (5774935157), CodeRabbit refresh временно rate-limited. r11 по-прежнему запрещает merge/auto-merge, main не менялся.lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsPROFILE-01 frontier update — v4 exact-head repair доказан CI, пакет остаётся UNPROVEN только по fresh broad review.
#444 exact head
3a18d9544cb15e60ff5aca3d8b40004c4a547a95, base/main2c947007168d4964124db8ce8079bbfabc975687. Major review gap закрыт: receipt validator требует точный уникальный набор Chromium/Firefox/WebKit, derived terminal1548ms,pending=0и полный terminal state; CodeRabbit independently отметил thread addressed in3a18d95. Frozen pre-sample contract SHA-256 не менялся:c212c4fa2f374541081e557261841a8cd0b2df20a10df8fe4f3edcd91842a5f3; production/runtime/package delta0 B.Dedicated exact-head
35723424791SUCCESS → artifact10691449874,sha256:73d9c934fb39b0e26e51f70c0cbebc685b3747e3ca7d0e71f3726a2a6e689ec7. Mandatory CI35723428489SUCCESS across the full executed graph, including three browser conformance jobs → package artifact10691799591,sha256:2206c899dc9c2aa7f0c88f1442faf7869d471d994d329ad9caeee08e35d37c65.Canonical status remains
PROFILE-01 = in progress,SELECT-01 = blocked by PROFILE-01. Immediate exact gap for this packet: fresh broad independent review of3a18d954…; CodeRabbit request is pending its included-review window. Even after review, r11 separately forbids merge/auto-merge, and PROFILE-01 still has remaining physical/mobile profile cells before node exit.lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsPROFILE-01 уточнение к receipt
5775967850: не считаю broad review единственным integration-гейтом. На #444 остаётся policy error CodeRabbitкраткие русские документациидля английских описательных строк внутри pre-sample frozen contract; обход/Ignore не применялся. Перевод этих строк постфактум изменил бы committed preregistration SHA-256 и ослабил anti-tuning proof, поэтому до независимого verdict это отдельный unresolved policy/evidence conflict, а не повод переписать evidence-to-green. Также остаётся architecture warning о смешении pure preregistration и CLI transport. Full review2bbe1e58-f475-4d55-8625-a2abbca216e4сейчас проверяет exact range2c947007…→3a18d954…; canonical status остаётсяPROFILE-01 = in progress / UNPROVEN, main не менялся.lemone112 commented
on Sep 22, 2026 ContributorAuthorMore actionsPROFILE-01 frontier update (2026-09-22): #444 exact head
4ff11eedc34c84b391c8334344293ede1af2bf7enow has dedicated profile PASS (35729950915, artifact10694929670,sha256:d01f5895684250871f476f569d17fb724b1af8160186fe2303de01d53746c6bf) and full mandatory exact-head CI PASS via workflow_dispatch (35730431159, package10694499839,sha256:9a599f27a3f96d4cf862a3f59bd353d03874e946a95f90d09d1af45413e8deb0). Fresh broad review produced 4 actionable provenance/oracle findings; all are fixed and independently marked Addressed/Resolved, unresolved threads = 0. Desktop interrupt/derived-terminal packet = GO,0 Bproduction/runtime/package; node PROFILE-01 remains IN PROGRESS because physical Android/iOS cells + admission are still required. No merge: authoritative r11 still forbids merge/auto-merge.
Продуктовая позиция
@labpics/motion— headless motion kernel для продуктовых интерфейсов и дизайн-систем: физически непрерывный при любых прерываниях, compositor-first для автономных переходов, модульный и детерминированно тестируемый.Цель не формулируется как «больше эффектов, чем у всех». Победа измеряется качеством реальных UI-переходов, ценой поставки, доказанностью контрактов и скоростью сборки прикладного поведения.
Северные метрики
NaN/Infinityна публичных выходах;Математический и compiler-срез 2026-07-22
Новые задачи встроены в существующую архитектуру, а не создают параллельный roadmap:
Сначала — корректность физического домена
duration/bounce;springAsEasing, запечатать finite spring в C¹ и убрать повторную validation на sample;light/heavy/playfulне становятся законами engine.Затем — common consumer cost
<=5 KB initial+totalбез третьего runtime-tier;NanoProps/NanoOptions;Явные no-go
animate/mini|native|lite;./animateобязан стать 5 KB;0.2 — доверие и поставка
0.2.0без ожидания будущих layout-фич — [0.2] Выпустить актуальный пакет и закрепить release-дисциплину #90;main.0.3 — единое состояние и доказуемость продукта
gesture → decay → spring → compositor → liveне обнуляет скорость — [0.3] Единый C¹ continuity-контракт для всех handoff-путей #93;0.4 — лучший vanilla API для продуктового UI
./nanoи./animate; adapter architecture и compiler-driven pay-for-use не создают третий тир — [0.4] Epic: compiler-driven common motion ≤ 5 KB без третьего runtime-tier #220;0.5 — layout и smart transitions
0.6 — прикладные behaviors и scroll
0.7 — глубокие framework adapters
0.8 — объяснимость и инструменты
Условия 1.0
Методы инженерной приёмки определены в Lab Motion r14. Проверки исполняются на self-hosted de-04; сведения о реальных внедрениях и исследованиях публикуются по фактическим наблюдениям.
Правило ведения
Это единственный продуктовый roadmap. Детали реализации, статус и очередность живут в связанных issues. README и архитектурная документация не дублируют незавершённые планы.