Skip to content

fix(motion): согласовать follow и освобождение ресурсов - #462

Closed
lemone112 wants to merge 43 commits into
mainfrom
codex/motion-follow-resource-qualified-20261002
Closed

lemone112 wants to merge 43 commits into
mainfrom
codex/motion-follow-resource-qualified-20261002

Conversation

@lemone112

@lemone112 lemone112 commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Пользовательский результат

Интегрирует интерактивный compositor follow, возврат native/live и освобождение MotionValue/подписок из #460 и #461 в один проверяемый пакет. Исходные PR и их refs сохранены: 939e7f4a7ebef2dd494f9dec8690932fecebfd73 и 4341f80c7a20d3802f7528b13519db6e5586a462 входят в историю кандидата.

Draft-кандидат: 78e7ab200f473667d8863ff028c17c2e0d7debbc, tree 41bf2ed317ac4c3f98c08c12ea85f20c651f5238; база сравнения — 957ceaf26501525eff476cdc1d149d81fd5ebcd7. Готовность к merge не заявляется.

Контракт

  • Native, live и follow сохраняют одного владельца исполнения, передачу value/velocity, отмену ровно один раз и защиту от stale callbacks и повторного входа.
  • RESOURCE сохраняет 38 ESM/CJS cells, по 10 000 циклов, live/dropped/deliberate controls, GC rounds, caps и timeout 90 s.
  • Исторические PROFILE budgets остаются обязательным подмножеством; новые optional entries не меняют старые caps.
  • Stock-проверки сохраняются на каждом из 36 000 вызовов. Независимые benchmark cases получают прежний default 5 s каждый; полный workload сохранён.

Доказательство

Локальные независимые ревью исходной композиции, RESOURCE oracle, runtime owner/lifecycle, архитектуры, PROFILE/benchmark guards, browser observation и stock guard дали PASS в своих точных областях. Перенос на финальный commit основан на Git-идентичности неизменённых входов; он не заменяет remote CI.

Actual tarball SHA256: 6e81f47096286fba47feb1d43f4a862bd28078a93f7aa3d4e5e18d8225d6438b. Все 312 dist-файлов финального checkout совпадают с ним. Owner-hook mutant и late extra-native-effect mutant сохраняют предметный RED; stock late mutations проверяют -0, stiffness, own clamp и target.

Архитектура

Отзыв live/input исполнения использует существующую commit-границу владельца. Публичный API, optional entry и приватные hooks сохраняют свои границы; новый scheduler/store не добавлен. Timer reservation/CAS и successor cleanup проверены отдельной семантической осью.

Производительность

Canonical size прошёл для runtime-equivalent source: compositor-stagger — 6600 B gzip при прежнем cap 6600, запас 0 B. Это результат конкретных package/toolchain bytes. Физические performance, mobile и GPU/raster claims не делаются.

Риски и не-цели

Полный локальный unit на точном кандидате: 5127 PASS / 10 FAIL, 347 PASS / 4 FAIL files, skips/todo 0; elapsed 1164.349 s. Stock, PROFILE baseline, benchmark cases и dist freshness проходят.

Открытые отказы: healthy 70.964 s и partial 62.225 s при 30 s, пять зависимых проверок отказов; RESOURCE forced-GC 90.477 s при 90 s; animate-scope-package 5.631 s и reorder-package 5.461 s при 5 s. Предыдущий RESOURCE PASS не отменяет новый RED на тех же package/probe bytes. Причина изменения длительности не установлена; повторов ради GREEN и ослабления лимитов нет.

Документация и выпуск

Действующие API, recipes и CHANGELOG входят в исходную интеграцию. Docs-drift на финальном source проходит. Merge, auto-merge, npm release и deploy не разрешены. Откат подготовки сохраняет исходные #460/#461 и затрагивает только отдельную candidate-ветку/PR.

Гейты

Проверка Результат и область
Static: audit, typecheck, browser/motion-program types, native gate, cycles, error catalog PASS на exact78e; 62.928 s
Native TS7 typecheck PASS на exact78e; 5.717 s
Build, size, package smoke/compat, compiler acceptance PASS по неизменным входам и подтверждённым bytes; не новый запуск на78e
Node consumer floor 22.0.0 / Node24 PASS actual tarball6e81
Finiteness fuzz, docs facts, issue forms, release contract, actionlint PASS по неизменным входам; docs-drift также PASS на78e
Native clock на зарегистрированном Node24.19 PASS API/ABI/refusal controls; physical timing samples 0
Full unit и RESOURCE: локально RED; полный список выше, результат сохранён
Chromium + Firefox PASS 348/348, skipped/flaky 0, workers1/retries0 на4f6bee1; browser/runtime inputs до78e неизменны
WebKit Локально НЕ БЫЛО; обе WebKit части canonical PR CI — PASS
Driver mutation PASS на78e, score83.72 при break80; 301 mutants, 249 killed,3 timeout,37 survivors,12 no coverage
Broad core mutation Локально RED на initial dry run: healthy PROFILE timeout30 s; generated2376 mutants/13 paths, campaign НЕ БЫЛО, score отсутствует. Удалённая кампания 37066397004 — PASS: checkout 78e7ab200f473667d8863ff028c17c2e0d7debbc, score 87.63 ≥ 76, 2376 mutants в 13 файлах: 2065 killed, 17 timeout, 280 survived, 14 no coverage, 0 errors; driver job также SUCCESS
Удалённый CI этого PR 37065440825 — SUCCESS для head78e. PR workflow проверял merge-ref 2cea55a7bf8b487cd6d3dc6b971b89c46cf9c093 с тем же tree 41bf2ed317ac4c3f98c08c12ea85f20c651f5238, что у кандидата. Применимые jobs прошли, profile-baseline штатно SKIPPED. Unit 5137/5137, fuzz 111/111; Chromium, Firefox, обе WebKit части и package/consumer checks — PASS
Substantive CodeRabbit НЕ БЫЛО: draft-skip и зелёный status не являются содержательным ревью; запрос согласуется через общую очередь

Состояние PR CI прочитано 2026-10-02T22:28:14.8923147Z — 2026-10-02T22:28:18.6341905Z. Terminal mutation readback: 2026-10-02T23:06:41.9585225Z — 2026-10-02T23:06:43.1293943Z. Удалённый PASS не отменяет сохранённые локальные RED и не устанавливает причину разницы длительностей.

Raw receipts, immutable diff, package tuple, review anchors и проверка переноса опубликованы в carrier #1301, commit 51ee77224ce09ce90604785077e329eff4132fbb. Carrier зависит от отдельного исправления SQLite test oracle #1299, parent 35f9f3ecaf33a721d7c989501bca3787fa8e3a1b. Его удалённые проверки доступны в CI стека; они не заменяют проверки продукта и содержательное ревью.

Исходный carrier 0fb9a3df6bb19b772e3bdfc3fccbdbac4e80a478 и его локальный hook-результат 170 PASS / 1 FAIL (database locked) сохранены. Архив inputs.tar.gz, MANIFEST.json и REPLAY.md перенесены без изменения; наружная записка и её checksum отражают новую основу стека. Frozen-срез сохраняет локальные RED до последующих удалённых PASS, приведённых выше. Исправление SQLite-теста не входит в этот product PR.

Frozen pre-push body и архив evidence сохранены без изменения. Этот текст отражает последующий readback; готовность к merge, physical performance и GPU/raster accounting не заявляется.

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 commented Oct 2, 2026 •

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@lemone112

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

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

Copy link
Copy Markdown
Contributor Author

Проверка исторического локального RED на точном кандидате 78e7ab200f473667d8863ff028c17c2e0d7debbc:

  • Исходные отказы и неизменность package/probe bytes сохранены в carrier #1301, inputs.tar.gz: evidence/draft-local-full-unit-78e7ab2-receipt.json, evidence/draft-resource-timeout-triage.json, evidence/draft-package-timeout-triage.json. Исходный прогон: Linux, Node 24.21.0, 5127 PASS / 10 FAIL; RESOURCE retention превысил 90 с, PROFILE healthy/partial превысили 30 с, два package-теста превысили 5 с. Первичный источник не доказал причину задержки.
  • Свежий изолированный checkout на Linux ext4: тот же commit, Node 24.14.0, pnpm 11.11.0. Собранный actual tarball SHA-256 6e81f47096286fba47feb1d43f4a862bd28078a93f7aa3d4e5e18d8225d6438b совпал с этим PR.
  • vitest run test/server-profile-contract.test.ts --maxWorkers=1 --retry=0: 204/204 PASS, 23,96 с; healthy 9,219 с, partial 9,215 с.
  • vitest run test/resource-actual-package-retention.test.ts --maxWorkers=1 --retry=0 -t "отдельный forced-GC proof": 1/1 PASS, 3 теста вне фильтра; сама проверка 11,483 с. Действительный установленный пакет сообщил 10 000 циклов на владельца и ноль удержанных ссылок/байтов компонента.
  • vitest run test/animate-scope-package.test.ts test/reorder-package.test.ts --maxWorkers=1 --retry=0: 4/4 PASS, соответствующие проверки примерно по 0,6 с.

Это опровергает детерминированную регрессию от байтов пакета/пробы. Разница между прежней и свежей средой не локализована до одной причины: нагрузка узла во время исходного события не измерена достаточно точно; версии Node и свойства хоста также различаются. Исторический RED остаётся в carrier, лимиты и тесты не менялись. Удалённый CI 37065440825 отдельно прошёл на точном дереве кандидата. Этот комментарий не закрывает физические PROFILE/RESOURCE клетки, обязательное содержательное ревью или запрет merge/release.

Co-authored-by: Claude Code <daniilerosov12@gmail.com>
@lemone112

Copy link
Copy Markdown
Contributor Author

Закрываю как поглощённое предложение после доставки #471 в main: ee78df3fcc3f9ff44c8f3ed717b3ee3767f2f121 (дерево 38dbe02a6a098e28bf6737667238ee319e1f20a5). Независимая проверка сопоставила актуальный head этого PR 96d716c8fca100e48a11f314aedf780ecbec32f9 с доставленными файлами.

  • Все 97 изменённых путей присутствуют; 69 побайтно совпадают. Сохранены compositor/follow, browser recipes, velocity tracker, behaviors, adapters и их исходные unit/package проверки.
  • Изменённые MotionValue и CompositorSpring сохраняют single-owner, stale callback rejection, terminal resource release, listener isolation, clock/pickup и повторный handoff; новый _epoch защищает отдельный live intent и stop/destroy/ABA, а finiteOr сохраняет прежнюю численную fallback-политику.
  • Старый тест возврата native расширен параметризованными retarget/setTarget/snapTo/ABA/stop/destroy/no-op случаями; старые reentrant-start tests сохранены с новыми соседями.
  • Функция writeServerArtifact побайтно перенесена из server-profile-contract.mjs в server-profile-artifact.mjs. Runner, harness file list, import tests и docs указывают нового владельца; CLI сохраняет raw digest и journal validation.
  • Старый existing-38 RESOURCE corpus и каждый его prefix guard сохранены; presence/scope добавлены отдельным корпусом. Новая terminal-tail приёмка не заменяет исторический prefix guard.
  • Browser tests теперь проверяют общий actual tarball через packedJourneyTest; новые receipts связывают archive, manifest и runtime inputs. ESM/CJS, negative controls и старые владельцы не удалены.
  • Оставшиеся docs/catalog/package differences — перевод и объединение описаний, уточнение settled setTarget, build перед package tests, обновления dev dependencies и catalog resolver. Это source disposition, не новый runtime или plan GO.

Это подтверждает перенос исходников и проверок. Нативные измерения, runtime admission и незавершённые узлы r13 сохраняют отдельные условия приёмки. Исходная ветка сохранена.

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