Skip to content

feat(motion): объединить сценарии интерфейса и проверки движения - #471

Merged
lemone112 merged 102 commits into
mainfrom
combined/journey-conform-20261004-v3
Oct 5, 2026
Merged

lemone112 merged 102 commits into
mainfrom
combined/journey-conform-20261004-v3

Conversation

@lemone112

@lemone112 lemone112 commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Сохраняет текущее движение, подписки и освобождение ресурсов при повторном входе из callback. Передача движения композитору учитывает новую цель, stop() и destroy(), выполненные во время этой передачи. Шесть самостоятельных примеров и браузерные сценарии используют публичный пакет; запись измерительных артефактов отделена от валидатора PROFILE.

Кандидат fc2a579176078cc68b1ca63ea31de825bfaabe54, база 91fce3d0596c23b7a8298b627aad687263ad73a4. Независимая проверка всех 720 путей объединённого дерева подтвердила сохранность обеих веток, включая обновления зависимостей из main и #478.

Проверки:

  • Обязательный Linux CI: unit/fuzz, driver mutation, Chromium, Firefox, оба набора WebKit, сборка, размер и consumer contract на Node 22.0.0/24 — PASS.
  • Локальные typecheck, build, документация, size, pack smoke/compatibility и compiler acceptance — PASS. Полный Windows Vitest: 5136 PASS, 6 FAIL, 23 skipped; пять отказов связаны с платформой, медленная фаза отдельного Git timeout не установлена. Эти результаты не обозначаются как Windows GREEN.
  • Независимые проверки lifecycle, архитектурных границ и сохранности интеграции завершены. CodeRabbit одобрил точный fc2a5791 5 октября 2026, 15:23 UTC; открытых substantive threads нет.

Активный план — lab-motion-production/r13. Слияние сохраняет открытыми измерительные и продуктовые условия этого плана: полный cost profile, физические мобильные клетки, bfcache и последующие узлы требуют собственного evidence. Публикация npm выполняется отдельным ручным release workflow.

Связано с #462, #463, #464, #465, #466, #467, #468, #469, #470, #472, #474 и #478. Поглощённые PR закрываются после проверки сохранности в main. Репозиторий использует squash и линейную историю; откат поставленного изменения — обычный revert итогового коммита через PR.

Claude Code added 30 commits October 1, 2026 02:13
Закрепить общий owner подписок и native/live handoff без нового solver/store.
Сохранить late getter/reentry, корректный focus через закрытых предков и
все прежние byte/lifecycle guards. Проверять полное полезное движение,
raw intervals, chronology и точную tail-статистику существующего benchmark.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pre-merge checks failed. Please resolve the failing checks before merging.

@lemone112 lemone112 changed the title fix(motion): preserve live intent in integrated consumer lifecycle feat(motion): объединить сценарии интерфейса и проверки движения Oct 5, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pre-merge checks failed. Please resolve the failing checks before merging.

@lemone112

Copy link
Copy Markdown
Contributor Author

@coderabbitai В ac38040e82ac707802480a193ab53b8d1d6875ed переведены оставшиеся описательные термины в docs/api.md и docs/behaviors.md. Имена API и ссылки сохранены; проверка расхождения документации с кодом и независимое ревью перевода прошли.

Два предупреждения сопоставлены с первичными источниками:

  • MotionValue остаётся единственным писателем своей версии намерения. Поле _epoch помечено @internal и отсутствует в опубликованных декларациях dist/**/*.d.ts. CompositorSpring читает версию перед недоверенными callbacks и проверяет её перед передачей владения. Проверки повторного входа сохраняют новое намерение. Дополнительный accessor сам по себе не меняет ни владельца состояния, ни эту проверку; конкретного пути нарушения от чтения внутренней версии не установлено.
  • Актуальный ACTIVE.md выбирает r11. Его PROFILE-01 прямо задаёт: «Write: существующий bench owner [0.3] Воспроизводимый benchmark dashboard против Motion, GSAP и Anime.js #95/feat(compiler): serialization-aware portfolio выбирает минимальный сертифицированный artifact #232 и воспроизводимые профили». Файлы bench/profile/*registration.mjs импортируются runner, validator, тестами и workflow этого пакета; docs/server-profile.md объясняет запуск и проверку этих инструментов. План и его lifecycle остаются в agents-config. Перенос исполнимого контракта измерений в другой репозиторий создаст новую зависимость и не следует из этого правила.

Прошу перепроверить замечания с учётом точного кандидата и этих границ владения. Вывод о причине прежнего зависания WebKit после завершения тестов остаётся неполным; последующий зелёный запуск не объявляется доказательством его исправления.

@coderabbitai

coderabbitai Bot commented Oct 5, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
git rev-parse HEAD
git show --stat ac38040e82ac707802480a193ab53b8d1d6875ed
ast-grep outline src/motion-value.ts --items all
ast-grep outline src/compositor/core.ts --items all --match 'retarget|commit|handoff|epoch'
ast-grep outline test/compositor-return-to-native.test.ts --items all
ast-grep outline docs/api.md
ast-grep outline docs/behaviors.md
rg -n -C3 '_epoch|stripInternal' src/motion-value.ts src/compositor/core.ts scripts/emit-declarations.mjs
gh api repos/Labpics-Team/lab-motion/pulls/471/comments --paginate --jq '.[] | select(.user.login=="coderabbitai[bot]") | {id,path,body}'
gh api repos/Labpics-Team/agents-config/contents/plans/lab-motion-production/ACTIVE.md?ref=c246ed459d6f0b775336fe34feea8d2f6be2b02f --jq '.content' | base64 -d
gh api repos/Labpics-Team/agents-config/contents/plans/lab-motion-production/r11.md?ref=c246ed459d6f0b775336fe34feea8d2f6be2b02f --jq '.content' | base64 -d | sed -n '320,390p'

Length of output: 90833


🏁 Script executed:

#!/bin/bash
set -euo pipefail
git show ac38040e82ac707802480a193ab53b8d1d6875ed -- docs/api.md docs/behaviors.md
sed -n '139,179p' docs/api.md
sed -n '1,42p' docs/behaviors.md
sed -n '630,725p' src/compositor/core.ts
sed -n '899,958p' src/compositor/core.ts
sed -n '1016,1045p' src/compositor/core.ts
rg -n -C2 '\._epoch\s*(\+\+|--|[+*/-]?=)' --glob '*.ts' .
rg -n -C2 'it\(|test\(' test/compositor-return-to-native.test.ts
sed -n '175,285p' test/compositor-return-to-native.test.ts
ast-grep outline docs/server-profile.md
sed -n '1,90p' docs/server-profile.md
rg -n -C2 'from .*registration|import\(.*registration' bench/profile test .github/workflows
rg -n -C2 'preregistration|registration|profile-01' .github/workflows/profile-01.yml
gh api repos/Labpics-Team/lab-motion/pulls/471/reviews --paginate --jq '.[] | select(.user.login=="coderabbitai[bot]" and (.body | test("_epoch|agents-config|registration|регистрац"))) | {id,body}'

Length of output: 55254


@lemone112 Перепроверил исходники на ac38040e82ac707802480a193ab53b8d1d6875ed и план на c246ed459d6f0b775336fe34feea8d2f6be2b02f. Оба предупреждения снимаю. Спасибо за уточнение границ владения.

  1. Чтение MotionValue._epoch не нарушает владение состоянием. В проверенном коде версию изменяет сам MotionValue. CompositorSpring только читает её. Он проверяет версию после компиляции, вызова часов и animate(), до передачи владения. Если версия изменилась, он отменяет непринятый native effect. Тесты содержат проверки новых целей, ABA-перехода, stop() и destroy() при повторном входе. Конкретного нарушения из-за прямого чтения внутренней версии не установлено. Требование добавить accessor было необоснованным.

    Аннотацию @internal и настройку stripInternal: true подтвердил. Сгенерированные декларации опубликованного пакета в этой среде не проверял.

  2. Исполнимый контракт PROFILE-01 обоснованно находится в lab-motion. Закреплённый ACTIVE.md выбирает r11. Раздел PROFILE-01 прямо разрешает работу в существующем bench owner и воспроизводимых профилях. Регистрационные модули используются инструментами измерения, валидаторами, тестами и workflow пакета. docs/server-profile.md описывает их запуск и ограничения результата. План исполнения и его lifecycle остаются в agents-config. Требование перенести исполнимый контракт в другой репозиторий из этого правила не следует.

Изменения перевода в docs/api.md и docs/behaviors.md проверил по diff. В изменённых строках имена API и адреса ссылок сохранены. Изменения смысла не обнаружил.

Причина прежнего зависания WebKit остаётся неустановленной. Последующий зелёный запуск не доказывает её устранение. Тесты и CI в рамках этой перепроверки я не запускал. Снятие двух предупреждений не означает приёмку всего PR.


✏️ Learnings added
Learnt from: lemone112
URL: https://github.com/Labpics-Team/lab-motion/pull/471

Timestamp: 2026-10-05T06:05:49.478Z
Learning: В Labpics-Team/lab-motion поле MotionValue._epoch в src/motion-value.ts — внутренняя версия состояния для защиты передачи владения при повторном входе. Версию изменяет MotionValue; CompositorSpring в src/compositor/core.ts читает и сверяет её после недоверенных вызовов до native commit. Поле помечено internal, а scripts/emit-declarations.mjs использует stripInternal: true. Само прямое чтение этой версии не доказывает нарушения владения и не требует accessor без конкретного контрпримера.

Learnt from: lemone112
URL: https://github.com/Labpics-Team/lab-motion/pull/471

Timestamp: 2026-10-05T06:05:49.479Z
Learning: Для Labpics-Team/lab-motion план lab-motion-production/r11.md в Labpics-Team/agents-config задаёт PROFILE-01: «Write: существующий bench owner #95/#232 и воспроизводимые профили». Исполнимые контракты регистрации измерений bench/profile/profile-01-preregistration.mjs и bench/profile/server-profile-registration.mjs принадлежат инструментам пакета lab-motion; docs/server-profile.md описывает их запуск и проверку. План исполнения и его lifecycle принадлежат agents-config. Это разделение не требует переноса исполнимых контрактов измерений в agents-config.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

lemone112 and others added 2 commits October 5, 2026 04:54
… handoff (#478)

* fix(animate): release terminal target roots and preserve getter reentry

Release completed unit configuration and callbacks from retained public controls. Keep a single live delegate and accepted pause state across lazy requestFrame getters. Extend actual-package presence/scope lifecycle and reference coverage while retaining the unresolved registered heap-band failure.

* fix(animate): release terminal execution state and preserve packed reentry

Retain a single aggregate clock across effectful accessor reentry, including partially failed nested handoff. Release completed unit trajectories and delegates, then drop aggregate execution roots after all slots terminate. Add causal GC and actual-package ESM/CJS regressions without changing existing budgets.

Refs #473. RESOURCE-01, r13; no merge or release authorization.

Implemented by ChatGPT / GPT-6 Astra Pro.

* test(resource): measure retained heap at terminal tail

Keep the historical existing-38 prefix guard unchanged. For the independently registered presence/scope corpus, preserve every prefix as diagnostic evidence but admit retained bytes from a fixed four-read terminal tail after 10k cycles. This removes the proven V8 false RED without widening the A/A band, cycle count, payload or deliberate/live/drop controls.

Refs #473 #478. Current user explicitly requested fixing the gate and taking the stack to merge.

* test(animate): require a single frame clock after nested handoff

---------

Co-authored-by: ChatGPT <noreply@openai.com>
@lemone112

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Кандидат fc2a579176078cc68b1ca63ea31de825bfaabe54 объединяет текущий main и проверенные сценарии Motion. Обязательный CI завершился успешно, включая Chromium, Firefox, оба набора WebKit, mutation, fuzz и проверки устанавливаемого пакета на Node 22/24. Нужен новый содержательный вердикт на этот коммит; прежний CHANGES_REQUESTED относится к eb45089a.

@coderabbitai

coderabbitai Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@lemone112
lemone112 merged commit ee78df3 into main Oct 5, 2026
12 checks passed
@lemone112
lemone112 deleted the combined/journey-conform-20261004-v3 branch October 5, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant